VBA - 编译错误:属性的使用无效

时间:2015-06-04 09:18:11

标签: vba ms-access

我试图在查询后计算记录集中的元素数。我这样做

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

我收到了这个编译错误:

  

无效使用财产

如何使这项工作?

2 个答案:

答案 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")
...

之后它应该像魅力一样