【发布时间】:2016-02-18 06:16:37
【问题描述】:
在多年的 Web 开发中 PHP 和 SQL 语句非常简单,我最近需要使用 MS Access 和 VBA 完成的这项任务绝对让我知道它使 SQL 语句变得多么复杂。请注意,我没有关于 VBA 的先验知识,所以它可能非常简单,我不只是得到它,但我想做的只是
"SELECT type FROM tblMatter WHERE id='$id'"
当我戴上我的 PHP 帽子时,我想好吧,我们将有一行数据,这将是一个数组,我想要一个对象从该数组中取出。很简单。
然而,VBA 使 $#!t 变得复杂。到目前为止,我的代码看起来像这样
Dim matterSQL As String
Dim matterRS As Recordset
matterSQL = "SELECT type FROM tblMatter WHERE id'" & id & "'"
Set matterRS = CurrentDb.OpenRecordset(matterSQL)
MsgBox matterRS![type]
CurrentDb 在代码中更早地定义以打开与数据库的连接,错误出现在包含 OpenRecordset 的行上,错误为:标准表达式中的数据类型不匹配 .
正如我所说,我是 VBA 的新手,所以我不知道我在做什么,而且互联网上的所有文档都没有帮助。但我想做的只是从表中获取一条数据。
提前致谢!
编辑:我需要在此基础上使用另一个查询来获取上一个查询中的信息来运行。同样的考验:
Dim costSQL As String
Dim costRS as Recordset
costSQL = "SELECT email FROM tblScaleOfDisb WHERE category=" & category
Set costRS = CurrentDb.OpenRecordset(costSQL)
MsgBox costRS![email]
这一次我在包含OpenRecordset 的行上遇到错误:参数太少。预计 1。
我不明白,因为代码实际上与问题的前半部分相同。我做错了什么?
【问题讨论】:
-
where id ='"&id&"'"?也尝试使用参数化查询 -
id的数据类型是什么?
-
How to debug dynamic SQL in VBA -- 另外:字符串、数字和日期在 SQL 中需要不同的格式。但这对于 Access VBA/SQL 来说并没有什么特别的。