【问题标题】:Runtime Error 3075 VBA Access Format Date Error运行时错误 3075 VBA 访问格式日期错误
【发布时间】:2017-08-10 13:49:20
【问题描述】:

我总是收到运行时错误 3075:日期“#10.08.2017 15:27:16”中的语法错误。我的代码如下所示:

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 & "';"

当我将 #" & Format & "# 引号更改为 '" & Format & "'

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 自动填充整数作为主键。

感谢回复

卢卡

【问题讨论】:

标签: date ms-access vba runtime-error


【解决方案1】:

使用有效的格式:

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 & ";"

但是,您可能会轻松逃脱:

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

【讨论】:

  • 为什么都是 \ 字符??
  • @Brad:那是因为这里的斜杠和冒号不是文字,而只是本地化日期和时间分隔符的占位符。因此,这些结果可能不是 Access SQL 所接受的。反斜杠转义一个字符;因此在任何环境中强制格式化字符串中的斜杠或冒号。
  • 有趣。所以这个相同的字符串可能会在另一个系统上导致2017-08-10 11:53.59,而在我的系统上它输出2017/08/10 11:53:59
  • @Brad:是的。日期字符串会被接受,但确实 dot 和 _space_(!) 作为本地化分隔符会导致问题。
  • @Gustav 感谢您的回复,但是当我像您写的那样做时,我得到了运行时错误 3464:数据冲突。我真的很困惑,因为我所做的一切都不起作用。
猜你喜欢
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多