xiaors.Open sql, cn, adOpenKeyset, adLockBatchOptimistic '出错语句cn没有打开!

解决方案 »

  1.   

    加上一句话就行了('在重新打开以前,先关闭RECORDSET)    sql = "select *  from da "
        dars.Open sql, cn, adOpenKeyset, adLockBatchOptimisticDo While Not dars.EOF
    Set nodX = TreeView1.Nodes.Add(, , Trim(dars(1)), Trim(dars(1)), 2, 1)
    sql = "select *  from xiao where 大类序号=" & CInt(dars(0))
    xiaors.Open sql, cn, adOpenKeyset, adLockBatchOptimistic '出错语句
    Do While Not xiaors.EOF
    Set nodX = TreeView1.Nodes.Add(Trim(dars(1)), tvwChild, Trim(xiaors(2)), Trim(xiaors(2)), 2, 1)
    xiaors.MoveNext
    Loop
    '在重新打开以前,先关闭RECORDSET
    xiaors.closedars.MoveNext
    Loop
      

  2.   

    我怎么没看到他的Do While呢:(
      

  3.   

    还是用这种方法来关闭RecordSet吧,否则,如果RecordSet已经是关闭的,仍会报错“对象关闭时不允许操作”if xiaors.state=adstateopen then xiaors.close这样就安全多了
      

  4.   

    另外,在对RecordSet进行遍历操作时,最好不要用While Not RecordSet.Eof,因为这样的话,程序每次都会检查是否已是记录最后。如果用下法,执行速度至少可以提高40%.For I=0 to RecordSet.RecordCount-1
        ……
        ……
        RecordSet.MoveNext
    Next I