我有一个表格,其中包含人们之间通过公共相对ID进行的一对多关系,例如,用于将家庭分组到地址。
相对表非常简单:
REL_PK autonumber, primary key
REL_ID number - non-unique, matching numbers mean related
PERSON_ID - ID of a record on the person table
每个关系至少需要两行才能完成;我想设置一个After Delete Table宏,如果删除倒数第二个记录,它将删除具有给定相对ID的最后一个剩余记录。
换句话说:“从REL表中删除一行后,如果只有一条记录与给定的REL_ID保持一致,则也将其删除。”
我可以将VBA放在按钮代码中,只需在此表上运行一个删除查询,查找单行并删除它们,但我认为设置触发器会更好,因为我可能会在其他地方操作这些记录。将来忘记运行清理查询。
我已经检查过,似乎无法从表宏中触发更新查询。
答案 0 :(得分:1)
以下After Delete
数据宏似乎对我有用:
如果您愿意,您可以将以下XML粘贴( Ctrl + V )到数据宏窗口,以节省一些点击和输入...
<?xml version="1.0" encoding="utf-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
<DataMacro Event="AfterDelete">
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">RemainingCount</Argument>
<Argument Name="Value">DCount("*","Relative","REL_ID=" & [Old].[REL_ID])</Argument>
</Action>
<ConditionalBlock>
<If>
<Condition>[RemainingCount]=2</Condition>
<Statements>
<LookUpRecord>
<Data Alias="DeleteMe">
<Reference>Relative</Reference>
<WhereCondition>[REL_ID]=[Old].[REL_ID] And [REL_PK]<>[Old].[REL_PK]</WhereCondition>
</Data>
<Statements>
<Action Name="DeleteRecord">
<Argument Name="Alias">DeleteMe</Argument>
</Action>
</Statements>
</LookUpRecord>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>