下面一段程序是递归调用产生树的问题,快给分吧,对了最后一个参数可以不传任何内容
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
'
' Author:吴文智
' Date:2001-11-16
'Description:要试用本例请在窗体中填加一个树和一个按钮
' 然后在代码窗体中粘贴如下代码
' Good luck!Option ExplicitPrivate Sub AddItem(ByVal ParentKey As String, ByVal Key As String, ByVal Text As String)
'Key值的唯一性你要自己用代码处理啦
ParentKey = Replace("_" & ParentKey, "__", "_")
Key = Replace("_" & Key, "__", "_")
Select Case ParentKey
Case "_0"
treeView1.Nodes.Add , , Key, Text
Case Else
treeView1.Nodes.Add ParentKey, tvwChild, Key, Text
End Select
End SubPrivate Sub Command1_Click()
AddItem 0, 1, "aa"
AddItem 0, 2, "bb"
AddItem 1, 3, "cc"
End Sub
用Select Case判断一下就可以完成啦.你把你的每条数据的三部分作为参数传递给AddItem过程试试看,不是达到你要求的效果了吗?