Foxtable(狐表)用户栏目专家坐堂 → 索引 1 不是为负数,就是大于行数


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

主题:索引 1 不是为负数,就是大于行数

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


加好友 发短信
等级:小狐 帖子:303 积分:2363 威望:0 精华:0 注册:2015/10/14 16:55:00
索引 1 不是为负数,就是大于行数  发帖心情 Post By:2016/1/15 15:38:00 [显示全部帖子]

 

请问下面这段代码,为什么只能循环一次,哪里不对吗?(执行到5就报错)

 

Dim tb As Table = Tables("库存调整_调增table1")
Dim tb2 As Table = Tables("库存调整_调减table1")
For i As Integer = tb.Rows.Count -1 To 0 Step -1 ''遍历所有行
    For i2 As Integer = tb2.Rows.Count -1 To 0 Step -1 ''遍历所有行
            If i >=0 AndAlso i2 >= 0 AndAlso i = i2 AndAlso tb.Rows(i).Checked AndAlso tb2.Rows(i2).Checked AndAlso ckb.Checked = False Then '二者位置相同,且都选中,没开启
MessageBox.show(1)
                If tb.Rows(i).IsNull("调增数量") = False AndAlso tb2.Rows(i2).IsNull("调减数量") = False Then '二者数量都不为空
MessageBox.show(2)
                    If cmb.value.Contains("901") AndAlso tb.rows(i)("编码") = tb2.rows(i2)("编码") Then '901状态调整,编码要相同
MessageBox.show(3)
                        Dim r3 As Row = Tables("库存").AddNew() '增加数据
                        r3("物料编码") = tb.rows(i)("编码")
                        r3("移动单元") = tb.rows(i)("调增单元")
                        r3("移动数量") = tb.rows(i)("调增数量")
                        r3("移动代码") = tb.rows(i)("移动代码")
                        r3("移动文本") = tb.rows(i)("移动文本")
                        r3("备注") = tb.rows(i)("备注")
                        r3.Save()
MessageBox.show(4)
                        tb.rows(i).Delete()
                        Dim r32 As Row = Tables("库存").AddNew() '相对增加数据
                        r32("物料编码") = tb2.rows(i2)("编码")
                        r32("移动单元") = tb2.rows(i2)("调减单元")
                        r32("移动数量") = tb2.rows(i2)("调减数量")
                        r32("移动代码") = tb2.rows(i2)("移动代码")
                        r32("移动文本") = tb2.rows(i2)("移动文本")
                        r32("备注") = tb2.rows(i2)("备注")
                        r32.Save()
                        tb2.rows(i2).Delete()
MessageBox.show(5)

................

 

错误提示:

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.11.2.1
错误所在事件:窗口,库存调整,库存调整Button1,Click
详细错误信息:
索引 1 不是为负数,就是大于行数。

 


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


加好友 发短信
等级:小狐 帖子:303 积分:2363 威望:0 精华:0 注册:2015/10/14 16:55:00
  发帖心情 Post By:2016/1/15 17:57:00 [显示全部帖子]

排查发现,在第二次循环时,i的值没有递减,还是上一个循环的值,i2的值是正常的

请问是怎么回事呢?

 

或者有什么别的法子,可以不用for ... next

代码的目的是,遍历两个表中的数据,比对相同行的数据是否满足条件,执行条件后,删除对应的行

 

 

For i As Integer = tb.Rows.Count -1 To 0 Step -1 ''遍历所有行
For i2 As Integer = tb2.Rows.Count -1 To 0 Step -1 ''遍历所有行


 回到顶部