VBA 在 Microsoft Access 2013 中标记复选框,如果以链接形式输入数据
VBA in Microsoft Access 2013 mark checkbox if data is entered in linked form
我在 Access 2013 中创建了一个数据库来跟踪拍卖的捐赠和征集。我的潜在客户设置在一个 table/form 中,其中有一个可用的列来说明他们今年是否参与。
物品寄出后,我会在链接的 "Donations" 表格中记录该物品,该表格会调用其捐赠者。
是否可以在捐赠表格中输入捐赠后自动选中“前景”表格中的参与复选框?
我觉得我可以想象一个稍微简单的 JS 片段可以解决这个问题,但我对 Access 的了解还不足以完成该程序中的任务。
VBA 可能存在更优雅的解决方案,但我将向您展示一种使用宏的方法:
首先在您的 table 中创建一个跟踪捐助者的 "Named Macro",我们将其称为 UpdateParticipation。然后为宏创建两个参数 - 第一个是 prmAction,它将确定您是从捐赠中插入还是删除了一个项目 table。第二个参数是 prmDonorID,它将标识 table 中要更新状态的记录。
如果添加捐赠,指定的宏将选中参与框,如果删除捐赠,则取消选中参与框。宏将如下所示:
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 中并且 insert/delete 一条记录时,您想要触发指定的宏。
所以在 DonationsTable 中创建一个插入后事件,如下所示:
RunDataMacro
Macro Name DonorsTable.UpdateParticipation
Parameters
prmAction = "Inserted"
prmDonorID = [DonationsTable].[DonorID]
删除记录时有点棘手 - 如果您要删除捐赠者的第二次捐赠,他们仍在参与,因此您不想取消选中 DonorsTable 中的框。因此,创建一个如下所示的删除后事件:
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 从一个更改为另一个。
我在 Access 2013 中创建了一个数据库来跟踪拍卖的捐赠和征集。我的潜在客户设置在一个 table/form 中,其中有一个可用的列来说明他们今年是否参与。
物品寄出后,我会在链接的 "Donations" 表格中记录该物品,该表格会调用其捐赠者。
是否可以在捐赠表格中输入捐赠后自动选中“前景”表格中的参与复选框?
我觉得我可以想象一个稍微简单的 JS 片段可以解决这个问题,但我对 Access 的了解还不足以完成该程序中的任务。
VBA 可能存在更优雅的解决方案,但我将向您展示一种使用宏的方法:
首先在您的 table 中创建一个跟踪捐助者的 "Named Macro",我们将其称为 UpdateParticipation。然后为宏创建两个参数 - 第一个是 prmAction,它将确定您是从捐赠中插入还是删除了一个项目 table。第二个参数是 prmDonorID,它将标识 table 中要更新状态的记录。
如果添加捐赠,指定的宏将选中参与框,如果删除捐赠,则取消选中参与框。宏将如下所示:
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 中并且 insert/delete 一条记录时,您想要触发指定的宏。
所以在 DonationsTable 中创建一个插入后事件,如下所示:
RunDataMacro
Macro Name DonorsTable.UpdateParticipation
Parameters
prmAction = "Inserted"
prmDonorID = [DonationsTable].[DonorID]
删除记录时有点棘手 - 如果您要删除捐赠者的第二次捐赠,他们仍在参与,因此您不想取消选中 DonorsTable 中的框。因此,创建一个如下所示的删除后事件:
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 从一个更改为另一个。