Foxtable(狐表)用户栏目专家坐堂 → Merger合并access 怎么写条件:判断当前文件中的表里面某行数据与目标文件表里面的某行数据,所有字段都相同,就不合并,反之就合并当前文件到目标文件表里面。


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

主题:Merger合并access 怎么写条件:判断当前文件中的表里面某行数据与目标文件表里面的某行数据,所有字段都相同,就不合并,反之就合并当前文件到目标文件表里面。

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/20 20:31:00 [显示全部帖子]

Merger没有办法写这种条件。只能是遍历当前表所有行,然后使用find根据身份证查询目标表,再遍历所有列,逐个列数据判断是否相同

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/21 8:42:00 [显示全部帖子]

动态添加数据源连接到access数据库:http://www.foxtable.com/webhelp/topics/1944.htm,然后一样使用GetTableNames这种方法获取数据库表。这种方法不要期望有什么效率。

给个相对简单的方法自己参考一下,在所有需要同步的表中添加一个【更新时间】列,可以到datacolchanged时间给【更新时间】列赋值为最新的电脑时间。
1、到目的表查询表中最大的【更新时间】列值,比如值为:2022-3-20 08:30:00
2、到来源表查询大于上面查询出来的【更新时间】列值(查询大于2022-3-20 08:30:00的数据)的数据,然后更新到目的表中

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/21 10:02:00 [显示全部帖子]

Filler只能用于已添加到外部表管理中的表格,不能用于临时添加的数据源的表格,参考这种:http://www.foxtable.com/webhelp/topics/2137.htm

更新时间可以这样处理

dim d as date = DataTables("员工").compute("max(更新时间)")
Dim cmd As New SQLCommand
Dim
 dt As DataTable
Connections.Add("B","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\abc.mdb;Persist Security Info=False")
cmd.Conn
ectionName = "B"
cmd.CommandText = 
"SELECT * From {员工} where 
更新时间 >#" & d & "#"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
dim nr as datarow = DataTables("员工").Find("身份证号码 = '" & dr("身份证号码") & "'")
    If
 
nr Is Nothing Then
nrDataTables("员工").AddNew()
    End If
        For Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next

Next

 回到顶部