我在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
由于某些原因,这会导致整个系统崩溃。有什么想法吗?
答案 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?