首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为何数据库无法打开,该怎么处理

2012-03-18 
为何数据库无法打开PrivateSublisttree()用于显示treeview的数据TreeView1.Nodes.ClearDimnodXAsNodeDimiA

为何数据库无法打开
Private   Sub   listtree()       '用于显示treeview的数据
        TreeView1.Nodes.Clear
        Dim   nodX   As   Node
        Dim   i   As   Integer
        TreeView1.LineStyle   =   tvwRootLines     '   Linestyle   1显示+/-号


opendb
Dim   rsel   As   New   ADODB.Recordset
Dim   sqlel   As   String
Dim   sqlsl   As   String
Dim   sqlsil   As   String

sqlel   =   "select   *   from   elei   where   ylbhao   like   '11 ' "
rsel.Open   sqlel,   Conn,   1,   1
           
While   Not   rsel.EOF
        Set   nodX   =   TreeView1.Nodes.Add(,   ,   "k "   &   rsel.Fields( "elbhao "),   rsel.Fields( "mchen "))
        Dim   rssl   As   New   ADODB.Recordset
        sqlsl   =   "select   *   from   slei   where   elbhao   like   ' "   &   rsel.Fields( "elbhao ")   &   " ' "
        rssl.Open   sqlsl,   Conn,   1,   1
       
        While   Not   rssl.EOF
                Set   nodX   =   TreeView1.Nodes.Add( "k "   &   rsel.Fields( "elbhao "),   tvwChild,   "k "   &   rssl.Fields( "slbhao "),   rssl.Fields( "mchen "))
               
               
               
                Dim   rssil   As   New   ADODB.Recordset
                sqlsil   =   "select   *   from   silei   where   slbhao   like   ' "   &   rssl.Fields( "slbhao ")   &   " ' "
                rssil.Open   sqlsil,   Conn,   1,   1     '此处提示:实时错误 '-2147217887(80040e21) ':

'                 While   Not   rssil.EOF
'                 Set   nodX   =   TreeView1.Nodes.Add( "k "   &   rssil.Fields( "slbhao "),   tvwChild,   "k "   &   rssil.Fields( "silbhao "),   rssil.Fields( "mchen "))
'                 rssil.MoveNext
'                 Wend
               
               
               
               
                rssl.MoveNext
        Wend
        rssl.Close
        rsel.MoveNext


Wend
End   Sub

[解决办法]
至少在do while ....中间用Dim rssil As New ADODB.Recordset是不对的。
[解决办法]
同楼上意见

你可以把树一层层加,没必要把rs去嵌套
[解决办法]
用递归调用来实现吧
[解决办法]
Private Sub listtree() '用于显示treeview的数据
TreeView1.Nodes.Clear
Dim nodX As Node
Dim i As Integer
TreeView1.LineStyle = tvwRootLines ' Linestyle 1显示+/-号


opendb
Dim rsel As New ADODB.Recordset
Dim sqlel As String
Dim sqlsl As String
Dim sqlsil As String

Dim rssl As ADODB.Recordset '修改了这里
Dim rssil As ADODB.Recordset '修改了这里

sqlel = "select * from elei where ylbhao like '11 ' "
rsel.Open sqlel, Conn, 1, 1

While Not rsel.EOF
Set nodX = TreeView1.Nodes.Add(, , "k " & rsel.Fields( "elbhao "), rsel.Fields( "mchen "))

set rssl=new adodb.recordset '修改了这里

sqlsl = "select * from slei where elbhao like ' " & rsel.Fields( "elbhao ") & " ' "
rssl.Open sqlsl, Conn, 1, 1

While Not rssl.EOF
Set nodX = TreeView1.Nodes.Add( "k " & rsel.Fields( "elbhao "), tvwChild, "k " & rssl.Fields( "slbhao "), rssl.Fields( "mchen "))

set rssil=new adodb.recordset '修改了这里


sqlsil = "select * from silei where slbhao like ' " & rssl.Fields( "slbhao ") & " ' "
rssil.Open sqlsil, Conn, 1, 1 '此处提示:实时错误 '-2147217887(80040e21) ':

' While Not rssil.EOF
' Set nodX = TreeView1.Nodes.Add( "k " & rssil.Fields( "slbhao "), tvwChild, "k " & rssil.Fields( "silbhao "), rssil.Fields( "mchen "))
' rssil.MoveNext
' Wend

rssil.close '修改了这里
set rssil=nothing '修改了这里


rssl.MoveNext
Wend
rssl.Close

set rssl=nothing '修改了这里

rsel.MoveNext
Wend

rsel.close '修改了这里
set rsel=nothing '修改了这里

End Sub

[解决办法]
sqlsil = "select * from silei where slbhao like ' " & rssl.Fields( "slbhao ") & " ' "
rssil.Open sqlsil, Conn, 1, 1 '此处提示:实时错误 '-2147217887(80040e21) ':

rssl.Fields( "slbhao ")此项是否有效呢?

热点排行