我在Access 2013中创建了一个数据库,用于跟踪拍卖的捐赠和招揽。我的前景设置在一个表格/表格中,并附有一个可用栏目,以记录他们是否参加了今年。
一旦项目被发送,我将该项目记录在链接的"捐赠"形式呼唤其捐赠者。
在捐款表单中输入捐款后,有没有办法自动检查前景表格中的参与复选框?
我觉得我可以想象一个可以解决这个问题的一些简单的JS,但是不能很好地了解Access以完成该程序中的任务。
答案 0 :(得分:0)
VBA可能存在一个更优雅的解决方案,但我将向您展示一种使用宏的方法:
首先创建一个"命名宏"在你的桌子中跟踪捐助者,我们称之为UpdateParticipation。然后为宏创建两个参数 - 第一个是prmAction,它将确定您是否从捐赠表中插入或删除了一个项目。第二个参数是prmDonorID,它将识别表中哪个记录更新状态。
如果添加了捐款,指定的宏将检查参与框,如果捐赠被删除,则取消选中参与框。宏将如下所示:
If [prmAction]="Inserted" Then
Look Up A Record In DonorsTable
Where Condition = [DonorsTable].[ID]=[prmDonorID]
Alias
EditRecord
Alias
SetField
Name DonorsTable.Participated
Value = True
End EditRecord
Else If [prmAction]="Deleted" Then
Look Up A Record In DonorsTable
Where Condition = [DonorsTable].[ID]=[prmDonorID]
Alias
EditRecord
Alias
SetField
Name DonorsTable.Participated
Value = False
End EditRecord
End If
现在,无论您何时进入DonationsTable并插入/删除记录,都需要触发命名宏。
所以在DonationsTable中创建一个看起来像这样的After Insert事件:
RunDataMacro
Macro Name DonorsTable.UpdateParticipation
Parameters
prmAction = "Inserted"
prmDonorID = [DonationsTable].[DonorID]
当您删除记录时,它有点棘手 - 如果您要删除捐赠者的第二次捐赠,他们仍然参与,因此您不想取消选中DonorsTable中的方框。因此,创建一个如下所示的After Delete事件:
Look Up A Record In SELECT DonationsTable.DonorID FROM DonationsTable;
Where Condition = [DonorID]=[Old].[DonorID]
Alias
StopMacro
RunDataMacro
Macro Name DonorsTable.UpdateParticipation
Parameters
prmAction = "Deleted"
prmDonorID = [DonationsTable].[DonorID]
如果您插入或删除捐款,那将为您提供保障。如果编辑DonationsTable中的现有记录,则会要创建类似的设置,其中DonorID从一个更改为另一个。