MS-ACCESS - 在插入之前/之后插入/更新触发器需要
Posted
技术标签:
【中文标题】MS-ACCESS - 在插入之前/之后插入/更新触发器需要【英文标题】:MS-ACCESS - Before insert/after insert/update trigger required 【发布时间】:2018-06-04 02:47:38 【问题描述】:我有一个 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 and update 触发器(表事件宏)中使用了上述数据宏,但它似乎不起作用。
请帮忙:)
【问题讨论】:
使用正确版本的 ms-access 更新您的标签。并正确描述“它似乎不起作用” 【参考方案1】:使用 For Each Record in 块而不是 LookUp Each Record,因为它只会操作第一条记录。
当 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]>100</Condition>
<Statements>
<Action Name="RaiseError">
<Argument Name="Number">1234</Argument>
<Argument Name="Description">Invalid OwnerShip</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
对于
中的每条记录【讨论】:
以上是关于MS-ACCESS - 在插入之前/之后插入/更新触发器需要的主要内容,如果未能解决你的问题,请参考以下文章