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


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

主题:索引 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 不是为负数,就是大于行数。

 


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/15 15:58:00 [只看该作者]

 看不出什么问题

 回到顶部
帅哥哟,离线,有人找我吗?
文道古月
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 ''遍历所有行


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/16 8:38:00 [只看该作者]

是不是后面的代码跳出循环了。

比对相同行的依据是什么,看代码是按照行位置,那么一个循环就可以了,i=i2还不如,2个表都用同一个索引

 回到顶部