【问题标题】:Run Query Against ODBC Connected Table VBA对 ODBC 连接表 VBA 运行查询
【发布时间】:2010-10-15 17:01:04
【问题描述】:

我有一个表(读数)已经通过 ODBC 在 Access 中连接,当我单击它时会很快打开。

但是,当我尝试在 VBA 中运行它时,它会锁定并且从不显示任何内容:

Dim strSql As String
strSql = "SELECT readings.ids " & _
         "INTO ids_temp " & _
         "FROM readings " & _
         "WHERE readings.ids > 1234;"  //This is id in middle of list
DoCmd.SetWarnings False
DoCmd.RunSQL strSql
DoCmd.SetWarnings True

由于某种原因,这会使整个系统崩溃。有什么想法吗?

【问题讨论】:

  • 从查询窗口中查询是否正常运行?
  • 好吧,这是我的错误。数据库没有像我想象的那样排序,所以我实际上提取了大约 600 万条记录。谢谢雷穆

标签: sql ms-access vba odbc


【解决方案1】:

让我说 DoCmd.RunSQL 永远不可取,尤其是在 SetWarnings 关闭的情况下,因为您不知道结果是否符合您的预期。你已经告诉 VBA 不要报告错误,所以你永远不知道是否所有的记录都被插入了。

用我的 SQLRun() 函数替换 DoCmd.RunSQL 非常容易,这里发布:

How can I get a value from the update query prompt in Access VBA?

【讨论】:

    【解决方案2】:

    不使用 DoCmd,t 通常由您现有的连接处理以创建一个 Command 对象,该对象接受 SQL 语句以与 Command.Execute 方法一起使用。

    阅读 DoCmd 的文档,它似乎主要用于从 Access UI 菜单执行宏。

    【讨论】:

      【解决方案3】:

      您的数据库在本地是否有 ids_temp 表?如果 ids_temp 表是链接表,它将删除该表,因为选择到 CREATES NEW TABLE。如果要添加到表中,请尝试 INSERT INTO 命令。您可以在插入数据之前清理表。

      【讨论】:

        【解决方案4】:

        所以错误实际上是我的错,我使用的 id 导致查询返回大约 600 万个结果。但是,这种方法实际上效果很好,我只是创建表格并将不同表格上的列表框链接到表格,然后我只显示表格。我在两者之间做了一些关闭和更新,但总的来说它似乎运作良好。感谢您的帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-20
          • 2013-06-17
          • 1970-01-01
          • 2018-09-23
          • 1970-01-01
          相关资源
          最近更新 更多