2014-12-04 64 views
0

我想從另一個使用sql通過vba進行訪問時將記錄插入到另一個表中。一切正常,但我想要一個包含日期的字段大於用戶輸入的年份的第一個字段。當我將該命令添加到我的聲明中時,沒有插入任何記錄,我很確定這是因爲我沒有比較正確的日期。我比較新的SQL,所以在這個問題上的任何幫助,以及如何解決它將不勝感激!我發佈了下面的聲明。在sql插入語句中比較日期

verifHPMS = "INSERT INTO HPMSVerified([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION],[HPMS EXPORTED],[HPMS EXPORT DATE],[APPROVED DATE]) " & _ 
      "SELECT DD.[CLIENT ID],DD.[CLIENT NAME],DD.[MARKET SEGMENT],DD.[FORMULARY ID],DD.[FORMULARY NAME],DD.[FORMULARY VERSION],DD.[HPMS EXPORTED],DD.[HPMS EXPORT DATE],DD.[APPROVED DATE] " & _ 
      "FROM " & tableName & " as DD " & _ 
      "Where DD.[HPMS EXPORTED] IN (""Yes"") " & _ 
      "AND DD.[HPMS EXPORT DATE] >= [APPROVED DATE] " & _ 
      "AND DD.[CLIENT ID] NOT IN(SELECT Exclusions.[Client ID] FROM Exclusions)" & _ 
      "AND DD.[APPROVED DATE]>01/01/" & year 
+0

帶日期值的字段是否也是日期類型?否則它應該工作 – 2014-12-04 21:19:24

+0

是的,他們是類型的日期/時間。 – William 2014-12-04 21:21:23

回答

1

嘗試用這種替代最後一行:

"AND YEAR(DD.[APPROVED DATE]) >= " & year & " AND MONTH(DD.[APPROVED DATE]) > 1 AND DAY(DD.[APPROVED DATE]) > 1" 

這家個別日期的每個部分進行比較,以避免與日期文字和您的字符串插值的手動方法的問題。

0

替換爲最後一行:

"AND DD.[APPROVED DATE] > #01/01/" & year & "#"

注意,VBA和 「噴氣機」 SQL總是使用#M /日期文字d/Y#格式,無論區域設置。