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


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

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

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
删除“入库单”及其“入库单明细”的代码怎么写?  发帖心情 Post By:2012/11/19 13:20:00 [只看该作者]

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

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2012/11/19 13:22:00 [只看该作者]

        For Each r As Row In Tables("入库单.入库明细").Rows
            If r("入库单编号") >0 Then
                r.Locked= False
               r.Delete
            End If
        Next

 

解锁能正常运行,删除则不正常,只能删除一部分


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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的行;最终的结果是一些该被删除的行没有被删除,而一些不该被删除的行却被删除了 ,这样的错误初学者很容易犯,务必留意。


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2012/11/19 15:40:00 [只看该作者]

按照楼上的方法,要选定明细才能删除。

 

我现在要的效果的是,选定“入库单”就能把其下面的“明细”删掉。

 

我用了

               With Tables("入库单.入库明细")
                   For i As Integer =0 To .Rows.Count -1
                       .Rows(i).Locked = False
                       .Rows(i).Delete()
                    Next
'                    .DataRows.Clear()
                End With

 

删除最后一条数据,出错,最后一条也没有删掉


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2012/11/19 17:03:00 [只看该作者]

谢谢你啊!

每次对我这种菜鸟型的人这么耐心!!!


 回到顶部