以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  A、B表 数据同步  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=138385)

--  作者:fuucc
--  发布时间:2019/7/30 10:59:00
--  A、B表 数据同步
两个表格字段一模一样。想实现A表数据提交到B表,原来是清空B表,再把A表数据复制到B表,对于少量数据,这边效率还可以。
但对于6万以上数据,这样效率很低,需要很长时间。
有没有办法,只同步差异部分。如已身份证为关键字段,A表有的B表没有的,就新增到B表,B表有的A表没有的,就到B表删除。就类似于数据同步功能。
部分字段修改,目前没有想到如何处理。
这是大概思路,不知可行否,请专家抽空指导,谢谢!


--  作者:有点蓝
--  发布时间:2019/7/30 11:24:00
--  
改为外部数据源,使用SQL处理

insert into B表 select * from A表 where 身份证 not in (select  身份证 from B表)

--  作者:fuucc
--  发布时间:2019/7/30 11:33:00
--  
有点蓝专家,A表是内部数据源,B表是外部数据源,是否也可以套用以上处理?
--  作者:有点蓝
--  发布时间:2019/7/30 11:39:00
--  
不能了。找出b表最大的主键值,只把大于这个主键的数据填充过去

Dim id As Integer = DataTables("B表").Compute("Max(_Identify)")
Dim f As New Filler
f.SourceTable = DataTables("A表") \'指定数据来源
f.DataTable = DataTables("B表") \'指定数据接收表
f.Filter = "[_Identify] > " & id
f.Fill() \'

--  作者:fuucc
--  发布时间:2019/7/30 11:52:00
--  
把A的身份证存为LIST数组,然后在B表处理 not in,可行否?
--  作者:有点蓝
--  发布时间:2019/7/30 12:03:00
--  
不可行。不同数据源无法使用SQL处理
--  作者:fuucc
--  发布时间:2019/7/30 12:11:00
--  
内部数据源的DeleteFor有没有 not in 这种SQL方法呢
--  作者:fuucc
--  发布时间:2019/7/30 12:14:00
--  
 DataTables("zxztball").DeleteFor("[xueqi]=\'" & Tables("xqnf").Rows(0)("xueqi") & "\'")
这句是可行的,可不可以加个NOT in 条件。

--  作者:fuucc
--  发布时间:2019/7/30 13:16:00
--  
感谢,发现是可行的,保存数据到一个数组,然后用Deletefor就行了。