【发布时间】:2021-12-20 05:10:40
【问题描述】:
简而言之:
我在开发数据库方面做得很好,但我确实需要从 VBA 运行 SELECT 查询,因为我最终需要使用命名其中一个表的变量来运行它。
这是我的代码:
SqlStr = "SELECT tblFall2021.fldUserID, tblFall2021.fldDate, tblFall2021.fldTime, tblFall2021.fldUserName, " & _
" tblVolunteers.ID, tblVolunteers.fldPhone, tblVolunteers.fldEmail, tblVolunteers.[fldChurch/Parish], " & _
" tblVolunteers.fldGroup, tblVolunteers.[fldCouncil/Court] " & _
" FROM tblFall2021 INNER JOIN tblVolunteers ON tblFall2021.[fldUserID] = tblVolunteers.[ID] " & _
" WHERE (((tblFall2021.fldDate)='9/22/2021'));"
' MsgBox SqlStr
DoCmd.RunSQL SqlStr
按原样运行会得到运行时错误“2342”: RunSQL 操作需要一个由 SQL 语句组成的参数。
我尝试在前端和后端将 " 加倍,但 VBA 根本不喜欢这样;我认为它全部变成红色,因为它是一个坏字符串。
所以我将“”增加了三倍并运行它并得到:
运行时错误“3129”:无效的 SQL 语句;预期“删除”, 'INSERT'、'PROCEDURE'、'SELECT' 或 'UPDATE'。
上面显示的字符串的形成与 Microsoft 的示例完全匹配。但是在我寻求帮助的任何地方都告诉我 DoCmd.RunSQL 只会运行操作查询,而不是选择查询,尽管 Microsoft 另有说明:
一个字符串表达式,它是操作查询的有效 SQL 语句 或数据定义查询。它使用 INSERT INTO、DELETE、 选择...进入、更新、创建表、更改表、删除表、创建 INDEX 或 DROP INDEX 语句。如果需要,请包含 IN 子句 访问另一个数据库。
https://docs.microsoft.com/en-us/office/vba/api/access.docmd.runsql
我之前在这个网站上被告知 DoCmd.RunSQL 仅用于 SELECT 查询,不会执行操作查询。
(我也尝试在前后使用 Chr(34) 代替额外的引号,这也会产生运行时错误“3129”。)
上面的字符串有问题吗?我直接从有效查询的 SQL 视图中复制了它,并将其格式化以符合 Microsoft 的建议。
所以我完全没有想法。
提前致谢。
【问题讨论】:
-
我之前在这个网站上被告知 DoCmd.RunSQL 仅用于 SELECT 查询,不会执行操作查询。 - 如果您再次发现,请离开评论中的链接,以便我们修复它。这是相反的方式。谢谢。