Foxtable(狐表)用户栏目专家坐堂 → [求助]合并数据的时候对比 后台数据 的代码优化~~~


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

主题:[求助]合并数据的时候对比 后台数据 的代码优化~~~

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]合并数据的时候对比 后台数据 的代码优化~~~  发帖心情 Post By:2012/5/31 17:54:00 [只看该作者]

想要实现一个功能 就是考勤表每月都会合并到系统里  形成后台数据

由于并不是每月只合并一次数据  有时候会导入好几次   这就需要筛选掉重复的数据 

 

我的想法是这样的 1.先建立一个临时的 【中转表】  蓝色部分

                        2.然后再合并外来的excel数据    红色部分

3.最后进行匹配重复的数据 在【窗口表】 DataTables("窗口表").AddNew()  用以保存到后台  【窗口表】是select的 后台的【考勤机】表的                

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
dlg.MultiSelect = False
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim Result As DialogResult
    Result = Messagebox.Show("确定导入数据吗?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.yes Then
        Dim dtb1 As New DataTableBuilder("中转表")
        dtb1.Build()
        DataTables("中转表").Fill("Select * From [考勤机] where [_identify] is null","华泰内控系统-ERP",False)
       
        Dim mg As New Merger
        mg.SourcePath = dlg.filename
        mg.Format = "excel" '指定格式
        mg.SourceTableName = "Sheet 1$" '指定要合并的表
        mg.DataTableName = "中转表" '指定接收数据的表
        mg.Merge() '开始合并
       
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELECT * From {考勤机}"
        dt = cmd.ExecuteReader()
        For Each dr As DataRow In DataTables("中转表").DataRows
            If dt.Find("登记号码 = '" & dr("登记号码") & "' And 日期= '" & dr("日期") & "'") Is Nothing Then
                Dim nr As DataRow = DataTables("窗口表").AddNew()
                For Each dc As DataCol In dt.DataCols
                    nr(dc.name) = dr(dc.name)
                Next
            End If
        Next
        DataTables("窗口表").save
        DataTables.delete("中转表")
    End If
End If

 

总感觉有些复杂  运行慢(由于要建立临时表并逐行匹配) 请问各位  有啥好的办法~~~~~~~~~~~

[此贴子已经被作者于2012-5-31 17:54:56编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/31 20:41:00 [只看该作者]

用Filter指定合并条件后。直接保存那个 中转表 就可以了。

 回到顶部