以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教循环语句的执行顺序,老大请进  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=15224)

--  作者:唐尸三摆手
--  发布时间: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编辑过]

--  作者:小猪鑫鑫
--  发布时间: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.

 


--  作者:唐尸三摆手
--  发布时间:2011/12/16 21:57:00
--  

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


--  作者:唐尸三摆手
--  发布时间:2011/12/17 9:32:00
--  
老大在吗,帮忙看下运行过程中如何获得drs.count新增加的值呢
--  作者:狐狸爸爸
--  发布时间: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的。


--  作者:唐尸三摆手
--  发布时间:2011/12/17 9:55:00
--  

我想达到的效果是:

i = 0时,新增记录

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

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

以此类推


--  作者:狐狸爸爸
--  发布时间:2011/12/17 10:04:00
--  

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

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

[此贴子已经被作者于2011-12-17 10:04:05编辑过]

--  作者:唐尸三摆手
--  发布时间:2011/12/17 10:12:00
--  
我做个小例子吧
--  作者:唐尸三摆手
--  发布时间:2011/12/17 10:39:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.foxdb

这是附件
--  作者:狐狸爸爸
--  发布时间:2011/12/17 11:12:00
--  
你只说如何增加行,新增行的各列的内容如何确定?