2017-08-28 58 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]);