vba 将记录集存储为整型变量

vba store recordset as integer variable

第一次发帖,终于有个问题在这里找不到答案了

我有一个 MS Access 查询 returns 1 个结果(这是一个数字),我想将其存储为整数变量 (x),以便稍后可以将其用于循环。问题是因为我将它用作记录集并且变量是整数,所以我收到 "Type Mismatch" 错误。

现在我只是将结果存储到一个单元格并将变量设置为等于该单元格:

Ws.Range("A1") = Db.OpenRecordset("SELECT COUNT(Asset_Name) FROM Assets WHERE Active = True").GetRows(1)

x = Ws.Range("A1")

Ws.Range("A1").Delete

然后我只有一个循环运行 x 次:

For i = 0 To x

基本上,我只想拥有一些如下所示的代码:

x = Db.OpenRecordset("SELECT COUNT(Asset_Name) FROM Assets WHERE Active = True").GetRows(1)

这里的任何帮助都是巨大的。谢谢!

以下应该会给您正确的结果:

Dim x As Integer
Dim db As DAO.Recordset

db.MoveFirst
If IsNumeric(db.OpenRecordset("SELECT COUNT(Asset_Name) FROM Assets WHERE Active = True").Fields(0).Value) Then
    x = CInt(db.OpenRecordset("SELECT COUNT(Asset_Name) FROM Assets WHERE Active = True").Fields(0).Value)
Else
    MsgBox "The query did not return a number." & Chr(10) & "Aborting..."
End If

请注意,您在 post 上使用 DAO 而不是 ADO 作为原始标签。不过,它们的行为非常相似,并且游标通常位于第一行(返回数据时)。所以,MoveFirst 应该不是必需的。尽管如此,微软自己一直在自己的示例代码中使用它。第一列如果 DAOADO 相似 .Fields(0).