以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]循环  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=150367)

--  作者:crazyfengyu
--  发布时间:2020/5/28 9:53:00
--  [求助]循环
dim dds as List(Of datarow)
dds = datatables("订单").Select("[商品]=\'电池\'","数量")

1.dds查询到的结果是否会按照数量多少从小到大排列
2.如何判断dds是否有数据使用  dds.Length > 0 吗
3.for each dd as datarow in dds
循环过程中如何获取到当前下标
  next

--  作者:有点蓝
--  发布时间:2020/5/28 10:02:00
--  
1、会
--  作者:crazyfengyu
--  发布时间:2020/5/28 10:22:00
--  
dim dds as List(Of datarow)
dds = datatables("订单").Select("[商品]=\'电池\'","数量")

for i as integer = 0 to dds.count -1
dds(i)("数量")    -------  这种循环如果集合里面是行的话,是不是这样取值?
next

--  作者:有点蓝
--  发布时间:2020/5/28 10:31:00
--  
是的
--  作者:crazyfengyu
--  发布时间:2020/5/28 10:52:00
--  
dim dds as List(Of datarow)
dds = datatables("订单").Select("[商品]=\'电池\'","数量")
dim num as integer = 0

for i as integer = 0 in dds.count -1
if dds(i)("盒数") > 1 then
for j as integer = 0 in dds(i)("盒数")
num = num + dds(i)("数量")
if num > 100 then
exit for
end if
end if
else

end if
next

可以这样进行循环嵌套循环吧?如果找到满意的结果,里面加粗的exit for是直接退出2层循环还是只能退出一层,如果只退出一层,是不是只能使用一个临时变量去判断是否需要退出外层循环?


--  作者:有点蓝
--  发布时间:2020/5/28 11:01:00
--  
只退出一层。另外for i的用法还是请再认真看看吧:http://www.foxtable.com/webhelp/topics/0225.htm

for i as integer = 0 to dds.count -1

--  作者:crazyfengyu
--  发布时间:2020/5/28 11:05:00
--  
不好意思,上面的问题代码是我在问题窗口直接打的,不是开发代码复制的,写顺手了,错了,所以跳出2层就需要额外创建flag判断了?
--  作者:有点蓝
--  发布时间:2020/5/28 11:06:00
--  
是的
--  作者:crazyfengyu
--  发布时间:2020/5/28 14:19:00
--  
for i as integer = 0 to dds.count -1

if i = dds.count -1 then
-------
end if

next


循环中的判断的 i = dds.count -1 不会进行赋值运算吧,只会执行判断吧?(写多了其他语言的都是 == 判断,有点不确定,流程比较发杂,测试跑到这里可能需要很多操作)

--  作者:有点蓝
--  发布时间:2020/5/28 14:21:00
--  
没有问题。vb都是一个=号判断,不是赋值