【问题标题】:MySQL query not working on AccessMySQL 查询在 Access 上不起作用
【发布时间】:2015-07-01 23:58:53
【问题描述】:

我有以下 MySQL 查询:

INSERT INTO parts 
(part_id, source, user, decision, reason, date_messaged, date_suppress_message) 
VALUES ('IRUDHE3456','Escalation','john','fail','advertising','2015-07-01',NULL);

它通过 MySQL Workbench 完美地插入行。如果我尝试在 Access 中通过 VBA 运行此查询,则没有任何反应,我根本没有收到任何错误消息,什么也没有。并且该行没有被插入。 VBA 如下所示:

DoCmd.RunSQL the_query_above

对我做错了什么有任何想法吗?在这种情况下,语法如何变化?

这是一个通过 ODBC 链接的表,以防万一,还是问题与 Access 本身更相关?

【问题讨论】:

  • date_messaged 字段的数据类型是 Date/Time 还是 text 根据 Access?
  • 它是 MySQL 工作台中的 DATE 字段,Access 表示日期/时间

标签: mysql ms-access vba


【解决方案1】:

找出您的INSERT 失败且没有错误消息的原因。

使用CurrentDb.Execute 及其dbFailOnError 选项执行它。该组合将提醒您注意密钥违规错误,否则可能会导致静默失败。

还要确保SetWarnings 没有关闭。关闭时,Access 会禁止显示信息。确保您能看到所有可能有助于您进行故障排除的信息。

'DoCmd.RunSQL the_query_above
DoCmd.SetWarnings True
CurrentDb.Execute the_query_above, dbFailOnError

我还建议您修改INSERT 声明。将[user] 括在方括号中,因为它是reserved word。由于 date_messaged 是日期/时间数据类型,请使用 # 字符而不是 ' 引号将您希望插入的值括起来。

INSERT INTO parts 
(part_id, source, [user], decision, reason, date_messaged, date_suppress_message) 
VALUES ('IRUDHE3456','Escalation','john','fail','advertising',#2015-07-01#,NULL);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2012-04-08
    • 2018-10-20
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多