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


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

主题:遇到了一个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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/6 21:09:00 [只看该作者]

执行这个代码,看弹出什么

 

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


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


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

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

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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/6 21:31:00 [只看该作者]

以下是引用magus1123在2018/9/6 21:27:00的发言:
弹出了很多个对话框、全是1、10、1、10之类的数字

 

msgbox(sum) 没有改变?一直是 10、10、10、10.....这样下去?那怎么可能大于50?


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


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

就像这样

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


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


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

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


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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/6 21:40:00 [只看该作者]

以下是引用magus1123在2018/9/6 21:39:00的发言:
但是由于行数不够,要循环几次,所以想着加了Do While 但是一加上去就死机了。。

 

那你就加上do while然后加上msgbox弹出值看吧。


 回到顶部
总数 13 1 2 下一页