如果以链接形式输入数据,则Microsoft Access 2013中的VBA标记复选框

时间:2015-03-25 00:02:31

标签: access-vba ms-access-2013

我在Access 2013中创建了一个数据库,用于跟踪拍卖的捐赠和招揽。我的前景设置在一个表格/表格中,并附有一个可用栏目,以记录他们是否参加了今年。

一旦项目被发送,我将该项目记录在链接的"捐赠"形式呼唤其捐赠者。

在捐款表单中输入捐款后,有没有办法自动检查前景表格中的参与复选框?

我觉得我可以想象一个可以解决这个问题的一些简单的JS,但是不能很好地了解Access以完成该程序中的任务。

1 个答案:

答案 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从一个更改为另一个。