我有一个 PropertyOwnership 表,其中包含 PercentOwnership 字段。 请注意,任何财产都可以拥有多个所有者,因此我们要求每个所有者拥有百分比。
在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和update触发器(表事件宏)中使用上面的数据宏,但它似乎不起作用。
请协助:)
答案 0 :(得分:0)
使用 For Each Record in 块,而不是 LookUp Each Record ,因为它将仅操作第一条记录。
当RunningPercent大于100时,将引发错误,该错误可以从应用程序日志中看到,但是记录将插入到表中。
<?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]>100</Condition>
<Statements>
<Action Name="RaiseError">
<Argument Name="Number">1234</Argument>
<Argument Name="Description">Invalid OwnerShip</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>