第一次发布海报,我终于有了一个问题,我在这里找不到答案。
我有一个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)
这里的任何帮助都是巨大的。谢谢!
答案 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
不应该是必要的。尽管如此,微软自己仍然一直在自己的示例代码中使用它。第一列适用于DAO
和ADO
.Fields(0)
。