关于treeview显示的问题!
真是奇怪了,下面的数据库表的字段,其中CMatId前面带 w 的都是treeview的最后一级节点 ,带s的都不是最后一级节点,treeview(程序见下面)可以正常显示,可是当我把CMatId前面带w的都改成s,前面带s的都改成w,也就是treeview的最后一级节点改为s,不是最后一级的都改为w就不能正常显示了。都是同一段程序呀。我就想实现:treeview的最后一级节点变为s开头,不是最后一级的都为w开头。该如何实现呀!
正常显示的数据库表(w开头的为最后一级):
CMatId CMatName CMatSortId
s0001 一号库 s0000
s0002 二号库 s0000
s0003 三号库 s0000
s0004 四号库 s0000
s101 汽车件 s0001
s10101 汽车件一架 s101
s1010101 汽车件一架一层 s10101
s1010102 汽车件一架二层 s10101
s10102 汽车件二架 s101
s1010201 汽车件二架一层 s10102
s10103 汽车件三架 s101
s1010301 汽车件三架一层 s10103
s102 小汽车件 s0001
s10201 小汽车件一架 s102
s1020101 小汽车件一架一层 s10201
s1020102 小汽车件一架二层 s10201
s201 劳保 s0002
s20101 劳保一架 s201
s2010101 劳保一架一层 s20101
w101010102 汽车件一架一层 s1010101
w101010103 汽车件 s1010101
w101010106 一层 s1010101
w101010201 刹车 s1010102
w101020101 汽层 s1010201
w101030101 活塞 s1010301
w102010101 小层 s1020101
w102010201 汽车层 s1020102
w201010101 劳层 s2010101
w201010102 劳保3 s2010101
w301 三号库 s0003
w401 四号库 s0004
w和s互换以后数据库表变为(s开头的为最后一级):
CMatId CMatName CMatSortId
s101010102 汽车件一架一层 w1010101
s101010103 汽车件 w1010101
s101010106 一层 w1010101
s101010201 刹车 w1010102
s101020101 汽层 w1010201
s101030101 活塞 w1010301
s102010101 小层 w1020101
s102010201 汽车层 w1020102
s201010101 劳层 w2010101
s201010102 劳保3 w2010101
s301 三号库 w0003
s401 四号库 w0004
w0001 一号库 w0000
w0002 二号库 w0000
w0003 三号库 w0000
w0004 四号库 w0000
w101 汽车件 w0001
w10101 汽车件一架 w101
w1010101 汽车件一架一层 w10101
w1010102 汽车件一架二层 w10101
w10102 汽车件二架 w101
w1010201 汽车件二架一层 w10102
w10103 汽车件三架 w101
w1010301 汽车件三架一层 w10103
w102 小汽车件 w0001
w10201 小汽车件一架 w102
w1020101 小汽车件一架一层 w10201 w102010102 小汽车件一架一层 w1020101
w1020102 小汽车件一架二层 w10201
w201 劳保 w0002
w20101 劳保一架 w201
w2010101 劳保一架一层 w20101
w402 四号库 w0004
程序如下:
Form窗体:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim sTr As String
Dim sql2 As String
Dim mylen As Integer
Dim rs As New ADODB.Recordset
sTr = Node.Key
mylen = Len(sTr)
sTr = Right(sTr, mylen - 1)
sql2 = "select * from As_Inventory_Subject where CMatId= '" & "s" & sTr & "' or CMatId= '" & "w" & sTr & "'"
rs.Open sql2, conn
Subject.Text = Replace(Replace(Trim(rs.Fields("CMatId")), "s", ""), "w", "")
CMatName.Text = Trim(rs.Fields("CMatName"))
Text1.Text = Replace(Replace(Trim(rs.Fields("CMatId")), "s", ""), "w", "")
rs.Close
End Sub
模块:
Public Function LoadFormRecordset1(tv As TreeView, rs As Recordset) As Boolean
Dim oNodex
nImage = 1
nSelectImage = 2
tv.Nodes.Clear
Do While rs.EOF = False
If (Trim(rs.Fields("CMatSortId")) = "0000") Then
Set oNodex = tv.Nodes.Add(, , "d" & Trim(rs.Fields("CMatId")), Trim(rs.Fields("CMatName")) & "(" & Trim(rs.Fields("CMatId")) & ")", nImage, nSelectImage)
Else
Set oNodex = tv.Nodes.Add("d" & Trim(rs.Fields("CMatSortId")), tvwChild, "d" & Trim(rs.Fields("CMatId")), Trim(rs.Fields("CMatName")) & "(" & Trim(rs.Fields("CMatId")) & ")", nImage, nSelectImage)
tv.Nodes(2).EnsureVisible
End If
rs.MoveNext
Loop
End Function
报的错误是:
未发现元素
Set oNodex = tv.Nodes.Add("d" & Trim(rs.Fields("CMatSortId")), tvwChild, "d" & Trim(rs.Fields("CMatId")), Trim(rs.Fields("CMatName")) & "(" & Trim(rs.Fields("CMatId")) & ")", nImage, nSelectImage)
是不是和数据库表中字段的存放顺序有关呀?该如何解决呀!还请高手帮忙呀!!!