treeview控件之我用

这是我常用的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 With strSQL = " 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.Index strSQL = " 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 Loop Exit Sub Data_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 If End 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
   
   
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值