关于treeview的老话题,就是找不出错误,请帮忙,急呀!
yzd 2006-06-03 11:24:53 本人是想将产品分解后,列表,字段如下:
id flag表示层数 FID 订单号码 内部货码 组成货码 数量
312 -1 0 4321 A-0055 10000 0
313 0 312 4321 A-0055 TC-4200 10000 0
314 1 313 4321 TC-4200 TA-0210 10000 0
315 2 314 4321 TA-0210 A6101 878.882 0
316 2 314 4321 TA-0210 A2130 1416.667 0
317 2 314 4321 TA-0210 9601 76.416 0
318 2 314 4321 TA-0210 9501 2.488 0
319 2 314 4321 TA-0210 1006 2938.888 0
320 2 314 4321 TA-0210 1007 233.33 0
321 2 314 4321 TA-0210 651 333.33 0
322 2 314 4321 TA-0210 1001 3013.882 0
323 2 314 4321 TA-0210 1009 57.777 0
324 1 313 4321 TC-4200 BT-001 10000 0
325 0 312 4321 A-0055 TC-4202 10000 0
326 1 325 4321 TC-4202 TA-0210 10000 0
336 1 325 4321 TC-4202 BT-002 10000 0
代码如下:
Private Function CreatDdAnalyze(ddhm As String) As Boolean
On Error GoTo err
Dim m_node As Node
Set m_node = Me.TreeDdAnAlyze.Nodes.add(, , "node" & -1, "订单分解列表", 1, 1)
m_node.Bold = True
Dim rstemp As New ADODB.Recordset
Dim rstemp1 As New ADODB.Recordset
Dim rstemp2 As New ADODB.Recordset
Dim i As Integer, j As Integer, k As Integer, h As Integer, X As Integer
With Me.TreeDdAnAlyze.Nodes
If rs.State And adStateOpen Then rs.Close
rs.Open "select distinct 内部货码,id,数量 from CodeAnalyze where CodeAnalyze.订单号码='" & ddhm & "' and flag=-1", cn, adOpenStatic
If rs.RecordCount > 0 Then
For i = 0 To rs.RecordCount - 1
Set m_node = .add("node" & -1, tvwChild, "Head" & rs!内部货码, rs!内部货码 & " ID" & X & " " & rs!数量, 2, 2)
X = X + 1
If rstemp.State And adStateOpen Then rstemp.Close
rstemp.Open "select id,订单号码,内部货码,组成货码,数量 from CodeAnalyze where 订单号码='" & ddhm & "' and flag=0 and 内部货码='" & rs!内部货码 & "' and fid=" & rs!ID & " order by flag,id", cn, adOpenStatic
X = X + 1
For j = 0 To rstemp.RecordCount - 1
Set m_node = .add("Head" & rs!内部货码, tvwChild, "Chil1" & rstemp!组成货码, rstemp!组成货码 & " ID" & X & " " & rstemp!数量, 2, 2)
If rstemp1.State And adStateOpen Then rstemp1.Close
rstemp1.Open "select id,订单号码,内部货码,组成货码,数量 from CodeAnalyze where 订单号码='" & ddhm & "' and flag=1 and 内部货码='" & rstemp!组成货码 & "' and fid=" & rstemp!ID & " order by flag,id", cn, adOpenStatic
X = X + 1
For k = 0 To rstemp1.RecordCount - 1
Set m_node = .add("Chil1" & rstemp!组成货码, tvwChild, "Chil2" & X & rstemp1!组成货码, rstemp1!组成货码 & " ID" & X & " " & rstemp1!数量, 2, 2)
If rstemp2.State And adStateOpen Then rstemp2.Close
rstemp2.Open "select id,订单号码,内部货码,组成货码,数量 from CodeAnalyze where 订单号码='" & ddhm & "' and flag=2 and 内部货码='" & rstemp1!组成货码 & "' and fid=" & rstemp1!ID & " order by flag,id", cn, adOpenStatic
X = X + 1
For h = 0 To rstemp2.RecordCount - 1
/此处出错/ Set m_node = .add("Chil2" & rstemp1!组成货码, tvwChild, "Chil3" & X & h & rstemp2!组成货码, rstemp2!组成货码 & " ID" & X & " " & rstemp2!数量, 2, 2)
rstemp2.MoveNext
Next
rstemp1.MoveNext
Next
rstemp.MoveNext
Next
rs.MoveNext
Next
End If
End With
With TreeDdAnAlyze
For l = 1 To .Nodes.count
.Nodes(l).Expanded = True
Next
End With
CreatDdAnalyze = True
Exit Function
err:
CreatDdAnalyze = False
MsgBox err.Description
End Function