主题:[讨论]救救我吧!vb中的treeview控件循环问题总是解决不了
我的accsee有3张表,一张是学校,里面有5所学校;第二张是年级;第三张是班级;功能就是要使全部学校名称显示出来,然后每所学校每个班级都能显示3个班,问如何解决这一问题,谢了!对了,我把运行效果传上来了!
模块部分
Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As ADODB.connection
Dim rst As ADODB.Recordset
Set mycon = New ADODB.connection
mycon.ConnectionString = connstring
mycon.open
Dim stokens() As String
On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
mycon.Execute sql
Else
Set rst = New ADODB.Recordset
rst.open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
End If
exectuesql_exit:
Set rst = Nothing
Set mycon = Nothing
Exit Function
exectuesql_error:
Resume exectuesql_exit
End Function
窗体通用部分
Public Sub tree()
TreeView1.Nodes.Clear
Dim nodex As Node
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim ban As String
Dim i As Integer
Dim j As Integer
Dim str As String
Dim a As String
a = "学校"
'TreeView1.LineStyle = tvwRootLines
str = "select distinct 学校 from xuexiao order by 学校"
Set mrc = ExecuteSQL(str)
str = "select distinct 年级 from 年级 order by 年级"
Set mrc1 = ExecuteSQL(str)
str = "select distinct 班级 from 班级 order by 班级"
Set mrc2 = ExecuteSQL(str)
mrc.MoveFirst
Set nodex = TreeView1.Nodes.add(, , a, mrc.Fields("学校"), 1, 1)
mrc.MoveNext
ban = mrc1.Fields("年级")
For i = 0 To mrc1.RecordCount - 1
If mrc1.Fields(0) = mrc1.Fields(0) Then
Set nodex = TreeView1.Nodes.add(a, tvwChild, mrc1.Fields(0), mrc1.Fields("年级"), 1, 1)
End If
nodex.Sorted = True
mrc1.MoveNext
Next
For j = 0 To mrc2.RecordCount - 1
If mrc2.Fields(0) = mrc2.Fields(0) Then
Set nodex = TreeView1.Nodes.add(ban, tvwChild, mrc2.Fields(0), mrc2.Fields(0), 1, 1)
End If
mrc2.MoveNext
Next
mrc.close
mrc1.close
mrc2.close
Set mrc = Nothing
Set mrc1 = Nothing
Set mrc2 = Nothing
End Sub
只能通过一级循环,怎么回事?
模块部分
Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As ADODB.connection
Dim rst As ADODB.Recordset
Set mycon = New ADODB.connection
mycon.ConnectionString = connstring
mycon.open
Dim stokens() As String
On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
mycon.Execute sql
Else
Set rst = New ADODB.Recordset
rst.open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
End If
exectuesql_exit:
Set rst = Nothing
Set mycon = Nothing
Exit Function
exectuesql_error:
Resume exectuesql_exit
End Function
窗体通用部分
Public Sub tree()
TreeView1.Nodes.Clear
Dim nodex As Node
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim ban As String
Dim i As Integer
Dim j As Integer
Dim str As String
Dim a As String
a = "学校"
'TreeView1.LineStyle = tvwRootLines
str = "select distinct 学校 from xuexiao order by 学校"
Set mrc = ExecuteSQL(str)
str = "select distinct 年级 from 年级 order by 年级"
Set mrc1 = ExecuteSQL(str)
str = "select distinct 班级 from 班级 order by 班级"
Set mrc2 = ExecuteSQL(str)
mrc.MoveFirst
Set nodex = TreeView1.Nodes.add(, , a, mrc.Fields("学校"), 1, 1)
mrc.MoveNext
ban = mrc1.Fields("年级")
For i = 0 To mrc1.RecordCount - 1
If mrc1.Fields(0) = mrc1.Fields(0) Then
Set nodex = TreeView1.Nodes.add(a, tvwChild, mrc1.Fields(0), mrc1.Fields("年级"), 1, 1)
End If
nodex.Sorted = True
mrc1.MoveNext
Next
For j = 0 To mrc2.RecordCount - 1
If mrc2.Fields(0) = mrc2.Fields(0) Then
Set nodex = TreeView1.Nodes.add(ban, tvwChild, mrc2.Fields(0), mrc2.Fields(0), 1, 1)
End If
mrc2.MoveNext
Next
mrc.close
mrc1.close
mrc2.close
Set mrc = Nothing
Set mrc1 = Nothing
Set mrc2 = Nothing
End Sub
只能通过一级循环,怎么回事?