有个数据表: 房间信息表
里面有字段:Nodeid,id
表中内容有:ss,1
ss,2
ss,3
ss,4
ss,5
ss,6
qq,1
qq,2
qq,3
qq,4
qq,5
qq,6
我现在想实现这个样子的树状结构:温度监控管理系统(主树)
ss(第一棵树)
1(第二棵树)
2(第二棵树)
3(第二棵树)
4(第二棵树)
5(第二棵树)
6(第二棵树)
qq(第一棵树)
1(第二棵树)
2(第二棵树)
3(第二棵树)
4(第二棵树)
5(第二棵树)
6(第二棵树)
现程序是:
NodeKey = "温度监控管理系统"
NodeText = "温度监控管理系统"
Set Node1 = TreeView1.Nodes.Add(, , NodeKey, NodeText, 0)
SQLStr = "select distinct nodeid,id from 房间信息表 "
Set rs = ESQL(SQLStr)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF
NodeKey = Trim(rs!nodeid)
NodeText = rs!nodeid
Set Node2 = TreeView1.Nodes.Add(Node1.Index, tvwChild, NodeKey, NodeText, 0)
SQLStr1 = "select distinct nodeid,id from 房间信息表 where id=" & rs.Fields("id")
Set rs1 = ESQL(SQLStr1)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do While Not rs1.EOF
NodeKey = Trim(rs1!ID)
NodeText = rs1!ID
Set Node3 = TreeView1.Nodes.Add(Node2.Index, tvwChild, NodeKey, NodeText, 0)
rs1.MoveNext
Loop
End If
rs.MoveNext
Loop
End If望各位帮个忙,祝大家新年快乐
里面有字段:Nodeid,id
表中内容有:ss,1
ss,2
ss,3
ss,4
ss,5
ss,6
qq,1
qq,2
qq,3
qq,4
qq,5
qq,6
我现在想实现这个样子的树状结构:温度监控管理系统(主树)
ss(第一棵树)
1(第二棵树)
2(第二棵树)
3(第二棵树)
4(第二棵树)
5(第二棵树)
6(第二棵树)
qq(第一棵树)
1(第二棵树)
2(第二棵树)
3(第二棵树)
4(第二棵树)
5(第二棵树)
6(第二棵树)
现程序是:
NodeKey = "温度监控管理系统"
NodeText = "温度监控管理系统"
Set Node1 = TreeView1.Nodes.Add(, , NodeKey, NodeText, 0)
SQLStr = "select distinct nodeid,id from 房间信息表 "
Set rs = ESQL(SQLStr)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF
NodeKey = Trim(rs!nodeid)
NodeText = rs!nodeid
Set Node2 = TreeView1.Nodes.Add(Node1.Index, tvwChild, NodeKey, NodeText, 0)
SQLStr1 = "select distinct nodeid,id from 房间信息表 where id=" & rs.Fields("id")
Set rs1 = ESQL(SQLStr1)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do While Not rs1.EOF
NodeKey = Trim(rs1!ID)
NodeText = rs1!ID
Set Node3 = TreeView1.Nodes.Add(Node2.Index, tvwChild, NodeKey, NodeText, 0)
rs1.MoveNext
Loop
End If
rs.MoveNext
Loop
End If望各位帮个忙,祝大家新年快乐
解决方案 »
- 100分!关于vb调用delphi编写的dll的问题,急!!!
- 3265错误提示
- VB 6.0轉成Vb.net 2005的問題,請各位幫幫忙!100分問題,在線等
- VB面试过后不过,问问大家这几题该怎么回答
- 求一个源代码
- 我只有10分了,但还有个问题要请教:学籍表和成绩表,如何用vb的data report打印这2个一对多的报表?vb里能建立标签吗?
- 如何将OLE中的EXCEL设为指定的大小,高手救命
- API函数mciSendString有没有重复播放的命令?
- 哪位对MAPIMessages控件了解?我这有几个小问题。。
- 生成表查询问题?江湖救急!!!!!
- 想用vb实现在OFFICE中类似于windows更新中的自动保存?
- 拷贝问题???
温度监控管理系统
.....ss
然后就没了
Set Node1 = TreeView1.Nodes.Add(, , NodeKey, NodeText, 0)
SQLStr = "select distinct nodeid from 房间信息表 "
Set rs = ESQL(SQLStr) If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF
NodeKey = Trim(rs!nodeid)
NodeText = rs!nodeid
Set Node2 = TreeView1.Nodes.Add(Node1.Index, tvwChild, "nodeid" & NodeKey, NodeText, 0) rs.MoveNext
Loop
End If
这些能得到主树和第一棵树:
温度监控管理系统(主树)
ss(第一棵树)
qq(第一棵树)
SQLStr = "select distinct nodeid from 房间信息表 "
Set rs = ESQL(SQLStr) If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF
NodeKey = Trim(rs!nodeid)
NodeText = Trim(rs!nodeid)
Set Node2 = TreeView1.Nodes.Add(Node1.Index, tvwChild, "nodeid" & NodeKey, NodeText, 0)
SQLStr1 = "select nodeid,id from 房间信息表 " '''where nodeid=" & rs.Fields("nodeid")
Set rs1 = ESQL(SQLStr1)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do While Not rs1.EOF
If Trim(rs1!nodeid) = Trim(rs!nodeid) Then
NodeKey = Trim(rs1!ID)
NodeText = Trim(rs1!ID)
Set Node3 = TreeView1.Nodes.Add(Node2.Index, tvwChild, "id" & NodeKey, NodeText, 0)
End If
rs1.MoveNext
Loop
End If
rs.MoveNext
Loop
End If
现在能出现:
温度监控管理系统(主树)
ss(第一棵树)
。1
。2
。3
。4
。5
。6
qq(第一棵树)
这个树没出来
就是想不到解决方案
'添加下一级
Private Sub cmdChild_Click()
Dim oNodex As Node
Dim skey As String
Dim iIndex As Integer
lb = ""
iIndex = TreeView1.SelectedItem.Index 'Check to see if a Node is selected
skey = GetNextKey() ' Get a key for the new Node
frmlb.Show vbModal
If lb & "" = "" Then
Exit Sub
Else
Set oNodex = TreeView1.Nodes.Add(iIndex, tvwChild, skey, lb, 1, 2)
cmdSave.Enabled = True
Exit Sub
End If
End Sub'添加同一级
Private Sub cmdFirst_Click()
Dim skey As String
Dim iIndex As Integer
lb = ""
If addnode = "物品分类" Then
MsgBox "对不起!不能再次添加根目录!"
Exit Sub
Else
iIndex = TreeView1.SelectedItem.Index 'Check to see if a Node is selected
skey = GetNextKey() ' Get a key for the new Node
End If
frmlb.Show vbModal
If lb & "" = "" Then
Else
TreeView1.Nodes.Add iIndex, tvwLast, skey, lb, 1, 2
cmdSave.Enabled = True
Exit Sub
End If
End Sub
Private Sub GetFirstParent()
'Find the first parent node in the TreeView
On Error GoTo myerr
Dim i As Integer
Dim nTmp As Integer
For i = 1 To TreeView1.Nodes.Count
'This will give an error if there is no parent
nTmp = TreeView1.Nodes(i).Parent.Index
Next
Exit Sub
myerr:
mnIndex = i
Exit Sub
End SubPrivate Function GetNextKey() As String
'Returns a new key value for each Node being added to the TreeView
'This algorithm is very simple and will limit you to adding a total of 999 nodes
'Each node needs a unique key. If you allow users to remove Nodes you can't use
'the Nodes count +1 as the key for a new node. Dim sNewKey As String
Dim iHold As Integer
Dim i As Integer
On Error GoTo myerr
'The next line will return error #35600 if there are no Nodes in the TreeView
iHold = Val(TreeView1.Nodes(1).Key)
For i = 1 To TreeView1.Nodes.Count
If Val(TreeView1.Nodes(i).Key) > iHold Then
iHold = Val(TreeView1.Nodes(i).Key)
End If
Next
iHold = iHold + 1
sNewKey = CStr(iHold) & "_"
GetNextKey = sNewKey 'Return a unique key
Exit Function
myerr:
'Because the TreeView is empty return a 1 for the key of the first Node
GetNextKey = "1_"
Exit Function
End Function
Private Sub showtree()
'asks the user to find the database and then restores the Nodes
'in the treeview control from the table
Dim oNodex As Node
Dim nImage As Integer
Dim nSelectedImage As Integer
Dim sTableNames As String
'Set mDB = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\cx.mdb", False, False, ";pwd=nbmidt920")
TreeView1.Nodes.Clear 'Clear the TreeView of any nodes
'Set mRS = mDB.OpenRecordset("splb")
rs.Open "select * from splb", cn, adOpenStatic, adLockOptimistic
If rs.RecordCount > 0 Then 'make sure there are records in the table
rs.MoveFirst
Do While rs.EOF = False
nImage = rs.Fields("image")
nSelectedImage = rs.Fields("selectedimage")
If Trim(rs.Fields("parent")) = "0_" Then 'All root nodes have 0_ in the parent field
Set oNodex = TreeView1.Nodes.Add(, 1, Trim(rs.Fields("key")), _
Trim(rs.Fields("text")), nImage, nSelectedImage)
Else 'All child nodes will have the parent key stored in the parent field
Set oNodex = TreeView1.Nodes.Add(Trim(rs.Fields("parent")), tvwChild, _
Trim(rs.Fields("key")), Trim(rs.Fields("text")), nImage, nSelectedImage)
'expend the TreeView so all nodes are visible
End If
rs.MoveNext
Loop
End If
TreeView1.Nodes.Item(1).Expanded = True
rs.Close 'Close the table
'mDB.Close 'Close the database
End Sub
Sub SaveToTable()
Dim sResponse As String
Dim sMDBName As String
Dim sTableName As String
Dim i As Integer
Set mRS = New ADODB.Recordset
mRS.Open "select * from splb", cn, adOpenStatic, adLockOptimistic
WriteToTable 'Go to the sub that writes the nodes into the table
mRS.Close 'close the recordset
End SubPrivate Sub cmdok_Click()
If addnode = "物品分类" Or addnode = "" Then
MsgBox "请选择物品分类信息!"
Else
lb = addnode
Unload Me
End If
End Sub'删除所选类别
Private Sub cmdRemove_Click()
Dim iIndex As Integer
If addnode = "物品分类" Then
MsgBox "无法删除当前选定分类!"
Else
If MsgBox("确定要删除当前选定分类吗?", 36) = 6 Then
iIndex = TreeView1.SelectedItem.Index 'Check to see if a Node is selected
TreeView1.Nodes.Remove iIndex 'Removes the Node and any children it has
SaveToTable
End If
End If
End Sub
'保存
Private Sub cmdSave_Click()
Call SaveToTable
End Sub
Sub WriteToTable()
Dim iTmp As Integer
Dim iIndex As Integer
If mRS.RecordCount > 0 Then
mRS.MoveFirst
Do While mRS.EOF = False
mRS.Delete
mRS.MoveNext
Loop
End If
GetFirstParent 'Find a root node in the treeview
'get the index of the root node that is at the top of the treeview
iIndex = TreeView1.Nodes(mnIndex).FirstSibling.Index
iTmp = iIndex
mRS.AddNew
mRS("parent") = "0_" 'this is a root node
mRS("key") = TreeView1.Nodes(iIndex).Key
mRS("text") = TreeView1.Nodes(iIndex).Text
mRS("image") = TreeView1.Nodes(iIndex).Image
mRS("selectedimage") = TreeView1.Nodes(iIndex).SelectedImage
mRS.Update
'If the Node has Children call the sub that writes the children
If TreeView1.Nodes(iIndex).Children > 0 Then
WriteChild iIndex
End If
While iIndex <> TreeView1.Nodes(iTmp).LastSibling.Index
'loop through all the root nodes
mRS.AddNew
mRS("parent") = "0_" 'this is a root node
mRS("key") = TreeView1.Nodes(iIndex).Next.Key
mRS("text") = TreeView1.Nodes(iIndex).Next.Text
mRS("image") = TreeView1.Nodes(iIndex).Next.Image
mRS("selectedimage") = TreeView1.Nodes(iIndex).Next.SelectedImage
mRS.Update
'If the Node has Children call the sub that writes the children
If TreeView1.Nodes(iIndex).Next.Children > 0 Then
WriteChild TreeView1.Nodes(iIndex).Next.Index
End If
' Move to the Next root Node
iIndex = TreeView1.Nodes(iIndex).Next.Index
Wend
cmdSave.Enabled = False
End Sub
'-------------------------------------
Private Sub WriteChild(ByVal iNodeIndex As Integer)
Dim iTempIndex As Integer
iTempIndex = TreeView1.Nodes(iNodeIndex).Child.FirstSibling.Index
For i = 1 To TreeView1.Nodes(iNodeIndex).Children
mRS.AddNew----
mRS("parent") = TreeView1.Nodes(iTempIndex).Parent.Key
mRS("key") = TreeView1.Nodes(iTempIndex).Key
mRS("text") = TreeView1.Nodes(iTempIndex).Text
mRS("image") = TreeView1.Nodes(iTempIndex).Image
mRS("selectedimage") = TreeView1.Nodes(iTempIndex).SelectedImage
mRS.Update
If TreeView1.Nodes(iTempIndex).Children > 0 Then
WriteChild (iTempIndex)
End If
If i <> TreeView1.Nodes(iNodeIndex).Children Then
iTempIndex = TreeView1.Nodes(iTempIndex).Next.Index
End If
Next i
End Sub