Foxtable(狐表)用户栏目专家坐堂 → 遇到了一个Do与For Each嵌套循环的就无响应问题


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

主题:遇到了一个Do与For Each嵌套循环的就无响应问题

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
遇到了一个Do与For Each嵌套循环的就无响应问题  发帖心情 Post By:2018/9/6 21:02:00 [显示全部帖子]

遇到了一个嵌套循环的问题,希望老师帮忙看看

目的是想要做到:
用filter设置条件选择出几行后,判断这几行的累计补货数量总和一列是否大于t3,如果不大于t3,则按照补货数量的排序逐行递增一个t4的补货量,循环递增到这几行的总补货数量大于等于t3的数量
我用的是以下嵌套循环的代码,但是一运行程序就无响应了,不知道是哪里出了问题,希望老师帮忙看看

Dim t3 as Double = 50
Dim t4 as Double = 10
Dim sum As Double = DataTables("本地关联表").Compute("Sum(补货数量)",filter & " And " & "补货数量 >= 0 ")
If sum < t3 Then
Do While sum < t3
For Each dr2 As DataRow In DataTables("本地关联表").Select(filter & " And " & "补货数量 <= 0 ", "补货数量 DESC")
dr2("补货数量") = Math.Ceiling( dr2("补货数量") / t4 ) * t4 + t4
If dr2("补货数量") > 0 Then
sum = sum + t4
End If
Next
Loop
End If

[此贴子已经被作者于2018/9/6 21:08:34编辑过]

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:27:00 [显示全部帖子]

弹出了很多个对话框、全是1、10、1、10之类的数字

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:30:00 [显示全部帖子]

老师写的这一段没有出错提示,正常运行的。

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:35:00 [显示全部帖子]

有改变啊,正常运行的。1、10、1、10、1、10、1、10、1、10、50

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:38:00 [显示全部帖子]

就像这样

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:38:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:39:00 [显示全部帖子]

但是由于行数不够,要循环几次,所以想着加了Do While 但是一加上去就死机了。。

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 21:46:00 [显示全部帖子]

加了do while 和msgbox,然后就自动执行到所有负数都变成整数。因为正好5行,t3设置50,所以程序全部改成10之后结束了。
接着我把t3改成60执行,就死机了。。

 回到顶部
帅哥哟,离线,有人找我吗?
magus1123
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2018/9/6 22:21:00 [显示全部帖子]

感谢老师,已经搞定了。
是因为当所以补货数量都大于0时,在For Each语句中已经找不到满足补货数量<0的产品,而Do While 语句里又没满足总和大于t3,所以卡死了。
还是因为逻辑和各种情况没考虑周全导致的问题。在For Each语句改了一下就正常运行了。谢谢老师指点。 

 回到顶部