Foxtable(狐表)用户栏目专家坐堂 → [求助]快速复制


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

主题:[求助]快速复制

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


加好友 发短信
等级:幼狐 帖子:106 积分:923 威望:0 精华:0 注册:2017/3/9 9:05:00
[求助]快速复制  发帖心情 Post By: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()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/25 23:02:00 [只看该作者]

你处理的数据较多?一般是save影响效率,你去掉这句看看 DataTables("通讯录").Save()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/25 23:05:00 [只看该作者]

你尝试把find去掉,直接循环员工表每一行,这样就不需要find某一行了。

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


加好友 发短信
等级:幼狐 帖子:106 积分:923 威望:0 精华:0 注册:2017/3/9 9:05:00
  发帖心情 Post By:2017/10/26 16:25:00 [只看该作者]

因为我好多地方要用到类似的功能,A表和B表第一列值是一样的,查找出A表符合一定条件的行,然后两表第一列做比较,并把A表中存在的B表中没有的添加到B表。
我处理的数据将近50万行,这要作比较感觉效率太慢,不知道又没什么效率高点的办法?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:106 积分:923 威望:0 精华:0 注册:2017/3/9 9:05:00
  发帖心情 Post By:2017/10/26 19:20:00 [只看该作者]

谢谢老师!还是SQL速度快啊。
老师foxtable的保存效率确实较慢,请什么命令可以替代啊?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/26 19:38:00 [只看该作者]


 回到顶部