删除相同列数时出错

hahahahaha1234567890 2008-09-19 12:46:45
我有2个窗体
分别为A窗体和B窗体


A窗体里有一个GRID (GRIDA) ,,B窗体里有一个GRID (GRIDB)

GRIDA 如下
A1列 A2列
3 4
5 6
3 8

GRIDB 如下
B1列 B2列 B3列
3 9 (是打勾的小方框) 第一行
8 8 (是打勾的小方框) 第二行

GRIDB里的B1列的值和GRIDA里的A1列是关联的

当我在GRIDB里的第1行B3列里打上勾时,我要使GRIDA里的A1列里所有为3的行都删除.
现在我总是删到最后一行的时候出错.

For mFrm.introwremove = 1 To mFrm.Gridmain.Rows.Count - 1
If mFrm.Gridmain.Rows(mFrm.introwremove).Item("SalePlan_KeyName") = strkeyname Then
mFrm.Gridmain.Rows.Remove(mFrm.introwremove)
End If
Next
注:1.mFrm是窗体A
2.strkeyname 是窗体B GRIDB里B1列的值

请问我这个代码要如何修改啊?
...全文
101 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlongwuhui 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hahahahaha1234567890 的回复:]
按 第2个方法来做,反而多出来几条数据了 多出来2条数据
[/Quote]
mFrm.Gridmain.Rows.Remove(mFrm.introwremove) 删除一条后,你的循环计数还是会增加1,而Gridmain中的行数都因为删除了一条序号都减1了,所以你每删除一条,需要对循环计数的值要减1(让其重判断删除的那条的序号对应的行).你在mFrm.Gridmain.Rows.Remove(mFrm.introwremove) 后加一句mFrm.introwremove=mFrm.introwremove-1试试
  • 打赏
  • 举报
回复
按 第2个方法来做,反而多出来几条数据了 多出来2条数据

你有QQ吗,我+你
  • 打赏
  • 举报
回复
按 第2个方法来做,反而多出来几条数据了
  • 打赏
  • 举报
回复
如何改反循环啊
yanlongwuhui 2008-09-19
  • 打赏
  • 举报
回复
因为你删除了一条,所以当你循环到最后的时候,实际已经超出总行数了。解决方法:
1.循环由正向循环,改成反向循环;
2.If mFrm.Gridmain.Rows(mFrm.introwremove).Item("SalePlan_KeyName") = strkeyname Then
前增加:if mFrm.introwremove> mFrm.Gridmain.Rows.Count - 1 then exit for
fengboawhf 2008-09-19
  • 打赏
  • 举报
回复
你用 For each tempRow as datarow in mFrm.Gridmain.Rows
...............
next
  • 打赏
  • 举报
回复
现在是删最后一太哦数据总是删不了啊,
请问怎么 弄啊?
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yanlongwuhui 的回复:]
mFrm.introwremove的值是超过Gridmain行的总数了。有删除操作时,从后往前进行循环判断。把循环
For mFrm.introwremove = 1 To mFrm.Gridmain.Rows.Count - 1 改成
For mFrm.introwremove = mFrm.Gridmain.Rows.Count - 1 To 1 STEP -1
[/Quote]

按照你写的出现语法错误
yanlongwuhui 2008-09-19
  • 打赏
  • 举报
回复
mFrm.introwremove的值是超过Gridmain行的总数了。有删除操作时,从后往前进行循环判断。把循环
For mFrm.introwremove = 1 To mFrm.Gridmain.Rows.Count - 1 改成
For mFrm.introwremove = mFrm.Gridmain.Rows.Count - 1 To 1 STEP -1

  • 打赏
  • 举报
回复
[Quote=引用 1 楼 astromercy 的回复:]
加个TRY语句,
[/Quote]

怎么加啊,能不能写一下啊?
  • 打赏
  • 举报
回复
总是在最后一条数据报错

是这句 If mFrm.Gridmain.Rows(mFrm.introwremove).Item("SalePlan_KeyName") = strkeyname Then 报错.

说超出索引范围,请问这个应该如何解决啊?
astromercy 2008-09-19
  • 打赏
  • 举报
回复
加个TRY语句,

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧