End Sub Private Function DELETE_Node(Nodex As Node) As Boolean On Error GoTo err1 Dim i As Long Dim tempNode As Node If Nodex.Children <> 0 Then Set tempNode = Nodex.Child For i = 1 To Nodex.Children Call DELETE_Node(tempNode) Set tempNode = tempNode.Next Next End If Debug.Print "delete from table1 where name = '" & Nodex.Text & "'" Exit Function err1: Debug.Print Err.desciption Err.Clear End Function
TreeView的子节点是自动删除的,不必管它数据库中用分级编码 A "A" B "AA" C "AB" D "AC" F "ACA" G "ACB" h "ACC" 可以用Like匹配所有子节点的
以上的程序运行结果如下: -------------------------------- delete from table1 where name = 'b' delete from table1 where name = 'c' delete from table1 where name = 'f' delete from table1 where name = 'g' delete from table1 where name = 'h' delete from table1 where name = 'i' delete from table1 where name = 'd' delete from table1 where name = 'x' delete from table1 where name = 'y' delete from table1 where name = 'z' delete from table1 where name = 'e' delete from table1 where name = 'a'
小弟昨天苦思冥想一夜终于想出来了具体如下数据表的字段为:节点编码,节点名称,父节点编码,父节点名称,节点层次引用部件为Microsoft Windows Common Controls 5.0(sp2)源码为 Dim nodX As Node Dim txtsql As String Dim msgtext As String Dim rs As ADODB.Recordset Dim i As Integer If Trim(parText) <> "" Then With TreeView1
If MsgBox("是否删除" & .Nodes(parText).Text & "?", vbOKCancel, "警告") = vbOK Then '查找到所以要删除的记录 'List1控件作为队列使用,将要删除节点的所以子节点和子节点的子节点放入其中 List1.Clear '将要删除的节点添加到list1中 List1.AddItem Trim(.Nodes(parText).Key) i = 1 While i <= List1.ListCount txtsql = "select * from ys where fjdbm = '" & List1.List(i - 1) & "'" Set rs = ExecuteSQL(txtsql, msgtext) While Not rs.EOF List1.AddItem Trim(rs.Fields(0)) rs.MoveNext Wend i = i + 1 Wend '删除所以list1中的节点 txtsql = "delete from ys where jdbm='" & List1.List(0) & "' " For i = 1 To List1.ListCount - 1 txtsql = txtsql & " or jdbm='" & List1.List(i) & "' " Next i Set rs = ExecuteSQL(txtsql, msgtext) TreeView1.Nodes.Clear
ShowClass'自定义函数功能为将所以的节点从新从数据库中调出 Else Exit Sub End If End With End If 不知还有没有错误请各位指教。
Dim curNode As Node
Dim i As Long
Set curNode = Me.TreeView1.SelectedItem
If Not curNode Is Nothing Then
Call DELETE_Node(curNode)
Me.TreeView1.Nodes.Remove curNode.Key
End If
End SubPrivate Sub Form_Load()
Me.TreeView1.Nodes.Add , , "a", "a"
Me.TreeView1.Nodes.Add "a", tvwChild, "b", "b"
Me.TreeView1.Nodes.Add "a", tvwChild, "c", "c"
Me.TreeView1.Nodes.Add "a", tvwChild, "d", "d"
Me.TreeView1.Nodes.Add "a", tvwChild, "e", "e"
Me.TreeView1.Nodes.Add "d", tvwChild, "f", "f"
Me.TreeView1.Nodes.Add "d", tvwChild, "g", "g"
Me.TreeView1.Nodes.Add "d", tvwChild, "h", "h"
Me.TreeView1.Nodes.Add "d", tvwChild, "i", "i"
Me.TreeView1.Nodes.Add "e", tvwChild, "x", "x"
Me.TreeView1.Nodes.Add "e", tvwChild, "y", "y"
Me.TreeView1.Nodes.Add "e", tvwChild, "z", "z"
End Sub
Private Function DELETE_Node(Nodex As Node) As Boolean
On Error GoTo err1
Dim i As Long
Dim tempNode As Node If Nodex.Children <> 0 Then
Set tempNode = Nodex.Child
For i = 1 To Nodex.Children
Call DELETE_Node(tempNode)
Set tempNode = tempNode.Next
Next
End If
Debug.Print "delete from table1 where name = '" & Nodex.Text & "'"
Exit Function
err1:
Debug.Print Err.desciption
Err.Clear
End Function
A "A"
B "AA"
C "AB"
D "AC"
F "ACA"
G "ACB"
h "ACC"
可以用Like匹配所有子节点的
--------------------------------
delete from table1 where name = 'b'
delete from table1 where name = 'c'
delete from table1 where name = 'f'
delete from table1 where name = 'g'
delete from table1 where name = 'h'
delete from table1 where name = 'i'
delete from table1 where name = 'd'
delete from table1 where name = 'x'
delete from table1 where name = 'y'
delete from table1 where name = 'z'
delete from table1 where name = 'e'
delete from table1 where name = 'a'
Dim nodX As Node
Dim txtsql As String
Dim msgtext As String
Dim rs As ADODB.Recordset
Dim i As Integer
If Trim(parText) <> "" Then
With TreeView1
If MsgBox("是否删除" & .Nodes(parText).Text & "?", vbOKCancel, "警告") = vbOK Then
'查找到所以要删除的记录
'List1控件作为队列使用,将要删除节点的所以子节点和子节点的子节点放入其中
List1.Clear
'将要删除的节点添加到list1中
List1.AddItem Trim(.Nodes(parText).Key)
i = 1
While i <= List1.ListCount
txtsql = "select * from ys where fjdbm = '" & List1.List(i - 1) & "'"
Set rs = ExecuteSQL(txtsql, msgtext)
While Not rs.EOF
List1.AddItem Trim(rs.Fields(0))
rs.MoveNext
Wend
i = i + 1
Wend
'删除所以list1中的节点
txtsql = "delete from ys where jdbm='" & List1.List(0) & "' "
For i = 1 To List1.ListCount - 1
txtsql = txtsql & " or jdbm='" & List1.List(i) & "' "
Next i
Set rs = ExecuteSQL(txtsql, msgtext)
TreeView1.Nodes.Clear
ShowClass'自定义函数功能为将所以的节点从新从数据库中调出
Else
Exit Sub
End If
End With
End If
不知还有没有错误请各位指教。