Foxtable(狐表)用户栏目专家坐堂 → 请教循环语句的执行顺序,老大请进


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

主题:请教循环语句的执行顺序,老大请进

帅哥哟,离线,有人找我吗?
唐尸三摆手
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
请教循环语句的执行顺序,老大请进  发帖心情 Post By:2011/12/16 18:46:00 [显示全部帖子]

好久没来了,有个小问题请教下

DataTables("表A").DataRows.clear
For i As Integer = 0 To 4
    If i = 0  Then
        Dim nr As DataRow = DataTables("表A").AddNew
        nr("第一列") = i
    Else
        Dim drs As List(of DataRow) =  DataTables("表A").Select("第一列 = "& i-1 &"")
        For j As Integer = 0 To drs.count - 1
            Dim nr As DataRow = DataTables("表A").AddNew
            nr("第一列") = i
            nr("第二列") = j
        Next
    End If
Next

 

1.循环语句的执行顺序是从里到外,还是从外到里

2.在else条件后面,为什么已经增加了nr("第二列") = j,在循环后结果总是0呢.

[此贴子已经被作者于2011-12-16 18:46:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/16 21:57:00 [显示全部帖子]

改进的方案是什么,请建议一下


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 9:32:00 [显示全部帖子]

老大在吗,帮忙看下运行过程中如何获得drs.count新增加的值呢

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 9:55:00 [显示全部帖子]

我想达到的效果是:

i = 0时,新增记录

i = 1时,获取i= 0的记录数,

i = 2时,获取i = 1的记录数,

以此类推


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 10:12:00 [显示全部帖子]

我做个小例子吧

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 10:39:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.foxdb

这是附件

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 11:22:00 [显示全部帖子]

DataTables("表A").DataRows.clear
For i As Integer = 0 To 4
    If i = 0  Then
        Dim nr As DataRow = DataTables("表A").AddNew
        nr("第一列") = i
    Else
        Dim drs As List(of DataRow) =  DataTables("表A").Select("第一列 = "& i-1 &"")
        For j As Integer = 0 To drs.count - 1
            Dim nr As DataRow = DataTables("表A").AddNew
            nr("第一列") = i
            nr("第二列") = j
        Next
    End If
Next

我就是想在else后循环获取新增加的i-1值的记录数,呵呵,我怎么越说自己越说不明白了

 


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2011/12/17 12:49:00 [显示全部帖子]

DataTables("表A").DataRows.clear
Dim drs As List(of DataRow) = DataTables("表B").Select("","第四列")
For m As Integer = 0 To drs.Count -1
    Dim dr1 As DataRow = drs(m)
    If m = 0 Then
        Dim cnt As Integer  = math.Floor(dr1("第三列") / dr1("第二列"))
        For n  As Integer  = 1 To cnt
            Dim dr2 As DataRow  = DataTables("表A").AddNew()
            dr2("第一列") = m
           
dr2("第二列") = dr1("第二列")
            dr2("第三列") = n
            '第二列没有赋值,所以等于0
        Next
    Else
        Dim drs2 As List(of DataRow) = DataTables("表A").Select("第一列 = "& (m-1))
        For Each dr2 As DataRow In drs2
            Dim cnt As Integer  = math.Floor(dr2("第二列") / dr1("第二列"))
            messagebox.show("cnt = " & cnt)
           ' messagebox.show("由于表A的第二列没有赋值,所以表A第二列除以表B第二列,结果是0,所以不会新增行")
            For n As Integer = 1 To cnt
                Dim dr3 As DataRow  = DataTables("表A").AddNew()
                dr3("第一列") = m
                dr3("第二列") = dr1("第二列")
                dr3("第三列") = dr2("第三列") + n
            Next
        Next
    End If
Next

 

按照你的思路,我试了下,和我原来的测试结果是一致的,前三列的结果如下,现在就是想再往下循环增加,一直加到第一列的顺序到5为止

0 50 1
0 50 2
0 50 3
0 50 4
0 50 5
0 50 6
1 20 2
1 20 3
1 20 3
1 20 4
1 20 4
1 20 5
1 20 5
1 20 6
1 20 6
1 20 7
1 20 7
1 20 8


 回到顶部