Foxtable(狐表)用户栏目专家坐堂 → 删除“入库单”及其“入库单明细”的代码怎么写?


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

主题:删除“入库单”及其“入库单明细”的代码怎么写?

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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的行;最终的结果是一些该被删除的行没有被删除,而一些不该被删除的行却被删除了 ,这样的错误初学者很容易犯,务必留意。


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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


 回到顶部