2017-08-10 112 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