Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
唐尸三摆手 发表于: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楼
小猪鑫鑫 发表于:2011/12/16 20:21:00

楼主:您好!

1、从外起步,然后再执行里,里循环执行完后,再循环外;

2、因 i =o时,执行if 后的第一段代码,这时nr("第一列") =0;当i =1时,执行ELSE后的代码,这时按select中的条件选出来的行只有一行,因为等于0的行,这时才一行,所以for j as integer =0 to drs.count -1,这句代码实际上只是0 TO 0,因为drs.count =1(此时只有一行),也就是说,j 只运行了一次,此时也还是0,所以nr("第二列")也等于0,当 i =2时,执行的也是ELSE后的代码,这时选出来的符合条件的行也只有一行,道理与前面所述一样,所以nr("第二列")总是等于0.

 

3楼
唐尸三摆手 发表于:2011/12/16 21:57:00

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

4楼
唐尸三摆手 发表于:2011/12/17 9:32:00
老大在吗,帮忙看下运行过程中如何获得drs.count新增加的值呢
5楼
狐狸爸爸 发表于:2011/12/17 9:46:00

二楼的解释很清楚啊:

 

Dim drs As List(of DataRow) = DataTables("表A").Select("第一列 = "& i-1 &"")

 

得到的永远是一行,j每次都是从0循环到0,所以 nr("第二列") = j ,会使得第二列永远等于0

 

没有看明白你第二列要存一个什么值,而且你的drs.Count是永远等于1的。

6楼
唐尸三摆手 发表于:2011/12/17 9:55:00

我想达到的效果是:

i = 0时,新增记录

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

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

以此类推

7楼
狐狸爸爸 发表于:2011/12/17 10:04:00

i=0 要增加几行,i=1要增加几行,i =2要增加几行,规则是什么?

你现在的代码,其实不管这个 i 等于多少,都只是增加一行而已。

[此贴子已经被作者于2011-12-17 10:04:05编辑过]
8楼
唐尸三摆手 发表于:2011/12/17 10:12:00
我做个小例子吧
9楼
唐尸三摆手 发表于:2011/12/17 10:39:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.foxdb

这是附件
10楼
狐狸爸爸 发表于:2011/12/17 11:12:00
你只说如何增加行,新增行的各列的内容如何确定?
共14 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03516 s, 3 queries.