我正在使用MS Access
下面的SQL更新了父tblContact记录中的CurrNumTees字段,其中包含具有结束日期的tblTorTee记录的数量(这不是我的目标,但我将其作为起点。
UPDATE tblContact
INNER JOIN tblTorTee ON tblContact.ContactId = tblTorTee.TorId
SET tblContact!CurNumTees = DCount("[tblTorTee.EndDate]",
"tbltortee","Torid = " & [ContactId]);
我需要使用tblTorTee中没有EndDate的记录数更新CurrNumTees字段,换句话说,该字段为空。我尝试在各种组合和位置使用WHERE和HAVING和IS NULL,但没有成功。你能指点我正确的方向吗?
答案 0 :(得分:1)
MS Access COUNT函数不计算空值,因此我认为您必须分两个阶段执行此操作。
首先创建一个这样的查询:
SELECT TorId, IIF(ISNULL(EndDate),1,0) AS isN
FROM tblTorTee
WHERE EndDate IS NULL;
并将其保存为QryEndDateNull
现在您可以像这样运行更新查询:
UPDATE tblContact
SET tblContact.CurNumTees = DSUM("IsN","QryEndDateNull","TorId = " & [ContactID]);
答案 1 :(得分:1)
保存计算数据(数据依赖于其他数据)通常是一种糟糕的设计,尤其是聚合数据。应该只在需要时计算。
您是否在DCount()中尝试了IS NULL标准?
UPDATE tblContact Set CurNumTees = DCount("*", "tblTorTee", "EndDate Is Null AND TorId = " & [ContactId]);