下面是一个递归调用的例子,应该可以满足你的要求吧
Public Sub GetCompanyTree(objCompany As Object, objImg As Object, Optional intHighCompanyID As Integer = -1)
'变量定义
Dim adors As New ADODB.Recordset
Dim strTemp As String
'错误处理
On Error GoTo Err_MSg
'程序处理
'处理1.1:判断intHighCompanyID(上级单位ID号)的数值,如果为-1则调用一级单位,否则按传值调用
If intHighCompanyID = -1 Then
'处理1.1.1:清空公司树
objCompany.Nodes.Clear
'处理1.1.2:调出一级单位
strTemp = "Select Company_ID,CompanyName,CompanyShort from T_Company where HigherCompany_ID = 0"
'处理1.1.2.1:获得一级单位记录集
adors.Open strTemp, adoGbCONN
If Not (adors.EOF Or adors.BOF) Then
'处理1.1.2.2:创建一级单位树
Do While Not adors.EOF
objCompany.Nodes.Add , , "A" & adors(0), IfNullthenEmpty(adors(2)) & "_" & adors(1), objImg.ListImages(3).Index
'处理1.1.2.3:递归调用创建公司树函数,获得下级公司树
GetCompanyTree objCompany, objImg, adors(0)
adors.MoveNext
Loop
End If
objCompany.Nodes(1).Expanded = True
Else
'处理1.2.2:调出传值单位
strTemp = "Select Company_ID,CompanyName,CompanyShort from T_Company where HigherCompany_ID = " & intHighCompanyID & " and Company_ID<> " & intHighCompanyID
'处理1.2.2.1:获得下级单位记录集
adors.Open strTemp, adoGbCONN
If Not (adors.EOF Or adors.BOF) Then
'处理1.2.2.2:创建下级单位树
Do While Not adors.EOF
objCompany.Nodes.Add "A" & CStr(intHighCompanyID), 4, "A" & adors(0), IfNullthenEmpty(adors(2)) & "_" & adors(1), objImg.ListImages(3).Index
'处理1.2.2.3:递归调用创建公司树函数,获得下级公司树
GetCompanyTree objCompany, objImg, adors(0)
adors.MoveNext
Loop
End If
End If
Set adors = Nothing
Exit Sub
Err_MSg:
GetSystemMsg 8004
Set adors = Nothing
End Sub
Public Sub GetCompanyTree(objCompany As Object, objImg As Object, Optional intHighCompanyID As Integer = -1)
'变量定义
Dim adors As New ADODB.Recordset
Dim strTemp As String
'错误处理
On Error GoTo Err_MSg
'程序处理
'处理1.1:判断intHighCompanyID(上级单位ID号)的数值,如果为-1则调用一级单位,否则按传值调用
If intHighCompanyID = -1 Then
'处理1.1.1:清空公司树
objCompany.Nodes.Clear
'处理1.1.2:调出一级单位
strTemp = "Select Company_ID,CompanyName,CompanyShort from T_Company where HigherCompany_ID = 0"
'处理1.1.2.1:获得一级单位记录集
adors.Open strTemp, adoGbCONN
If Not (adors.EOF Or adors.BOF) Then
'处理1.1.2.2:创建一级单位树
Do While Not adors.EOF
objCompany.Nodes.Add , , "A" & adors(0), IfNullthenEmpty(adors(2)) & "_" & adors(1), objImg.ListImages(3).Index
'处理1.1.2.3:递归调用创建公司树函数,获得下级公司树
GetCompanyTree objCompany, objImg, adors(0)
adors.MoveNext
Loop
End If
objCompany.Nodes(1).Expanded = True
Else
'处理1.2.2:调出传值单位
strTemp = "Select Company_ID,CompanyName,CompanyShort from T_Company where HigherCompany_ID = " & intHighCompanyID & " and Company_ID<> " & intHighCompanyID
'处理1.2.2.1:获得下级单位记录集
adors.Open strTemp, adoGbCONN
If Not (adors.EOF Or adors.BOF) Then
'处理1.2.2.2:创建下级单位树
Do While Not adors.EOF
objCompany.Nodes.Add "A" & CStr(intHighCompanyID), 4, "A" & adors(0), IfNullthenEmpty(adors(2)) & "_" & adors(1), objImg.ListImages(3).Index
'处理1.2.2.3:递归调用创建公司树函数,获得下级公司树
GetCompanyTree objCompany, objImg, adors(0)
adors.MoveNext
Loop
End If
End If
Set adors = Nothing
Exit Sub
Err_MSg:
GetSystemMsg 8004
Set adors = Nothing
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货