treeview控件之我用

来源:互联网 发布:如何评价王思聪 知乎 编辑:程序博客网 时间:2024/04/28 17:41

这是我常用的treeview控件代码

说明:
1、treeview控件名称:tvwDB_ALar
2、表BasicName存放“报警类别”,三级分类(如:户内-气表-泄漏)
3、BasicName.code6为第一类,BasicName.code4为第二类,code1,code2就是明细编号和名称。(若继续分类,在循环里再加)
4、build0、build1、build2为关联ImageList的图标名称
5、Set Data_ALar = SQLFind(strSQL, ConData)是建立ADODB.Recordset的自定义类

VB code
Private Data_ALar As ADODB.Recordset
Private Data_ALar2 As ADODB.Recordset
Private Data_ALar3 As ADODB.Recordset
Private Data_ALarEd As ADODB.Recordset
Private Data_ALarSS As ADODB.Recordset
Private intINDexA, intINDexB As Integer
Private Data_ALarNo As String
Private Sub tvwInti()On Error GoTo Data_Err With tvwDB_ALar .Nodes.Clear .Sorted = True Set mNode = .Nodes.Add() .LabelEdit = False End With With mNode ' Add first node. .Text = "报警类别" .Tag = "分类" .Image = "build1" .Expanded = True End WithstrSQL = "select DISTINCT code6 from BasicName where typeflag='报警' order by code6" 'and doflag='1' Set Data_ALar = SQLFind(strSQL, ConData) Data_ALar.MoveFirst '一类(户内、户外、公建单位) Do While Not Data_ALar.EOF Set mNode = tvwDB_ALar.Nodes.Add(1, tvwChild, Data_ALar.Fields(0) & "", CStr(Data_ALar.Fields(0)), "build1") intINDexA = mNode.IndexstrSQL = "select DISTINCT code4 from BasicName where typeflag='报警' and code6='" & Trim(Data_ALar.Fields(0)) & "' order by code4" Set Data_ALar2 = SQLFind(strSQL, ConData) Data_ALar2.MoveFirst '二类(气表、管道) Do While Not Data_ALar2.EOF Set mNode = tvwDB_ALar.Nodes.Add(intINDexA, tvwChild, "HW." & Data_ALar2.Fields(0), Data_ALar2.Fields(0) & "", "build0") intINDexB = mNode.Index mNode.Tag = Data_ALar2.Fields(0)strSQL = "select code1,code2 from BasicName where typeflag='报警' and code6='" & Trim(Data_ALar.Fields(0)) & "' and code4='" & _ Trim(Data_ALar2.Fields(0)) & "' order by code1" ' and doflag='1' Set Data_ALar3 = SQLFind(strSQL, ConData) Data_ALar3.MoveFirst '三类(明细:泄漏、损坏) Do While Not Data_ALar3.EOF Set mNode = tvwDB_ALar.Nodes.Add(intINDexB, tvwChild, "HeW." & Data_ALar3.Fields(0), Data_ALar3.Fields(1) & "", "build2") Data_ALar3.MoveNext Loop Data_ALar2.MoveNext Loop Data_ALar.MoveNext LoopExit SubData_Err: If Err.Number = 3021 Or Err.Number = 13 Or Err.Number = 340 Then Resume Next Else MsgBox "出错代码:" & Format(Err.Number) & Chr(13) & "提示:" & Err.Description, vbSystemModal + vbCritical, Me.Caption End IfEnd Sub
Public Function SQLFind(strSQL, conDB) As ADODB.Recordset
On Error GoTo Data_Err
Dim RS_tt As ADODB.Recordset
Set RS_tt = New ADODB.Recordset
RS_tt.Open strSQL, conDB, adOpenKeyset, adLockOptimistic, adCmdText
Set SQLFind = RS_tt
Set RS_tt = Nothing
Exit Function
Data_Err:
If Err.Number = 3021 Or Err.Number = 13 Then
Resume Next
Else
'MsgBox "出错代码:" & Format(Err.Number) & Chr(13) & "提示:" & Err.Description
End If
End Function
原创粉丝点击