如何在Access 2007中使用VBA保存SQL计数查询的结果? [英] How do I save the result of an SQL COUNT query with VBA in Access 2007?

查看:20
本文介绍了如何在Access 2007中使用VBA保存SQL计数查询的结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试计算表中满足特定条件的记录的数量。我更喜欢使用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的计数查询:

"SELECT COUNT(*) FROM `Engagement Letters`"

我对SQL的了解非常少,对更高级的VBA的了解也非常少,所以我不确定我错在哪里。有人能帮我这个忙吗?

推荐答案

尝试这样构建字符串。

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

使用方括号将对象(表和字段)名称括起来,这些名称包括空格或字母、数字和下划线字符以外的任何字符。

对于表名,您使用了`Engagement Letters`,反号的作用似乎与方括号相同。也许它们总是工作得一样好,但我不确定,因为我只使用括号。而括号而不是反号可能会帮助您避免这个错误...

WHERE 'Client ID' = " & Me.cboSelectClient

.这是要求数据库引擎将文字字符串"Client ID"与数值(?)进行比较。您已从cboSelectClient退出。

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

这篇关于如何在Access 2007中使用VBA保存SQL计数查询的结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆