2017-08-10 83 views
0

我總是得到運行時錯誤3075:日期'#10.08.2017 15:27:16'中的Syntaxerror。我的代碼如下所示:運行時錯誤3075 VBA訪問格式日期錯誤

Dim ActID As Integer 
ActID = Me!Of_ID 

DoCmd.RunSQL "UPDATE BD_Offer SET BD_Offer.Of_Timestamp = #" & Format(Now, "DD.MM.YYYY HH:NN:SS") & "# WHERE BD_Offer.Of_ID = '" & ActID & "';" 

當我改變#」 &格式& 「#引號「」 &格式&「」

DoCmd.RunSQL "UPDATE BD_Offer SET BD_Offer.Of_Timestamp = '" & Format(Now, "DD.MM.YYYY HH:NN:SS") & "' WHERE BD_Offer.Of_ID = '" & ActID & "';" 

然後我得到的運行時錯誤3464:數據衝突。

Of_Timestamp具有Datetyp和Of_ID自動填充整數作爲主鍵。

感謝答覆

盧卡

+0

[閱讀材料](http://allenbrowne.com/ser-36.html)正確使用Access中的日期。 –

回答

2

使用有效的格式:

BD_Offer.Of_Timestamp = #" & Format(Now, "yyyy\/mm\/dd hh\:nn\:ss") & "# 

當Of_ID是一個自動編號,你還必須提供一個數字參數:

"UPDATE BD_Offer SET BD_Offer.Of_Timestamp = #" & Format(Now, "yyyy\/mm\/dd hh\:nn\:ss") & "# WHERE BD_Offer.Of_ID = " & ActID & ";" 

但是,您可能會簡單地接受y與:

"UPDATE BD_Offer SET BD_Offer.Of_Timestamp = Now() WHERE BD_Offer.Of_ID = " & ActID & ";" 
+0

爲什麼所有的\字符? – Brad

+0

@Brad:這是因爲此處的斜槓和冒號不是文字,而只是本地化日期和時間分隔符的佔位符。因此,這些可以變成除Access SQL所接受的內容以外的其他內容。反斜槓轉義字符;從而在任何環境中強制格式化字符串中的斜槓或冒號。 – Gustav

+0

有趣。所以這個相同的字符串可能導致'2017-08-10 11:53.59'在另一個系統上我的輸出'2017/08/10 11:53:59'? – Brad