我在学习《递归函数使用实例》一节时,下面的代码有个地方始终想不通,看看各位高手能不能帮忙指点一下
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim key As String = e.Node.Name
Dim ids As String
If key = "全部" Then
Tables("表A").Filter = ""
Else
For Each nd As WinForm.TreeNode In trv.AllNodes
Dim pd As WinForm.TreeNode = nd
Do
If pd.Name = key Then
If ids > "" Then
ids= ids
& ","
End If
ids = ids
&
"'"
&
nd.name
&
"'" '此处不用 pd.Name 而用 nd.name 有什么玄机?
Exit Do
Else
pd = pd.ParentNode
If pd Is Nothing Then
Exit Do
End If
End If
Loop
Next
Tables("表A").Filter = "键 In ("
&
ids
&
")"
End If
按我的理解
ids = ids
&
"'"
&
nd.name
&
"'"
只有当
pd.Name = key 时
才会执行
而每次双击的节点只有一个
因此加进 ids 字符串的节点名称只会有一个,也就是说 ids 始终只有一个节点名称的长度
所以Table的Filter 永远只能筛查一行
我知道自己的理解错了,但不知错在哪里,请高手指点。
是不是对 Do Loop 语句的理解有误?
如果是这样,错在哪里?
这方面的知识又该怎么补学?
[此贴子已经被作者于2013-6-27 22:18:39编辑过]