gpt4 book ai didi

sql - 如何在 Access 2007 中使用 VBA 保存 SQL COUNT 查询的结果?

转载 作者:行者123 更新时间:2023-12-04 19:06:01 27 4
gpt4 key购买 nike

我正在尝试计算表中满足特定条件的记录数。我更喜欢使用 SQL,而不是 Dcount,因为我想在 SQL 上变得更好。这是我当前的代码如下:

Dim countString As String
Dim count

countString = "SELECT COUNT(*) FROM `Engagement Letters` WHERE 'Client ID' = " & Me.cboSelectClient

count = CurrentDb.OpenRecordset(countString).Fields(0).Value

是的,我知道,我在表和字段名称中使用了空格 - 我会改变它。尽管我认为我仍然可以按原样运行此查询,因此我暂时将其保留原样。

当我运行上述程序时,出现运行时错误 3464 - 条件表达式中的数据类型不匹配。我有以下 dcount 功能工作正常:
count = DCount("[Engagement Letter ID]", "Engagement Letters", "[Client ID] = " & Me.cboSelectClient)

而且下面没有 WHERE 的 COUNT 查询也能正常工作:
"SELECT COUNT(*) FROM `Engagement Letters`"

我对 SQL 的了解很少,对更高级的 VBA 的了解也很少,所以我不确定我哪里出错了。谁能帮我这个?

最佳答案

尝试像这样构建你的字符串。

countString = "SELECT COUNT(*) FROM [Engagement Letters]" & vbCrLf & _
"WHERE [Client ID] = " & Me.cboSelectClient
Debug.Print countString

在对象(表和字段)名称周围使用方括号,其中包括空格或除字母、数字和下划线字符以外的任何字符。

对于表名,您使用了“订婚信函”,反引号似乎与方括号的作用相同。也许它们总是同样有效,但我不确定,因为我只使用括号。括号而不是反引号可能会帮助您避免这个错误......
WHERE 'Client ID' = " & Me.cboSelectClient

...这是要求数据库引擎比较文字字符串, "Client ID" , 到您从 cboSelectClient 中提取的数值 (?) .

我用过 vbCrLf SELECT 的 2 个部分之间语句,因为我发现在检查完整的字符串时很方便(通过 Debug.Print )。

关于sql - 如何在 Access 2007 中使用 VBA 保存 SQL COUNT 查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com