转换为VBA时,SELECT查询不起作用 - 无效的SQL语句

时间:2014-12-11 11:32:30

标签: sql vba ms-access access-vba ms-access-2010

转换为VBA时,我一直在努力学习SQL语句。基本上,我希望在执行之前添加一些东西(这应该不是问题)。但是,当我尝试在更改之前运行它时,VBA不会将其识别为有效的SQL语句。尽管尝试添加/删除括号和任何其他特殊字符,它仍然无法正常工作。请注意,它作为查询运行时效果很好。请参阅以下字符串:

SQLstr = "SELECT SourceData.[Fiscal Year], SourceData.[Fiscal Quarter ID], " _
& "SourceData.[Transaction Date], SourceData.[Sales Order Number], SourceData.[Activated?], " _
& "SourceData.[Product ID], SourceData.[Bookings Quantity], SourceData.[Term Length], " _
& "SourceData.[Estimated Expiring Quarter], SourceData.[End Customer Company Name], " _
& "SourceData.[Sold To Company Name] " _
& "FROM SourceData, finalCust, finalPart " _
& "WHERE (((SourceData.[End Customer Company Name]) Like finalCust.[FinalList]) " _
& "And ((SourceData.[Sold To Company Name]) Like finalPart.[FinalList]))"

代码是'纯'SQL进入VBA,没有任何修改,但我不想误导。

这是一条错误消息:

Run-time error '2342':
A RunSQL action requires an argument consisting of an SQL statement.

我认为这是VBA不可读的SQL语句。

1 个答案:

答案 0 :(得分:1)

该错误消息具有误导性。真正的问题是DoCmd.RunSQL用于“行动”查询:UPDATE; INSERT; DELETE;等

它不接受普通的SELECT查询。例如,这个简单的SELECT查询给了我相同的“一个RunSQL操作需要一个包含来自DoCmd.RunSQL的SQL语句”消息的参数:

Dim SQLstr As String
SQLstr = "SELECT * FROM tblFoo;"
DoCmd.RunSQL SQLstr

但是,DoCmd.RunSQL执行此有效UPDATE语句时没有错误:

SQLstr = "UPDATE tblFoo SET long_text='bar' WHERE id=1;"
DoCmd.RunSQL SQLstr

您需要使用其他方法来使用SELECT查询。方法的选择取决于您要对查询返回的结果执行的操作。