以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]快速复制 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108606) |
-- 作者:huhuyq -- 发布时间:2017/10/25 22:18:00 -- [求助]快速复制 各位老师, 如何能快速实现,A表中第一列符合某一条件则自动添加到B表第一列,但A表某行删除时B表相应列不删除,可建立关联。我认为是快速比较两个表。 遍历有点慢,谢谢! Dim nt As List(Of String) nt = DataTables("通讯录").GetValues("Chinese_Name") Dim ny As List(Of String) ny = DataTables("员工").GetValues("Chinese_Name","Mobilization_to_Kuwait_From_Boarding Is not Null And Company = \'项目部\'") For Each n As String In ny If nt.Contains(n) = False Then Dim dr1 As DataRow dr1 = DataTables("员工").Find("Chinese_Name = \'" & n & "\' and Mobilization_to_Kuwait_From_Boarding Is not Null") If dr1 IsNot Nothing Then \'如果找到的话 Dim dr2 As DataRow = DataTables("通讯录").AddNew dr2("Chinese_Name") = dr1("Chinese_Name") dr2("English_Name") = dr1("English_Name") dr2("Department") = dr1("Personnel_Classify_Department") dr2("Position") = dr1("Personnel_Classify_Position") dr2("Company") = dr1("Company") End If End If Next DataTables("通讯录").Save() |
-- 作者:有点甜 -- 发布时间:2017/10/25 23:02:00 -- 你处理的数据较多?一般是save影响效率,你去掉这句看看 DataTables("通讯录").Save() |
-- 作者:有点甜 -- 发布时间:2017/10/25 23:05:00 -- 你尝试把find去掉,直接循环员工表每一行,这样就不需要find某一行了。 |
-- 作者:huhuyq -- 发布时间:2017/10/26 16:25:00 -- 因为我好多地方要用到类似的功能,A表和B表第一列值是一样的,查找出A表符合一定条件的行,然后两表第一列做比较,并把A表中存在的B表中没有的添加到B表。 我处理的数据将近50万行,这要作比较感觉效率太慢,不知道又没什么效率高点的办法?
|
-- 作者:有点甜 -- 发布时间:2017/10/26 16:47:00 -- 直接用sql语句处理,参考代码
insert into {表A} (第一列,第二列,第三列) Select b.第一列,b.第二列,b.第三列 from {表B} as b left join {表a} as a on b.第四列 = a.第四列 where a.第四列 is null |
-- 作者:huhuyq -- 发布时间:2017/10/26 19:20:00 -- 谢谢老师!还是SQL速度快啊。 老师foxtable的保存效率确实较慢,请什么命令可以替代啊?
|
-- 作者:有点甜 -- 发布时间:2017/10/26 19:38:00 -- 参考
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98689&replyID=680089&skin=1
|