Merger
Merger用于合并数据。
合并的速度要远低于导入,所以如果有大量数据要引入管理项目中,最好用导入。
属性
DataTableName
指定接收合并数据的数据表的名称,这个表必须是当前项目中已经存在的表。
Header
逻辑型,如果合并的是文本文件,用此属性指定第一行是否是列名称。
FieldMaps
这是一个集合,要合并的表和接收数据的表的字段名称存在不一致的情况下,可以用此集合指定两个表之间字段的对应关系。
假定要合并的表中某一字段的名称为“ID”,合并的时候,需要将该列的内容合并到接收表中的"编号"列,可以设置代码:
Dim mg As New Merger
mg.FieldMaps.Add("ID","编号")
方法
Merge
开始合并数据。
示例一
合并access文件:
Dim
mg As
New
Merger
mg.SourcePath
= "c:\data\销售管理.mdb"
mg.SourceTableName =
"订单"
mg.DataTableName =
"订单"
mg.Merge()
示例二
如果希望出现一个打开文件对话框,合并用户指定的文件,可以参考下面的代码:
Dim
dlg
As New
OpenFileDialog
'定义一个新的OpenFileDialog
dlg.Filter=
"Access文件|*.mdb"
'设置筛选器
If dlg.ShowDialog
=
DialogResult.Ok
Then
'如果用户单击了确定按钮
Dim mg
As New
Merger
mg.SourcePath
= dlg.FileName
mg.SourceTableName
= "订单"
mg.DataTableName
= "订单"
mg.Merge()
End If
示例三
从指定的数据源中合并数据:
Dim
mg As New Merger示例四
FieldMaps和Filter属性的用法示例:
Dim
mg As
New
Merger
mg.SourcePath
= "c:\data\销售管理.accdb"
mg.Format =
"Access2007"
'指定格式
mg.SourceTableName
= "订单"
'指定要合并的表
mg.DataTableName
= "订单"
'指定接收数据的表
mg.FieldMaps.Add("ID","编号")
'将指定ID列的数据合并到编号列中
mg.Filter =
"[日期] > #5/31/1999#"
'指定合并条件
mg.Merge()
'开始合并
示例五
合并DBF文件:
Dim
mg As
New
Merger
mg.SourcePath
= "c:\data\"
'指定数据文件所在目录
mg.Format =
"dbase"
'指定格式
mg.SourceTableName
= "订单"
'指定要合并的dbase文件,无需扩展名
mg.DataTableName
= "订单"
'指定接收数据的表
mg.Merge()
'开始合并
合并"c:\data\订单.dbf"文件的数据到当前项目的订单表
示例六
合并文本文件:
Dim
mg As
New
Merger
mg.SourcePath
= "c:\data\"
'指定数据文件所在目录
mg.Format =
"Delimited"
'指定格式
mg.SourceTableName
= "订单"
'指定要合并的文件,无需扩展名
mg.DataTableName
= "订单"
'指定接收数据的表
mg.Merge()
'开始合并
合并文本文件的时候,最好配合有schema.ini文件。
示例七
合并Excel文件:
Dim
mg
As New
Merger
mg.SourcePath
=
"c:\data\销售管理.xls"
mg.Format
= "excel"
'指定格式
mg.SourceTableName
= "订单"
'指定要合并的表
mg.DataTableName
= "订单"
'指定接收数据的表
mg.Merge()
'开始合并
一些Excel文件,可能需要在表名后加上符号$才能正常导入,例如:
Dim
mg
As New
Merger
mg.SourcePath
=
"c:\data\销售管理.xls"
mg.Format
= "excel"
'指定格式
mg.SourceTableName
= "订单$"
'指定要合并的表
mg.DataTableName
= "订单"
'指定接收数据的表
mg.Merge()
'开始合并
示例八
下面是一个批量合并的例子,假定目录c:\data下有多个Excel文件,这些文件都有一个名为订单的表,需要将这些表中的数据批量并到Foxtable的订单表中:
For
Each fl As String In FileSys.GetFiles("c:\Data")示例九
也可以利用打开文件对话框一次选择多个文件来批量合并,例如:
Dim
dlg
As
New
OpenFileDialog
dlg.Filter
=
"Access文件|*.mdb"
dlg.MultiSelect
= True
'允许选择多个文件
If
dlg.ShowDialog
=DialogResult.OK
Then
For Each
fl
As
String
In
dlg.FileNames
Dim
mg
As
New
Merger
mg.SourcePath
=
fl
mg.SourceTableName
= "订单"
mg.DataTableName
= "订单"
mg.Merge()
Next
End If