我遇到如下问题:
Dim rst As New adodb.Recordset
Set rst = ReadTQStyle()   'ReadTQStyle函数返回类型为recordset
Debug.Print rst.RecordCount   '报错:对象关闭时,操作不允许

解决方案 »

  1.   

    Public Function ReadTQStyle() As Object
        Dim strSql As String
        strSql = "SELECT * FROM YourTable WHERE con..."
        
        On Error Resume Next
            rs.Open strSql, cn, 1, 3
        If Err.Number <> 0 Then
            'MsgBox "应用程序出错,错误提示:" & Err.Description
            Exit Function
        End If
        
        Set ReadTQStyle= rs.Clone
        rs.Close
    End Function
      

  2.   

    Public Function ReadTQStyle() As Object
        Dim strSql As String
        strSql = "SELECT * FROM YourTable WHERE con..."
        
        On Error Resume Next
            rs.Open strSql, cn, 1, 3
        If Err.Number <> 0 Then
            'MsgBox "应用程序出错,错误提示:" & Err.Description
            Exit Function
        End If
        
        Set ReadTQStyle= rs.Clone
        rs.Close
    End Function
      

  3.   

    应该是你的函数返回Recordset失败了.或返回的Recordset未打开.
      

  4.   

    连接对象connection的execute方法的返回值是recordset
      

  5.   

    建议用函数参数传递Recordset对象Public Function ReadTQStyle(objRs as adodb.recordset) As boolean
        Dim strSql As String
        strSql = "SELECT * FROM YourTable WHERE con..."
        
        On Error Resume Next
            objRs.Open strSql, cn, 1, 3
        If Err.Number <> 0 Then
            ReadTQStyle=false
        else
            ReadTQStyle=true
        End If 
    End Function
      

  6.   

    我建义你用F8进行调试一下,看问题出在哪里
    还有一种可能就是你的记录集打开方试如果不是1,1那rst.RecordCount  这个属性就会是-1
      

  7.   

    把ReadTQStyle()的代码贴出来看看,应该是那里面有问题
      

  8.   

    ReadTQStyle()
    函数F8单步调没问题
      

  9.   

    为什么不把函数直接写成Public Function ReadTQStyle() As Adodb.RecordSet
    返回值也不用写rs.clone,直接Set ReadTQStyle=rs就可以了。
      

  10.   

    你应该贴ReadTQStyle函数的代码出来大家才能帮你分析.