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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
Merger合并access 怎么写条件:判断当前文件中的表里面某行数据与目标文件表里面的某行数据,所有字段都相同,就不合并,反之就合并当前文件到目标文件表里面。  发帖心情 Post By:2022/3/20 12:12:00 [显示全部帖子]

Export导出Access  直接代码给Access设定一个密码,确保数据不被非授权打开!Merger合并access 代码定义密码后合并数据,怎么写条件:判断当前文件中的表里面某行数据与目标文件表里面的某行数据,所有字段都相同,就不合并,反之就合并当前文件到目标文件表里面。

每个表都有一个主键  身份证号 

 

当前代码如下:

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Access文件|*.mdb" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim lst As List(Of String)
    lst = Connections("廉政档案").GetTableNames
    For Each nm As String In lst
        Dim ex As New Exporter
        ex.SourceTableName = nm '指定导出表
        ex.filepath = dlg.FileName  '指定目标文件
        ex.Export() '开始导出
    Next

CompactAccessFile(dlg.FileName,"163.com")
    Dim Result As DialogResult
    Result = MessageBox.Show("数据备份完毕,是否需要打开文件所在目录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then      
        Dim Proc As New Process
        Proc.File = FileSys.GetParentPath(dlg.FileName)
        Proc.Start()
    End If
End If

 

 

导入代码:

Dim dlg As New openFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Access文件|*.mdb" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim file As String =dlg.FileName
    'For Each File As String In Filesys.GetFiles(dlg.FileName)
    If File.EndsWith(".mdb") '如果后缀名是mdb,说明此文件是access格式
       
        Dim lst As List(Of String)
        lst = Connections("廉政档案").GetTableNames
        For Each nm As String In lst
            Dim mg As New Merger
            mg.SourcePath = file

            mg.Filter = "" '指定合并条件

            mg.PassWord="163.com"
            mg.SourceTableName = nm
            mg.DataTableName = nm
            mg.Merge()

        Next

            Filesys.DeleteFile(File) '合并后删除文件
    Else
        MessageBox.Show("文件格式不对,请检查并选择mdb格式文件!","温馨提示")
    End If
    'Next
   
    MessageBox.Show("数据导入完毕|", "提示")
   
End If

[此贴子已经被作者于2022/3/20 15:00:05编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Merger没有办法写这种条件。只能是遍...  发帖心情 Post By:2022/3/21 2:02:00 [显示全部帖子]

当前代码实现遍历廉政档案数据源中的所有表及字段

怎么在判断所选择的acc数据文件里面的所有表及字段  与廉政档案数据源中的所有表及字段是否相同呢?如果相同就不写入  繁殖就写入

 

 

当前代码如下:【实际运行效率也不高,还要麻烦老师多多指导下!谢谢!】

 

' 获取身份证号不重复值
Dim Products As List(Of String)
Products = DataTables("干部花名册").GetValues("身份证号")
'获取数据源廉政档案里面的所有表
Dim lst As List(Of String)
lst = Connections("廉政档案").GetTableNames
For Each nm As String In lst
    '下列表名不含身份证号字段,先予以排除
    If nm.Contains("编号") Or nm.Contains("代码表") Or nm.Contains("参数设置") Or nm.Contains("单位归属") Or nm.Contains("数据操作日志") Or nm.Contains("干部信息") Or nm.Contains("档案目录")Then
    Else
        output.Show(nm)
        '从包含身份证号字段的所有表现遍历
        For Each bb As DataRow In DataTables(nm).DataRows
            '遍历身份证号,并查找对应的表中满足身份证号的数据行   如果有就开始遍历列
            For Each Product As String In Products
                Output.Show(Product)
                bb.DataTable.Find("身份证号='" & Product & "'")
                If bb IsNot Nothing Then
                    For Each cc As DataCol In DataTables(nm).DataCols
                        'output.show(cc.name)
                        'output.show("1")
                        output.show(bb(cc.name))
                    Next
                End If
            Next
           
        Next
    End If
Next


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)动态添加数据源连接到access数据库:...  发帖心情 Post By:2022/3/21 9:42:00 [显示全部帖子]

'A为目标表   b为来源表

假定所有表都已经添加了更新时间列,怎么写判断条件呢?

 

当前代码如下:


Dim lst As List(Of String)
lst = Connections("A").GetTableNames    

Connections.Add("B","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\abc.mdb;Persist Security Info=False")

Dim lst1 As List(Of String)
lst1 = Connections("B").GetTableNames
For Each nm As String In lst
   
    For Each nm1 As String In lst1
       
        Dim f As New Filler
        f.SourceTable = NM '指定数据来源
        f.DataTable = NM1 '指定数据接收表
       
        F.Filter="更新时间='" & ……("更新时间") & "'"
        f.Fill() '填充数据
       
    Next
   
Next


 回到顶部