想要实现一个功能 就是考勤表每月都会合并到系统里 形成后台数据
由于并不是每月只合并一次数据 有时候会导入好几次 这就需要筛选掉重复的数据
我的想法是这样的 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编辑过]