读书人

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

发布时间: 2012-03-18 13:55:38 作者: rapoo

为何数据库无法打开
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 ")此项是否有效呢?

读书人网 >VB

热点推荐