Foxtable(狐表)用户栏目专家坐堂 → 条件删除


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

主题:条件删除

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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
条件删除  发帖心情 Post By:2012/11/14 13:01:00 [只看该作者]

表A与表B 都有 单号 编号  名称 的列

表A里存在的行,如果表B都存在,那么删除表B等于表A的行. 

表A里存在的行,如果表B有一行不存在,那么返回并提示不能删除.

 

For Each r2 As DataRow In DataTables("表a").DataRows

     For Each dr2 As DataRow In DataTables("表b").Select("单号 = '" & r2("单号") & "' And 编号 = '" & r2("编号") & "' And 名称 = '" & r2("名称") & "'")
        If dr2 IsNot Nothing Then
             dr2.Delete 
        Else
             MessageBox.Show("不能删除!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
             Return '那么返回
        End If
    Next
Next

 

调试N次都不行,求助

谢谢!


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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2012/11/14 13:50:00 [只看该作者]

楼主:我测试了一下,好像是说Return 有问题,可改为exit for,这样运行正常;

另:我设的这三列都是字段列,你看看是不是,如有数字列的话,合成变量还需要改一下


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/11/14 14:16:00 [只看该作者]

全部存在才执行删除,如果有一行不存在就不执行删除,好怪的要求。

可以考虑增加辅助列来解决。


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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
  发帖心情 Post By:2012/11/14 14:26:00 [只看该作者]

非常感谢!

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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
  发帖心情 Post By:2012/11/14 14:27:00 [只看该作者]

非常感谢!

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/11/14 14:32:00 [只看该作者]

这样试试

 

DataTables("表A").DataCols.Add("标记", Gettype(Boolean))
DataTables("表B").DataCols.Add("标记", Gettype(Boolean))
For Each dr As DataRow In DataTables("表A").DataRows
    For Each dr2 As DataRow In DataTables("表B").Select("单号 = '" & dr("单号") & "' And 编号 = '" & dr("编号") & "' And 名称 = '" & dr("名称") & "'")
        If dr2 IsNot Nothing Then
            dr2("标记") = True
            dr("标记") = True
        End If
    Next
Next
If DataTables("表A").Compute("count(标记)","标记 <> true") = 0
    DataTables("表B").DeleteFor("标记 = true")
Else
    MessageBox.Show("不能删除!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
DataTables("表A").DataCols.Delete("标记")
DataTables("表B").DataCols.Delete("标记")


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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
  发帖心情 Post By:2012/11/14 15:39:00 [只看该作者]

非常感谢您对我的帮助!


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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
  发帖心情 Post By:2012/11/14 16:03:00 [只看该作者]

问题已经解决!

谢谢!

 


 回到顶部