| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1006 人关注过本帖
标题: 为什么只循环一次?????
取消只看楼主 加入收藏
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
 问题点数:0 回复次数:5 
 为什么只循环一次?????
我的全部代码如下:    为什么红色部份的    FOR部份为什么只循环一次?????



Private Sub Form_Load()
Me.WindowState = 2   '窗体最大化
'设置ADODC1连接到yxhmk.mdb
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\yxhmk.mdb;Persist Security Info=False"
'连接<使用单位>表
Adodc1.RecordSource = "select * from 使用单位"
'刷新连接
Adodc1.Refresh
'设树状控件的图标
TreeView1.ImageList = 树状图标
'设置控件的第一级节点=====================================================================
Set nodes_1 = Me.TreeView1.Nodes.Add(, , "使用单位", Adodc1.Recordset.Fields("使用单位"), 1)

'设置第二级节点====================================================================================

'连接<线路档案>表
Adodc1.RecordSource = "线路档案"
'刷新连接
Adodc1.Refresh
'获得记录集的条数
M = Adodc1.Recordset.RecordCount

ReDim X(M) As String, Y(M) As String
 For I = 2 To M
   X(I) = Adodc1.Recordset("线路名称")
   Y(I) = Adodc1.Recordset("线路编号")
    Set nodes_1 = Me.TreeView1.Nodes.Add("使用单位", tvwChild, "A" & Y(I), Y(I) & "|" & X(I), 2, 5)
    Adodc1.Recordset.MoveNext    '记录集的指针转到下一条
 Next
'设置第三级节点====================================================================================
Adodc1.RecordSource = "台区档案"

'刷新连接
Adodc1.Refresh
'获得记录集的条数
'B = Adodc1.Recordset.RecordCount
ReDim FF(B) As String, EE(B) As String, BB(B) As String
  For I = 1 To 6
     Adodc1.Refresh '刷新连接
    Do While Adodc1.Recordset.EOF = False
      FF(B) = Adodc1.Recordset("所属线路")
      EE(B) = Adodc1.Recordset("台区编号")
      BB(B) = Adodc1.Recordset("台区名称")
       If FF(B) = "0" & I Then
         Set nodes_1 = Me.TreeView1.Nodes.Add("A" & "0" & I, tvwChild, "A" & EE(B), EE(B) & "|" & BB(B), 3, 5)
       End If
      Adodc1.Recordset.MoveNext    '记录集的指针转到下一条
    Loop
   Next I

End Sub

[[it] 本帖最后由 yxhmk 于 2008-9-1 15:53 编辑 [/it]]
搜索更多相关主题的帖子: TreeView1 
2008-08-31 08:43
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
得分:0 
[bo][un]我是菜鸟哦[/un] 在 2008-8-31 09:45 的发言:[/bo]

那就是M的问题


M=6应该是没问题的.
2008-08-31 17:41
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
得分:0 
[bo][un]multiple1902[/un] 在 2008-8-31 10:27 的发言:[/bo]

按说里面的Do循环是没什么问题的,不过那个ADD方法的第一个参数是不是key?
每个结点的key应该不一样吧?

没试验,纯粹经验判断。


不过那个ADD方法的第一个参数是不是key?    这句不怎么理解?

每个结点的key应该不一样吧?         这个是当然的因为KEY是不能重复的.
2008-08-31 17:45
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
得分:0 
[bo][un]multiple1902[/un] 在 2008-8-31 19:03 的发言:[/bo]

我没仔细看也没测试,说错了欢迎指出。

ADD方法的第一个参数是不是指这个结点的“关键字”?
对于一个特定的i来说,Do循环中的每次调用Add提交的是不是都是同样的关键字?



对!在Do循环中是不变的   例:如果I在FOR中=1 那么DO循环中的I就一直是=1
2008-08-31 21:30
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
得分:0 
那是不是
    Do 循环完后,因为Do While Adodc1.Recordset.EOF  已经为:  =True
   
然后就改成如下:
     For I = 1 To M
    Adodc1.Refresh        '<--------------------添加了这句
    Do While Adodc1.Recordset.EOF = True
      FF(B) = Adodc1.Recordset("所属线路")
      EE(B) = Adodc1.Recordset("台区编号")
      BB(B) = Adodc1.Recordset("台区名称")
      If FF(B) = "0" & I Then
       Set nodes_1 = Me.TreeView1.Nodes.Add("A" & "0" & I, tvwChild, "A" & EE(B), EE(B) & "|" & BB(B), 2, 6)
      End If
      Adodc1.Recordset.MoveNext    '记录集的指针转到下一条
    Loop
  Next I
但是这句:Set nodes_1 = Me.TreeView1.Nodes.Add("A" & "0" & I, tvwChild, "A" & EE(B), EE(B) & "|" & BB(B), 2, 6)   又报错.为什么?
2008-09-01 09:03
yxhmk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-3
收藏
得分:0 
[bo][un]不说也罢[/un] 在 2008-9-1 12:57 的发言:[/bo]

把顶楼代码中的 Do While Adodc1.Recordset.EOF = False 这一句改为 Do While Not Adodc1.Recordset.EOF

不行还是不行
2008-09-01 15:49
快速回复: 为什么只循环一次?????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024595 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved