2017-08-28 90 views
3

我使用的MS Access使用标准在更新查询涉及连接

的SQL下面更新CurrNumTees领域与具有结束日期tblTorTee记录数家长tblContact记录(这是不最终的效果,我瞄准了,但我将它作为一个起点。

UPDATE tblContact 
    INNER JOIN tblTorTee ON tblContact.ContactId = tblTorTee.TorId 
SET tblContact!CurNumTees = DCount("[tblTorTee.EndDate]", 
    "tbltortee","Torid = " & [ContactId]); 

我需要更新的tblTorTee记录数CurrNumTees场没有一个结束日期,换句话说,那场是空白的。我试过使用WHERE和HAVING,并且在各种组合和位置都是NULL,但是没有成功。你能帮我指点一下吗?正确的方向?

回答

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

节能计算的数据(相关数据在其他数据上)通常是一个糟糕的设计,尤其是聚合数据。应该在需要时进行计算。

您是否尝试过DCount()中的IS NULL条件?

UPDATE tblContact Set CurNumTees = DCount("*", "tblTorTee", "EndDate Is Null AND TorId = " & [ContactId]);