2
我一直在尋找天的解決方案,但在任何地方都找不到任何東西。我有Excel與Access數據庫交互。以下查詢在Access中可用:使用DateDiff()轉換訪問查詢從VBA運行
SELECT DISTINCT A.Timestamp, A.Identifier, A.Remarks, A.ActiveIndicator,
A.S4PDate, B.Timestamp, B.Identifier, B.Remarks, B.ActiveIndicator, B.S4PDate
FROM AAEPData AS A INNER JOIN AAEPData AS B ON A.Identifier = B.Identifier
WHERE (((A.Timestamp = '20131028' AND B.Timestamp = '20131014'))
AND ((datediff('d', A.S4PDate, B.S4PDate)) <> 0))
ORDER BY A.Identifier;
問題是如何將其轉換爲「VBA-SQL」。它應該看起來像這樣,但是我對於它的那部分有點麻煩。如何正確切換時間間隔?這裏是我的VBA代碼:
sql = "SELECT DISTINCT A.Identifier, A.Remarks, A.ActiveIndicator, A.S4PDate,"
sql = sql & " B.Identifier, B.Remarks, B.ActiveIndicator, B.S4PDate "
sql = sql & "FROM AAEPData AS A "
sql = sql & "INNER JOIN AAEPData AS B ON ((A.Identifier = B.Identifier))"
sql = sql & "WHERE (((A.Timestamp = '20131028' AND B.Timestamp = '20131014')) "
sql = sql & "AND (Datediff('d', A.S4PDate, B.S4PDate) <> 0))) "
sql = sql & "ORDER BY B.Identifier ASC;"
當我這樣做它不會返回值,但也不會給出錯誤。我確定確實有我正在查詢的日期值S4PDate的變化。有任何想法嗎?非常感謝您的幫助。謝謝。 SQL變量是完全性右後
單引號計爲VBA中的評論指標。將它們改爲雙引號(DateDiff(「d」,...),並讓我們知道發生了什麼。 –
@ craig.white - 更改這些引號將肯定會導致錯誤 - 它會將字符串放在一行中,沒有語法支持。 – Smandoli