以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 删除“入库单”及其“入库单明细”的代码怎么写? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25884) |
-- 作者:客家阿哥 -- 发布时间:2012/11/19 13:20:00 -- 删除“入库单”及其“入库单明细”的代码怎么写? 删除“入库单”及其“入库单明细”的代码怎么写? |
-- 作者:客家阿哥 -- 发布时间:2012/11/19 13:22:00 -- For Each r As Row In Tables("入库单.入库明细").Rows
解锁能正常运行,删除则不正常,只能删除一部分 |
-- 作者:lin_hailun -- 发布时间:2012/11/19 13:48:00 -- 帮助里的一段文字,找不到链接了。 7.213 Delete 此方法用于删除行。 例如删除当前表的当前行: CurrentTable.Current.Delete() 再例如删除订单表选定的多行: With Tables("订单") For i As Integer = .BottomPosition To .TopPosition Step -1 .Rows(i).Delete() Next End With 上面的代码中,我们从选定区域的最后一行开始删除,每删除一行,循环变量i减1。 你也许会问,为什么不这样: With CurrentTable For i As Integer = .TopPosition To .BottomPosition .Rows(i).Delete() Next End With 表面上看,上面的代码没问题,但是实际上,却根本不会正确执行,原因: 假定TopPosition 属性等于6,第一次循环,i的值是6,代码会正确地删除位置6的行;第二次循环,i的值是7,于是删除位置7的行,但是原来位置6的行被删除后,位置7的行成为位置6的行,你现在删除位置7的行,实际上删除的是原来位置8的行,所以你等于跳过了位置7的行;最终的结果是一些该被删除的行没有被删除,而一些不该被删除的行却被删除了 ,这样的错误初学者很容易犯,务必留意。 |
-- 作者:客家阿哥 -- 发布时间:2012/11/19 15:40:00 -- 按照楼上的方法,要选定明细才能删除。
我现在要的效果的是,选定“入库单”就能把其下面的“明细”删掉。
我用了 With Tables("入库单.入库明细")
删除最后一条数据,出错,最后一条也没有删掉 |
-- 作者:lin_hailun -- 发布时间:2012/11/19 15:48:00 -- 楼主没有看懂具体意思。具体意思是,删除,需要从后面往前面删除,才正确。 With Tables("入库单.入库明细") For i As Integer =.Rows.Count -1 To 0 Step -1 .Rows(i).Locked = False .Rows(i).Delete() Next \' .DataRows.Clear() End With |
-- 作者:客家阿哥 -- 发布时间:2012/11/19 17:03:00 -- 谢谢你啊! 每次对我这种菜鸟型的人这么耐心!!! |