根据Maximum Child record字段值设置父记录字段值

时间:2013-06-07 18:31:49

标签: dataset ms-access-2007 access-vba setvalue

我正在使用MS Access 2007.

我有一个名为[tblDonors]的表,链接到名为[tblReceipts]的表中的子记录 我试图设置一个新的布尔(y / n)字段[tblDonors].[blInactive]的值。我想运行一个脚本,该脚本遍历[tblDonors]中的每条记录,如果最近收到的年份([blInactive])超过年份,则将"True"字段设置为[tblReceipts].[Date]now())-2

这是我的疑问:

SELECT tblDonors.ID,Year([tblReceipts]。[Date])AS [Year],tblDonors.Active
FROM FROM tblDonors
LEFT JOIN tblReceipts ON tblDonors.ID = tblReceipts.ID
WHERE(((年([tblReceipts]。[Date]))> = Year(Now()) - 2))
由Donors.ID订购;

如果捐赠者在过去两年内捐赠了多次,此查询会多次显示父记录,这会在报告中创建重复记录。
如何使用tblDonors.Active查看此查询的每条记录以将TRUE设置为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

1 个答案:

答案 0 :(得分:1)

在我看来,你可以通过为所有人设置[blInactive]到Yes来实现这一目标......

UPDATE tblDonors SET blInactive = Yes

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

UPDATE tblDonors SET blInactive = No
WHERE ID IN 
    (
        SELECT ID FROM tblReceipts 
        WHERE Year([tblReceipts].[Date]) >= (Year(Now()) - 2)
    )