我试图在查询后计算记录集中的元素数。我这样做
Function Test() As Variant
Dim rst As DAO.Recordset
rst = CurrentDb.OpenRecordset("SELECT salary_total FROM CompSal")
rst.MoveLast
rst.MoveFirst
Test = rst.RecordCount
End Function
我收到了这个编译错误:
无效使用财产
如何使这项工作?
答案 0 :(得分:3)
rst
被声明为Recordset对象。任何对象在使用之前都需要设置。与变量不同,它们无法分配,需要进行设置。如果可能,请尝试清理对象。所以试试,
Function Test() As Variant
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT salary_total FROM CompSal")
rst.MoveLast
rst.MoveFirst
Test = rst.RecordCount
Set rst = Nothing
End Function
但是,您也可以简单地使用DCount
,它完全相同。
Test = DCount("*", "CompSal")
这比创建一个对象容易得多,在Recordset中移动,所有这些都是为了得到一个数。
答案 1 :(得分:2)
除了一个小错误之外,您的代码没问题,您忘了将Set
放在rst =
代码前面:
...
Set rst = CurrentDb.OpenRecordset("SELECT salary_total FROM CompSal")
...
之后它应该像魅力一样