针对ODBC连接表VBA运行查询

时间:2009-03-26 13:34:48

标签: sql ms-access access-vba odbc

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

但是,当我尝试在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

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

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

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

  

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

相关问题