Foxtable(狐表)用户栏目专家坐堂 → [求助]批量删除勾选的行时,如何同步删除相关行的明细!


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

主题:[求助]批量删除勾选的行时,如何同步删除相关行的明细!

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
[求助]批量删除勾选的行时,如何同步删除相关行的明细!  发帖心情 Post By:2018/10/9 15:51:00 [只看该作者]

之前在论坛请教了一个问题,《表中有一列复选框,如何做到删除全部勾选的列》,用了老师的代码,完美解决了,后面又遇到了一个新的问题,就是这些选中的列是有明细的,如何做到删除这些列的同时,能够同步删除这些明细呢?

----------------------

出错代码发布不了,上传到附件!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:出错代码.txt

[此贴子已经被作者于2018/10/9 15:53:02编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/9 15:56:00 [只看该作者]

If MessageBox.show("确实需要删除请点击确定!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)=DialogResult.Cancel Then
    Exit Function
End If
Dim TbName ="添加课程_Table1"
Dim qts As Integer = DataTables(TbName).DataRows.Count
Dim t As Table= Tables("添加课程_Table1")
For i As Integer = t.Rows.count-1 To 0 Step -1
    Dim r = t.Rows(i)
    If r("Select")=True Then
        DataTables("YW_添加课程明细").deletefor("编号='" & r("编号") & "'")
        r.Delete
    End If
Next

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2018/10/9 16:34:00 [只看该作者]

甜老师,这样设置有一个问题,会报错“不存在名称为“YW_添加课程明细”的DataTables”,这是不是因为“YW_添加课程明细”是外部表的缘故,我是一个界面分上下两个table,上面的table显示主信息,下面的显示明细,点击上面的一条主信息,则下面显示对应的明细,如果把表“YW_添加课程明细”改成窗口的明细表,就只能删除其中一条主信息的明细,其它主信息被删除了,但是明细没法同步删除!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/9 16:50:00 [只看该作者]

If MessageBox.show("确实需要删除请点击确定!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)=DialogResult.Cancel Then
    Exit Function
End If
Dim TbName ="添加课程_Table1"
Dim qts As Integer = DataTables(TbName).DataRows.Count
Dim t As Table= Tables("添加课程_Table1")
For i As Integer = t.Rows.count-1 To 0 Step -1
    Dim r = t.Rows(i)
    If r("Select")=True Then
        Tables("窗口表").DataTable.deletefor("编号='" & r("编号") & "'")
        r.Delete
    End If
Next

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/9 16:50:00 [只看该作者]

具体问题,做个实例发上来测试。


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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2018/10/9 17:12:00 [只看该作者]

上面的代码还是只能删除一条主信息的明细,不能删除全部的,本来想做个实例来的,结果发现用的是别人的框架开发的,逻辑和代码比较复杂,没法做成简单的实例发出了!

框架里面主信息表的PositionChanged里面的代码如下:

If e.Table.Current Is Nothing Then '如果Current为Nothing
    '没有选定行时执行的代码
Else
    If Tables(e.form.name & "_Table2").cols.contains("创建人") Then
        foxtools.Tools.Tables(e.form.name & "_Table2").SQLLoad("编号='" & e.Table.Current("编号") & "'")
    End If
End If

这样没点击主信息表不同的行,下面的明细表就会出现该条主信息的全部明细!
[此贴子已经被作者于2018/10/9 17:14:53编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/9 17:15:00 [只看该作者]

只要你表名写对,条件写对,都能删除数据的。

 

请单独做一个对应实例测试,不然别人无法理解你的意思。


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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2018/10/10 11:37:00 [只看该作者]

已经成功解决问题,多谢各位老师指点,完整可用代码分享给大家!

(代码无法上传,上传到附件里了)

附件提示上传成功了,但是找不到附件!!!


[此贴子已经被作者于2018/10/10 11:50:27编辑过]

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


加好友 发短信
等级:幼狐 帖子:132 积分:1358 威望:0 精华:0 注册:2016/10/26 23:32:00
  发帖心情 Post By:2018/10/10 21:51:00 [只看该作者]

请教下楼主,怎么实现的,应该跟你用的是一个框架!能不能把代码贴出来

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


加好友 发短信
等级:幼狐 帖子:132 积分:1358 威望:0 精华:0 注册:2016/10/26 23:32:00
  发帖心情 Post By:2018/10/10 21:52:00 [只看该作者]

最好是实现有勾选的时候删除勾选,没有勾选的时候删除当前定位行

 回到顶部
总数 11 1 2 下一页