Private Sub Form_Load()
    Dim nodX As Node
    Dim i As Integer
    TreeView1.LineStyle = tvwRootLines  ' Linestyle 1显示+/-号opendb
Dim rs As New ADODB.RecordsetDim sql As String
Dim sqlzu As Stringsql = "select * from cun"
rs.Open sql, Conn, 1, 1
        
While Not rs.EOF
    Set nodX = TreeView1.Nodes.Add(, , "k" & rs.Fields("cbhao"), rs.Fields("cming"))
    Dim rszu As New ADODB.Recordset
    sqlzu = "select * from zu where cbhao like '" & rs.Fields("cbhao") & "'"
    rszu.Open sqlzu, Conn, 1, 1
    
    rs.MoveNext
Wend
End Sub运行后提示"提示对象打开,不允许操作",请高手帮忙看看为什么会这样?

解决方案 »

  1.   

    Dim rszu As New ADODB.Recordset貌似不应在循环体内定义
      

  2.   

    楼上的,这句定义没问题的。问题在这里:rszu.Open sqlzu, Conn, 1, 1
    这条语句在循环体内,rszu就会被open好多次,而这时不允许的。使用完rszu后应该加上rszu.close
    rszu并没有每次都被重新定义。而是指被定义了一次。给分吧。
      

  3.   

    对象不用时记得将其关闭
    SET CN=NOTHING
    SET SRS=NOTHING
      

  4.   

    rszu.Open sqlzu, Conn, 1, 1
    在循环内,打开后关闭就可以了
      

  5.   


    Private Sub Form_Load()
        Dim nodX As Node
        Dim i As Integer
        TreeView1.LineStyle = tvwRootLines  ' Linestyle 1显示+/-号opendb
    Dim rs As New ADODB.RecordsetDim sql As String
    Dim sqlzu As Stringsql = "select * from cun"
    rs.Open sql, Conn, 1, 1
         Dim rszu As New ADODB.Recordset      
    While Not rs.EOF
        Set nodX = TreeView1.Nodes.Add(, , "k" & rs.Fields("cbhao"), rs.Fields("cming"))
     
        sqlzu = "select * from zu where cbhao like '" & rs.Fields("cbhao") & "'"
        rszu.Open sqlzu, Conn, 1, 1
        
        rs.MoveNext
    Wend
    End Sub运行后提示"提示对象打开,不允许操作",请高手帮忙看看为什么会这样?