Foxtable(狐表)用户栏目专家坐堂 → 两个表对比,查找并删除没有的行


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

主题:两个表对比,查找并删除没有的行

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
两个表对比,查找并删除没有的行  发帖心情 Post By:2020/6/15 17:18:00 [只看该作者]

表B对比表A,对比3个列字段,如果没有删除表B的行
我是这样写的,但是没有效果
For Each dr As DataRow In DataTables("表A").datarows '循环表的每一行
        DataTables("表B").DeleteFor("spdm<>'" & dr("SPDM") & "' and GG1DM<>'" & dr("GG1DM") & "' and MDDM<>'" & dr("CKDM") & "'")
Next

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/15 17:27:00 [只看该作者]

既然都没有了,也就是不存在,还删除什么?

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 17:47:00 [只看该作者]

说错了,表B对比表A,对比3个列字段,如果表A没有对应的行,删除表B的行

例如表B里面有一行是01,01,01,查找表A有没有01,01,01的行,如果没有,删除表B这一行
[此贴子已经被作者于2020/6/15 17:49:26编辑过]

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 17:51:00 [只看该作者]

感觉应该先写表A变量,然后用下面的代码
For Each dr As DataRow In DataTables("表B").datarows '循环表的每一行
        DataTables("表B").DeleteFor("spdm<>'" & 表A("SPDM") & "' and GG1DM<>'" & 表A("GG1DM") & "' and MDDM<>'" & 表A("CKDM") & "'")
Next
[此贴子已经被作者于2020/6/15 17:55:03编辑过]

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 17:54:00 [只看该作者]

但是我写变量表Dim r As DataTable = DataTables("表A")提示我错误
For Each dr As DataRow In DataTables("表B").datarows '循环表的每一行
        DataTables("表B").DeleteFor("spdm<>'" & 表A("SPDM") & "' and GG1DM<>'" & 表A("GG1DM") & "' and MDDM<>'" & 表A("CKDM") & "'")
Next

红色字段错误
[此贴子已经被作者于2020/6/15 17:56:02编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/15 20:06:00 [只看该作者]

DataTables("表B").sqlDeleteFor("spdm+GG1DM+MDDM not in (select SPDM+GG1DM+CKDM from {表A})")

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 20:30:00 [只看该作者]

谢谢
[此贴子已经被作者于2020/6/15 20:31:34编辑过]

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 20:39:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:
详细错误信息:
语法错误或违反访问规则


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


加好友 发短信
等级:三尾狐 帖子:603 积分:4102 威望:0 精华:0 注册:2019/11/14 23:06:00
  发帖心情 Post By:2020/6/15 20:40:00 [只看该作者]

提示错误!还得麻烦一下蓝老师

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/15 21:02:00 [只看该作者]

如果不是SqlServer,只能这样

Dim dr As DataRow
For i As Integer = DataTables("表B").DataRows.Count - 1 To 0 Step -1
    dr = DataTables("表B").DataRows(i)
    If DataTables("表A").Find("spdm='" & dr("SPDM") & "' and GG1DM='" & dr("GG1DM") & "' and CKDM='" & dr("MDDM") & "'") Is Nothing Then
        dr.Delete
    End If
Next

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