我正在使用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
答案 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)
)