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

Sql 使用Access VBA,如何计算select查询中的输出记录数并将其存储为VBA变量?,sql,vba,ms-access,Sql,Vba,Ms Access,我使用的是Access 2013,尤其是由于老板的指示,我无法使用VBA代码编辑器来最小化保存的查询和表,而且我也无法修改表结构 我有两个表:InvoiceDetails和AllItems,由ItemID连接 INVOICEDETAILS ALLITEMS ¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ItemID←-----------→ItemID InvoiceNumber Invoiced (Yes/No) 有时发票明细中的项目可以单独记入

我使用的是Access 2013,尤其是由于老板的指示,我无法使用VBA代码编辑器来最小化保存的查询和表,而且我也无法修改表结构

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

INVOICEDETAILS     ALLITEMS
¯¯¯¯¯¯¯¯¯¯¯¯¯¯     ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ItemID←-----------→ItemID
InvoiceNumber      Invoiced (Yes/No)
有时发票明细中的
项目
可以单独记入贷方,在这种情况下,所有项目中相应的
发票
将被取消选中。我想比较一下

  • TotalItemCount=具有给定发票编号的
    项目数
    “1”

  • InvoicedItemCount=具有给定的
    发票编号
    “1”且仍
    已开具发票的
    项目的数量
对于第一个数字,我有

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
,但它只是运行查询,没有给出一个可输出的整数来存储为VBA变量。有没有一种方法可以单独在VBA中实现这一点?

我从中获得了解决方案,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

我想这是一个复制品:谢谢你,伯尼!那里的解决方案对我有效。干杯,伙计!很高兴见到你。