Foxtable(狐表)用户栏目专家坐堂 → 如何实现多表表结构不相同合并在一表数据不重复?


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

主题:如何实现多表表结构不相同合并在一表数据不重复?

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


加好友 发短信
等级:五尾狐 帖子:1065 积分:7055 威望:0 精华:0 注册:2020/11/4 22:15:00
如何实现多表表结构不相同合并在一表数据不重复?  发帖心情 Post By:2023/3/23 15:16:00 [只看该作者]

如何实现多表表结构不相同合并在一表数据不重复?如图

图片点击可在新窗口打开查看此主题相关图片如下:合并.jpg
图片点击可在新窗口打开查看




上面代码无法实现,如何做才能实现
[此贴子已经被作者于2023/3/23 17:28:25编辑过]

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


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

For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("表D").find("产品编号='" & Vals(i)(0) & "'")
if dr is nothing then
dr  = DataTables("表D").AddNew()
    dr("产品编号") = Vals(i)(0)
end if
    dr("产品编号") = Vals(i)(0)
    dr("品名") = Vals(i)(1)
    dr("表A数量") = Vals(i)(2)
Next

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


加好友 发短信
等级:五尾狐 帖子:1065 积分:7055 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/3/23 16:07:00 [只看该作者]

For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("表D").find("产品编号='" & Vals(i)(0) & "'")
if dr is nothing then
dr  = DataTables("表D").AddNew()
    dr("产品编号") = Vals(i)(0)
end if
    dr("产品编号") = Vals(i)(0)
    dr("品名") = Vals(i)(1)
    dr("表C数量") = Vals(i)(2)
Next


老师,我测试一下,表C少二个数据,D1、D2的值没加入表D,会漏数据,如何处理


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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/23 16:17:00 [只看该作者]

代码没有问题,请上传实例测试

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


加好友 发短信
等级:五尾狐 帖子:1065 积分:7055 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/3/23 16:32:00 [只看该作者]


[此贴子已经被作者于2023/3/23 17:27:42编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1065 积分:7055 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/3/23 16:33:00 [只看该作者]

测试几次,还是有漏数据

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/23 16:37:00 [只看该作者]

Dim Vals2 As List(Of String())
Vals2 = DataTables("表C").GetValues("产品编号|品名|数量")
For i As Integer = 0 To Vals2 .Count - 1

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


加好友 发短信
等级:狐神 帖子:4633 积分:33809 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2023/3/23 17:21:00 [只看该作者]

Dim bm As String = "表D1"
Dim jba As New SQLJoinTableBuilder(bm, "表A")
jba.AddCols("产品编号", "品名", "数量 as 表A数量")
Dim da As fxDataSource = jba.BuildDataSource()

Dim jbb As New SQLJoinTableBuilder(bm, "表B")
jbb.AddCols("产品编号", "品名", "数量 as 表B数量")

Dim jbc As New SQLJoinTableBuilder(bm, "表C")
jbc.AddCols("产品编号", "品名", "数量 as 表C数量")

Dim Cols As String = "产品编号|品名"
da.Combine(Cols.split("|"), jbb.BuildDataSource(), Cols.split("|"))
da.Combine(Cols.split("|"), jbc.BuildDataSource(), Cols.split("|"))
da.Show(bm)
[此贴子已经被作者于2023/3/23 17:21:43编辑过]

 回到顶部