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

时间:2016-06-22 18:28:15

标签: excel vba excel-vba dao

第一次发布海报,我终于有了一个问题,我在这里找不到答案。

我有一个MS Access查询返回1个结果(这是一个数字),我想将其存储为整数变量(x),以便稍后我可以将它用于循环。问题是因为我将它用作记录集而变量是一个整数,我收到“类型不匹配”错误。

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

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)

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

1 个答案:

答案 0 :(得分: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

请注意,您使用DAO而不是ADO作为指示帖子上的原始代码。尽管如此,它们的行为都非常相似,并且光标通常位于第一行(返回数据时)。因此,MoveFirst不应该是必要的。尽管如此,微软自己仍然一直在自己的示例代码中使用它。第一列适用于DAOADO .Fields(0)