如何获取excel vba recorderdeset中的记录数

时间:2016-12-07 20:38:04

标签: sql excel vba recordset

我想在excel中使用vba获取记录集中的记录总数,我在代码下面使用但它没有运行。也许帮助我!

 Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" &   Application.ActiveWorkbook.Path & "\infodb.mdb"
    cn.Open strConnection

strSql = "SELECt * FROM tbl_hoze"
        Set rs = cn.Execute(strSql)
            rs.MoveLast
            MsgBox rs.RecordCount

2 个答案:

答案 0 :(得分:0)

假设您的SQL语句已成功执行并且您获得了记录集,我将获取数组中的行并使用该数组执行我想要的任何操作。 RecordCount函数有时会失败,这经常发生在我身上。

此外,在您想要打印记录数之前,我不知道您为什么使用rs.MoveLast。删除它或将其移动到msgbox行之后,看看会发生什么。简而言之,你会这样做:

=DCount("*", "qry_members")

答案 1 :(得分:0)

每当我使用SQL Server数据库(而不是使用Access)时,我都会遇到这个问题。所以我已经设计出了这个能够为你提供SQL Server Recordset行数的快速函数。

Private Function GetSQLRecordCount(rs As Recordset) As Integer

    Dim retVal As Integer: retVal = 0
    On Error GoTo NOROWSRETURNED
        Dim counterArray() As Variant: counterArray = rs.GetRows()
        retVal = UBound(counterArray, 2) - LBound(counterArray, 2) + 1
    On Error GoTo 0

    GetSQLRecordCount = retVal

    Exit Function
NOROWSRETURNED:
    retVal = 0
    GetSQLRecordCount = retVal

End Function

我最近经常使用它,而且它非常稳固。