以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 跨表复制并自动更新 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145801) |
-- 作者:long9547 -- 发布时间:2020/2/7 18:00:00 -- 跨表复制并自动更新 由于看实例没找到答案,请给出完整代码 表A复制表B内容 如表B内容发生变化,表A同步表B内容 表A 表B 1列 2列 1列 2列
|
-- 作者:有点蓝 -- 发布时间:2020/2/7 20:01:00 -- 2个表通过什么进行关联?比如订单表和订单明细可以通过订单编号关联。如果没有关联的数据,无法做同步 |
-- 作者:long9547 -- 发布时间:2020/2/8 1:00:00 -- 能理解有点蓝的意思,没有关联的对象,如果有关联我想我自己也能处理好 在论坛里找了个 代码比较适合我的要求,就是代码上有问题,还请帮调整下 Dim f As New Filler f.SourceTable = DataTables("订单") \'指定数据来源 f.SourceCols = "产品,客户" \'指定数据来源列 f.DataTable = DataTables("统计") \'指定数据接收表 f.DataCols = "产品,客户" \'指定数据接收列 f.Distinct = False f.Fill() \'填充数据 内容会重复出现 如果用 f.Append会报错
|
-- 作者:有点蓝 -- 发布时间:2020/2/8 8:57:00 -- 这种方式只能直接贴出数据,无法去重。不管使用什么方式,如果要去重,先解决2楼的问题 |
-- 作者:long9547 -- 发布时间:2020/2/9 23:57:00 -- 查了几天数据 问题解决了 我有些不赞同有点蓝的观点, 我用这段代码解决了不用关联可以复制的问题,虽然我不懂代码但还是做到了,只是要往下面加内容却不行了,复制的目的就是为了加内容做表 Dim f As New Filler
f.SourceTable = DataTables("表A") \'指定数据来源 f.SourceCols = "第一列,第二列" \'指定数据来源列 f.DataTable = DataTables("表B") \'指定数据接收表 f.DataCols = "第一列,第二列" \'指定数据接收列 f.Distinct = False DataTables("表B").DataRows.Clear() \'清除原来的数据 f.Fill() \'填充数据 |
-- 作者:有点蓝 -- 发布时间:2020/2/10 8:49:00 -- 往下面加内容怎么不行?无法新增行?还是无法录入数据? |
-- 作者:long9547 -- 发布时间:2020/2/10 17:57:00 -- 因为Clear 把多余的表格都删除了 表A多少内容,表B就多少内容没有多余的行 有没有其他办法添加行 或者针对性的修改下 添加几行 |
-- 作者:有点蓝 -- 发布时间:2020/2/10 20:18:00 -- 如果要第一列,第二列数据不重复导入,换种方式吧:http://www.foxtable.com/webhelp/topics/1533.htm Dim Cols1() As String = {"第一列","第二列"} For Each dr1 As DataRow In DataTables("表A").datarows Dim dr2 As DataRow = DataTables("表B").Find("第一列=\'" & dr1("第一列") & "\' and 第二列=\'" & dr1("第二列") & "\'") If dr2 Is Nothing Then dr2 = DataTables("表B").AddNew() For i As Integer = 0 To Cols1.Length -1 dr2(Cols2(i)) = dr1(Cols1(i)) Next End If Next |