使用 Access 2007 查询向导创建 SQL,仍然无法在 VBA 中运行

Posted

技术标签:

【中文标题】使用 Access 2007 查询向导创建 SQL,仍然无法在 VBA 中运行【英文标题】:Used Access 2007 query wizard to create SQL, still will not run in VBA 【发布时间】:2014-07-10 20:35:04 【问题描述】:

我正在尝试在 access 2007 中编写 VBA,它通过一个表并使用适当的测试代码获取所有记录,并将它们添加到专门用于该测试代码的表中。第一个 sql 字符串应该通过特定于代码的表来查找输入的最新日期。第二个 sql 字符串应该找到在该日期的最晚时间输入的那个。第三个应该采用该日期和时间并从通用表中获取自上次更新以来输入的该测试代码的所有记录,并将它们移动到特定于代码的表中。

我实际上是使用查询向导生成前两个 sql 语句,但我一直收到错误:

RunSQL 操作需要一个由 SQL 语句组成的参数。

复制粘贴 SQL 语句后,我唯一更改的是添加了正确的引号之类的东西,所以我不确定为什么它不起作用。这也意味着我无法检查后面的代码,因为我无法通过第一部分。

我的问题是,如果我从向导中复制并粘贴它,怎么会出错?以下是我的代码部分。我正在使用消息框来阅读并检查 SQL 语句是否有问题。

dateSQL = "SELECT Max(tbl505.TESTDATE) AS MaxDATE " & _
    "FROM tbl505 " & _
    "HAVING (([tbl505].[Plant]='Freeport'));"

MsgBox (dateSQL)
DoCmd.RunSQL dateSQL

timeSQL = "SELECT Max(tbl505.TESTTIME) AS MaxTIME " & _
    "FROM tbl505 " & _
    "HAVING (([tbl505].[Plant]='Freeport')) AND (([tbl505].[TESTDATE]= #" & MaxDATE & "#;"

MsgBox (timeSQL)
DoCmd.RunSQL timeSQL


 strSQL = "INSERT INTO tbl505 (ORDERNO,CODE,BATCHNO,TESTNO,TESTDATE,PRODDATE,TESTTIME) " & _
    "SELECT ORDERNO,CODE,BATCHNO,TESTNO,TESTDATE,PRODDATE,TESTTIME " & _
    "FROM DSResultFRP " & _
    "WHERE DSResultFRP.[TESTDATE] >= #" & MaxDATE & "# AND DSResultFRP.[TESTDATE] > #" & MaxTIME & "# AND DSResultFRP.[TESTCODE] = '505'"

DoCmd.RunSQL strSQL

【问题讨论】:

您最好使用 CurrentDb.Execute 或更好的是 CurrentDb 的实例并添加 dbFailOnError。使用即时窗口 (ctrl+g) 和 debug.print 查看您的 SQL。前两个查询有什么意义,您似乎没有对它们做任何事情? 我正在尝试使用前两个来设置我在第三个中使用的最大日期和最大时间变量来对记录进行排序。可能有更好的方法来做到这一点,但我对使用 SQL 还是很陌生。 【参考方案1】:

DoCmd.RunSQL 仅适用于操作类型的查询(INSERT、UPDATE、DELETE)。在您将它用于前两个查询的上下文中,该命令没有意义。如果您想使用这些查询中返回的值,请查看 DAO/ADO 记录集解决方案或 DMax 函数解决方案。

【讨论】:

谢谢,DMax 函数是一种更简单的方法来做我想做的事情,我能够替换前两个 SQL 语句。有了这些,代码就可以完美运行了。 @user3827021:很酷,很高兴这对你有用。如果您有时间,请将解决方案帖子标记为答案,这样如果将来有人有同样的问题,他们就会知道什么是可行的解决方案。保重。

以上是关于使用 Access 2007 查询向导创建 SQL,仍然无法在 VBA 中运行的主要内容,如果未能解决你的问题,请参考以下文章

Access(查询的使用)和CorelDRAW(绘制图形)课程总结

SQL Server 2012 使用 OPENROWSET 查询 Access 2007 数据错误

如何在 MS Access 2007 中获取 sql 查询

在 MS Access 2007 中对 ODBC 表导入 sql 查询

MS Access 2007 SQL 查询出现问题

尝试连接到 SQL 表时,MS Access 2007 中的查询错误