0

我正在使用 MS Access 2007。

我有一个名为[tblDonors]链接到名为[tblReceipts].
我正在尝试设置新的 Boolean(y/n) field 的值[tblDonors].[blInactive]。我想运行一个脚本,它遍历每条记录[tblDonors]并将[blInactive]字段设置为"True"如果最近的收据年份([tblReceipts].[Date])早于年份(now())-2

这是我的查询:

选择 tblDonors.ID, Year([tblReceipts].[Date]) AS [Year], tblDonors.Active
FROM tblDonors
LEFT JOIN tblReceipts ON tblDonors.ID = tblReceipts.ID
WHERE (((Year([tblReceipts].[Date]) )>=Year(Now())-2))
按 Donors.ID 排序;

如果捐赠者在过去两年内捐赠了多次,则此查询会多次显示父记录,这会在报告中创建重复记录。
如何通过此查询的每条记录设置tblDonors.ActiveTRUEusing VBA?以下内容有助于展示我试图完成的工作的要点。

    Function fnActivity()                     'locates active donors

        For each record in recordset          'Go through each record in the query...
            record.[Active].Value = True      '...and flag as active member.
        Next record

    End Function
4

1 回答 1

1

在我看来,您可以通过Yes为每个人设置 [blInactive] 来实现...

UPDATE tblDonors SET blInactive = Yes

...然后像这样更新当前的捐助者:

UPDATE tblDonors SET blInactive = No
WHERE ID IN 
    (
        SELECT ID FROM tblReceipts 
        WHERE Year([tblReceipts].[Date]) >= (Year(Now()) - 2)
    )
于 2013-06-07T19:11:20.073 回答