【问题标题】:DoCmd.RunSQL on update query - first run 0 update , updating only second runDoCmd.RunSQL 更新查询 - 第一次运行 0 更新,仅更新第二次运行
【发布时间】:2017-10-05 05:30:23
【问题描述】:

我确实在 Access VBA 中运行了相当复杂的代码。它将 Excel 或其他查询中的数据提取到 Access 前端数据库中的表中。然后我想运行DoCmd.RunSQL,它会根据这个临时数据更新后端数据库,但是这行代码的行为很奇怪。

  1. 当我运行代码时,它会更新 0 条记录。
  2. 如果我将debug.print 代码放入即时窗口并从那里运行,它会按预期更新记录。
  3. 当我将 SQL 字符串放入 Access 查询生成器时,它会再次更新记录。
  4. 如果我使用SetWarnings = True,并且它显示我将要更新0 条记录的警告,我按否,VBA 将在DoCmd.RunSQL 上抛出错误。我再次按Run,在同一行,现在它想按预期更新所有记录
  5. 我尝试在代码中运行两次查询。在这两个测试中,这似乎是一个解决方案,但现在它再次更新了 0 条记录。

我尝试使用运行设定时间的循环(类似于 Excel 的 Application.wait),怀疑表中的临时数据可能必须刷新数据库才能看到它,或者其他什么。

谁知道问题出在哪里?我必须以某种方式刷新表格吗?提前谢谢你。

UPDATE (SELECT [AUC],[Comment] FROM [AuC] IN 'C:\Users\test.accdb') AS Q1, [tempComments] 
SET [Q1].[Comment] = [tempComments].[Comment] 
WHERE [Q1].[AUC] = [tempComments].[AUC]

【问题讨论】:

  • 尝试将表从该外部源链接到本地​​数据库。然后运行UPDATE 查询。

标签: sql vba ms-access


【解决方案1】:

这应该可以工作

With Access.DoCmd
    .RunSQL "[AuC] IN 'C:\Users\test.accdb' SET [AuC].[Comment] = [tempComments].[Comment] WHERE [AuC].[AUC] = [tempComments].[AUC]"
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-04-10
    • 2021-10-22
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多