使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?

Posted

技术标签:

【中文标题】使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?【英文标题】:Using Access VBA, how to count number of output records in a select query and store the count as a VBA variable? 【发布时间】:2017-03-19 07:01:53 【问题描述】:

我正在使用 Access 2013,特别是由于老板的指示,我无法使用 VBA 代码编辑器来最小化保存的查询和表 - 而且我无权修改表结构。

我有两个表:InvoiceDetails 和 AllItems,由 ItemID 连接。

INVOICEDETAILS     ALLITEMS
¯¯¯¯¯¯¯¯¯¯¯¯¯¯     ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ItemID←-----------→ItemID
InvoiceNumber      Invoiced (Yes/No)

有时可以单独记入 InvoiceDetails 中的 Item,在这种情况下,将取消选中 AllItems 中对应的 Invoiced。我正在尝试比较

TotalItemCount = 给定InvoiceNumber“1”的Items 的数量

InvoicedItemCount = Items 的数量与给定的 InvoiceNumber “1”仍然是 Invoiced

对于第一个数字,我有

TotalItemCount = DCount("ItemID", "InvoiceDetails", "InvoiceNumber = 1")

对于第二个数字,我有一个 SELECT 查询,它提供了 SQL 中的计数,但我不知道如何将其转换为 VBA 变量 InvoicedItemCount

SELECT Count(InvoiceDetails.ItemID) 
FROM InvoiceDetails INNER JOIN AllItems 
     ON InvoiceDetails.LoadID = AllItems.LoadID 
WHERE InvoicedDetails.InvoiceNumber = 1 AND AllItems.Invoiced = True);

我知道DoCmd.RunSQL,但 AFAIK 只是运行查询并且没有提供可输出的整数以存储为 VBA 变量。有没有办法只在 VBA 中做到这一点?

【问题讨论】:

我认为这是重复的:***.com/q/23992226/42346 谢谢伯尼!那里的解决方案对我有用。 干杯,伙计!祝您编码愉快。 【参考方案1】:

我从 this question 获得了解决方案,我是由 Bernie 指导的。

假设 SQL 查询返回一条记录,只有一个字段,我们想要那个单一的值:

Dim rst As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT x FROM y WHERE z=z;"
Set rst = CurrentDb.OpenRecordset(strSQL)

VariableName = rst.Fields(0)

rst.Close
Set rst = Nothing

【讨论】:

以上是关于使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?的主要内容,如果未能解决你的问题,请参考以下文章

当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询

如何访问 Access 中的选定行?

如何在 VBA 代码中的 ms-access 中执行查询?

如何创建将传递查询导出为 XML 文件的 VBA 函数(用于 Access 2010)?

如何使用 MySQl 的 ODBC 连接器在 MS Access 中的 VBA 中执行和查询?

access2013 VBA中怎样运行sql语句