2010/05/01

access2010 データマクロで累計 見直し -BeforeInsert-

少し手直しをして。

挿入先テーブルの全レコードをID降順で選択しているが、レコードの参照(LookUpRecord)で複数レコードが対象となるがカレントレコードは先頭なのでMax(ID)言い換えると、挿入時点で最新レコードを参照できる。
クエリ:SELECT * FROM t3 WHERE ID=(SELECT Max([ID]) FROM t3);を参照がいいんじゃないかと。


















<?xml version="1.0" encoding="utf-8"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
  <DataMacro Event="BeforeChange">
    <Statements>
      <ConditionalBlock>
        <If>
          <Condition>[IsInsert]</Condition>
          <Statements>
            <LookUpRecord>
              <Data Alias="t3_0">
                <Query>
                  <References>
                    <Reference Source="t3" />
                  </References>
                  <Results>
                    <Property Source="t3" Name="f_sum" />
                  </Results>
                  <Ordering>
                    <Order Direction="Descending" Source="t3" Name="ID" />
                  </Ordering>
                </Query>
              </Data>
              <Statements>
                <Action Name="SetField">
                  <Argument Name="Field">t3.f_sum</Argument>
                  <Argument Name="Value">[t3_0].[f_sum]+[t3].[f_num]</Argument>
                </Action>
              </Statements>
            </LookUpRecord>
          </Statements>
        </If>
      </ConditionalBlock>
    </Statements>
  </DataMacro>
</DataMacros>

0 件のコメント: