我做的是一个题库管理例子.表DuoXuan,字段:Zhang_id、Jie_id
在“添加模块”里面添加以下代码:
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 Function connstring() As String
connstring = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "\数据库名字;"
在Form_Load添加:
Private Sub Form_Load()
TreeView1.Nodes.Clear
Dim nodex As Node
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim str As String
Dim a As String
a = "章"
Set nodex = TreeView2.Nodes.Add(, , "r", "船舶管理题库")
nodex.Expanded = True
str = "select distinct Zhang_id from DuoXuan order by Zhang_id"
Set mrc = ExecuteSQL(str)
str = "select distinct Zhang_id,Jie_id from DuoXuan order by Zhang_id,Jie_id"
Set mrc1 = ExecuteSQL(str)
mrc.MoveFirst
Do Until mrc.EOF
mrc1.MoveFirst
Set nodex = TreeView2.Nodes.Add(, , a, "第" & mrc.Fields(0) & "章")
Do While Not mrc1.EOF
If mrc1.Fields(0) = mrc.Fields(0) Then
Set nodex = TreeView2.Nodes.Add(a, tvwChild, , "第" & mrc1.Fields(1) & "节")
End If
mrc1.MoveNext
Loop
a = a & "1"
mrc.MoveNext
Loop
mrc1.close
mrc.close
Set mrc = Nothing
Set mrc1 = Nothing
End Function
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 Function connstring() As String
connstring = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "\数据库名字;"
在Form_Load添加:
Private Sub Form_Load()
TreeView1.Nodes.Clear
Dim nodex As Node
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim str As String
Dim a As String
a = "章"
Set nodex = TreeView2.Nodes.Add(, , "r", "船舶管理题库")
nodex.Expanded = True
str = "select distinct Zhang_id from DuoXuan order by Zhang_id"
Set mrc = ExecuteSQL(str)
str = "select distinct Zhang_id,Jie_id from DuoXuan order by Zhang_id,Jie_id"
Set mrc1 = ExecuteSQL(str)
mrc.MoveFirst
Do Until mrc.EOF
mrc1.MoveFirst
Set nodex = TreeView2.Nodes.Add(, , a, "第" & mrc.Fields(0) & "章")
Do While Not mrc1.EOF
If mrc1.Fields(0) = mrc.Fields(0) Then
Set nodex = TreeView2.Nodes.Add(a, tvwChild, , "第" & mrc1.Fields(1) & "节")
End If
mrc1.MoveNext
Loop
a = a & "1"
mrc.MoveNext
Loop
mrc1.close
mrc.close
Set mrc = Nothing
Set mrc1 = Nothing
End Function
End Sub
参数说明: a: 参照物,在谁的基础上建节点,a就是谁的key值,如果是跟节点,可省略.
b: 参照物和本身的关系,如果是父子关系,值为tvwchile,如果是兄弟关系,值为tvwnext
key: 关键字,唯一的.
text: 节点上显示的文字
image: 节点前的小图标,需要配合图标控件用,可省略
//得到属性: node.key node.text 等等..
//例子,假设控件名为tv1:
dim myNod as node
set myNod=tv1.nodes.add(,tvwchild,"china","中国")
set myNod=tv1.nodes.add("china",tvwchild,"hb","河北")
set myNod=tv1.nodes.add("china",tvwchild,"sx","山西")
set myNod=tv1.nodes.add("hb",tvwchild,"1","石家庄")
set myNod=tv1.nodes.add("sx",tvwchild,"2","太原")
Totel = Data1.Recordset.RecordCount
Data1.Caption = Totel
ProgressBar1.Max = Totel
Do While Data1.Recordset.EOF = False
For i = 0 To 4
Str(i) = Data1.Recordset.Fields(i).Value
Next
Max = Max + 1
ProgressBar1.Value = Max
Set mNode = TreeView1.Nodes.Add("Root", tvwChild, "Str" & CStr(Id), Str(0))
Set mNode = TreeView1.Nodes.Add("Str" & CStr(Id), tvwChild, "Str" & CStr(Id + 1), Str(1))
Set mNode = TreeView1.Nodes.Add("Str" & CStr(Id), tvwChild, "Str" & CStr(Id + 2), Str(2))
Set mNode = TreeView1.Nodes.Add("Str" & CStr(Id), tvwChild, "Str" & CStr(Id + 3), Str(3))
Data1.Recordset.MoveNext
Id = Id + 4
Loop
Set mNode = Nothing