1
這對於vba編程來說有點新鮮。我已經寫了這段代碼,現在變得很慢。我剛剛從後端表移到了SQL表。我正在使用的查詢使用NOT IN。我曾在某些地方看過使用NOT EXISTS可能會加快速度。這是我的代碼。我需要NOT EXISTS將它轉換,但我不確定如何:將查詢從NOT IN更改爲NOT EXISTS
SELECT BatchID
FROM TblBatchInfo
WHERE (IsNull([RSOutDateTime])=False)
AND (IsNull([HBDropDateTime])=False)
AND (Format([BatchDateTime],"Short Date")=Format(Now(),"Short Date"))
AND (IsNull(PSPassedOut=True) OR (PSPassedOut=""))
AND LEN(LabelID)=9
AND [Area] <> 5
AND [Area] <> 6
AND [Area] <> 7
AND (BatchID Not In (SELECT [BatchID]
FROM [TblBatchInfo]
WHERE (IsNull([RSOutDateTime]) = True)
AND LEN(LabelID)=9
AND [Area] <> 5
AND [Area] <> 6
AND [Area] <> 7
AND (Format([BatchDateTime], "Short Date") = Format(Now(), "Short Date"))))
GROUP BY BatchID
ORDER BY BatchID;
NOT IN子查詢的WHERE子句中的所有內容也都在主WHERE子句中,除了IsNull(RSOutDateTime)的反轉。除非在此表中重複批次ID,否則不應有重疊。我可能會假設錯誤,但是在主SELECT語句中沒有DISTINCT,這讓我懷疑你不會期待同一個ID一遍又一遍。 –
要重新表述我認爲@SteveBarron的說法:只需添加'RSOutDateTime不爲空'的條件並擺脫整個子查詢。 – shawnt00
所以這個查詢被用來創建一個隊列。它將取出所有批次並查看條件是否滿足,並將batchID發佈到列表框以顯示batchID已準備就緒。因此,BatchID每天在整個表中重複多次,每天一次。 – OldSchoolGG