Foxtable(狐表)用户栏目专家坐堂 → [求助] Do ...Loop语句


  共有3865人关注过本帖树形打印复制链接

主题:[求助] Do ...Loop语句

帅哥哟,离线,有人找我吗?
东坡一剑
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
[求助] Do ...Loop语句  发帖心情 Post By:2013/6/27 22:09:00 [显示全部帖子]

我在学习《递归函数使用实例》一节时,下面的代码有个地方始终想不通,看看各位高手能不能帮忙指点一下

 

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编辑过]

 回到顶部