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



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

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

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

有时,发票详细信息中的Item可以单独记入贷方,在这种情况下,将取消选中"所有项目"中的相应Invoiced。我正在尝试比较

  • 总项目计数 = 给定InvoiceNumber"1"的Items

  • 发票项目计数 = 具有给定InvoiceNumber"1"但仍InvoicedItems

对于第一个数字,我有

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 中执行此操作?

我从这个问题中得到了解决方案,伯尼指导了我。

假设 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

最新更新