1

我有一个包含PercentOwnership字段的PropertyOwnership表。请注意,任何财产都可以有多个所有者,因此我们需要每个所有者的所有权百分比。

在向 PropertyOwnership 表中添加记录时,我想插入一个触发器,以确保添加正确的百分比值,即当我们添加属性的所有百分比所有权时,它不应大于 100。

我尝试为插入/更新触发器后创建一个事件驱动的数据宏,如下所示:

宏名称:InvalidOwnership

Parameter 1 name: PropertyNameTemp
Parameter 2 name: PercentOwnershipTemp

SetLocalVar Name: RunningPercent
Expression: 0

lookup each record in PropertyOwnership where PropertyName = PropertyNameTemp
   SetLocalVar Name: RunningPercent
   Expression      : RunningPercent + PercentOwnership

If PercentOwnershipTemp + RunningPercent > 100

RaiseError.

我在 After insert and update 触发器(表事件宏)中使用了上述数据宏,但它似乎不起作用。

请协助 :)

4

1 回答 1

0

使用块中的每个记录而不是查找每个记录,因为它只会操作第一条记录。

当 RunningPercent 大于 100 时,它会引发错误,这可以从Application Log中看到,但是记录将被插入到表中。

<?xml version="1.0" encoding="UTF-8"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
   <DataMacro Name="InvalidOwnership">
      <Parameters>
         <Parameter Name="PropertyNameTemp" />
         <Parameter Name="PercentOwnershipTemp" />
      </Parameters>
      <Statements>
         <Action Name="SetLocalVar">
            <Argument Name="Name">RunningPercent</Argument>
            <Argument Name="Value">0</Argument>
         </Action>
         <ForEachRecord>
            <Data>
               <Reference>PropertyOwnership</Reference>
               <WhereCondition>[PropertyName]=[PropertyNameTemp]</WhereCondition>
            </Data>
            <Statements>
               <Action Name="SetLocalVar">
                  <Argument Name="Name">RunningPercent</Argument>
                  <Argument Name="Value">[RunningPercent]+[PercentOwnership]</Argument>
               </Action>
            </Statements>
         </ForEachRecord>
         <ConditionalBlock>
            <If>
               <Condition>[RunningPercent]&gt;100</Condition>
               <Statements>
                  <Action Name="RaiseError">
                     <Argument Name="Number">1234</Argument>
                     <Argument Name="Description">Invalid OwnerShip</Argument>
                  </Action>
               </Statements>
            </If>
         </ConditionalBlock>
      </Statements>
   </DataMacro>
</DataMacros>

对于每条记录

在此处输入图像描述

于 2019-01-21T12:13:37.943 回答