高手来看看删除treeview节点问题!

goodmanh 2004-06-26 04:01:29
我的表中这样的 TABLE1

id pid context
1 0 中国
2 1 北京
3 1 辽宁
4 1 山东
5 2 青岛
6 2 烟台
...

中国
|
----北京
|____山东___青岛
|___烟台

现在我要选中删除山东,级连删除该节点下的所有数据(可能多层!)

如何完成,是否要通过递归来完成,谢谢!


...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodmanh 2004-06-26
  • 打赏
  • 举报
回复
谢谢!
华芸智森 2004-06-26
  • 打赏
  • 举报
回复
例如:该程序段由于用到其它类和结构,不能直接运行,但是,在方法上提供一个参考.

Private Function DelNode(NodeX As Node)
Dim N As Long
Dim StrSql As String
Dim MoNode() As Node
Dim AddId As Long
Dim TmpNode As Node

With TrvBasePar
If Not (TrvBasePar.Cnn Is Nothing) Then
StrSql = "DELETE FROM " & .TabName & " WHERE " & .ParFld & "='" & Right$(NodeX.Parent.Key, Len(NodeX.Parent.Key) - 1) & "' AND " & _
.ChildFld & "='" & Right$(NodeX.Key, Len(NodeX.Key) - 1) & "'"
TrvBasePar.Cnn.Execute StrSql
End If

If NodeX.Children > 0 Then
AddId = 0
N = NodeX.Child.Index

If .TrvName.Nodes(N).Children > 0 Then
AddId = AddId + 1
ReDim Preserve MoNode(AddId - 1)
Set MoNode(AddId - 1) = .TrvName.Nodes(N)
Else
Set TmpNode = .TrvName.Nodes(N)
If Not (.Cnn Is Nothing) Then
StrSql = "DELETE FROM " & .TabName & " WHERE " & .ParFld & "='" & Right$(TmpNode.Parent.Key, Len(TmpNode.Parent.Key) - 1) & "' AND " & _
.ChildFld & "='" & Right$(TmpNode.Key, Len(TmpNode.Key) - 1) & "'"
.Cnn.Execute StrSql
End If
End If

While N <> NodeX.Child.LastSibling.Index
N = .TrvName.Nodes(N).Next.Index
If .TrvName.Nodes(N).Children > 0 Then
AddId = AddId + 1
ReDim Preserve MoNode(AddId - 1)
Set MoNode(AddId - 1) = .TrvName.Nodes(N)
Else
Set TmpNode = .TrvName.Nodes(N)
If Not (.Cnn Is Nothing) Then
StrSql = "DELETE FROM " & .TabName & " WHERE " & .ParFld & "='" & Right$(TmpNode.Parent.Key, Len(TmpNode.Parent.Key) - 1) & "' AND " & _
.ChildFld & "='" & Right$(TmpNode.Key, Len(TmpNode.Key) - 1) & "'"
.Cnn.Execute StrSql
End If
End If
Wend

If AddId > 0 Then
For N = 0 To AddId - 1
Call DelNode(MoNode(N))
Next
End If
End If

End With
End Function
goodmanh 2004-06-26
  • 打赏
  • 举报
回复
我的表中这样的 TABLE1

id pid context
1 0 中国
2 1 北京
3 1 辽宁
4 1 山东
5 4 青岛
6 4 烟台

------------------

把表改一下!

是不是用记录集来对表查找,然后。。

因为在数据库里,一直没找到这方面的资料!
华芸智森 2004-06-26
  • 打赏
  • 举报
回复
此类问题一般用的就是递归..

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧