以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  合并数据遇到的问题。。。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=45253)

--  作者:fubblyc
--  发布时间:2014/1/20 11:38:00
--  合并数据遇到的问题。。。

批量合并中,采用下面的帮助:

下面是一个批量合并的例子,假定目录c:\\data下有多个Excel文件,这些文件都有一个名为订单的表,需要将这些表中的数据批量并到Foxtable的订单表中:

For Each fl As String In FileSys.GetFiles("c:\\Data")
    Dim
mg As
New Merger
    mg.SourcePath = fl
    mg.Format =
"excel" \'指定格式
    mg.SourceTableName =
"订单导入" \'指定要合并的表
    mg.DataTableName =
"订单接收" \'指定接收数据的表
    mg.Merge()
\'开始合并
Next

 

遇到的问题:

合并后,总是自动新增加行,并合并在新增加的行中,而不是合并在接收表的空白行的第一行。。。

 

不知道能否解决?


--  作者:Bin
--  发布时间:2014/1/20 11:44:00
--  
你好,这个是自动增加行合并的哦. 

并不是在原来的空白行里填充数据,所以请你先删除原来的空白行哦.

--  作者:fubblyc
--  发布时间:2014/1/20 13:12:00
--  

谢谢Bin老师。

 

有一个问题,看了帮助,没有找到答案,再来请教下Bin老师:

 

想要实现合并的数据是不重复的,比如,导入这个文件夹内所有订单表中不重复的订单号的行的数据。

 

我试过设置【列】的“禁止输入重复值”,但是只是不能合并重复订单号的这一列,重复订单号的其他列的数据一样给合并进去了。。。。

 

 


--  作者:fubblyc
--  发布时间:2014/1/20 14:00:00
--  

我尝试这样子:

合并时可以从文件夹中选择文件,这样可以避免合并入相同的数据。

我参考如下【帮助】:

如果希望出现一个打开文件对话框,合并用户指定的文件,可以参考下面的代码:

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

 

我将dlg.Filter= "Access文件|*.mdb" \'设置筛选器
改为:dlg.Filter= "Excel文件|*.xls" \'设置筛选器

 

导入时的错误信息是:不可识别的数据库格式

 

不知道是不是不能直接那样改,还是Excel不能这样从文件夹中选择。。。。


--  作者:Bin
--  发布时间:2014/1/20 14:15:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=45187&skin=0
--  作者:狐狸爸爸
--  发布时间:2014/1/20 14:25:00
--  
以下是引用fubblyc在2014-1-20 14:00:00的发言:

我尝试这样子:

我将dlg.Filter= "Access文件|*.mdb" \'设置筛选器
改为:dlg.Filter= "Excel文件|*.xls" \'设置筛选器

 

导入时的错误信息是:不可识别的数据库格式

 

不知道是不是不能直接那样改,还是Excel不能这样从文件夹中选择。。。。

 

 

你要设置格式,看看Merger是如何合并Excel文件的:

http://www.foxtable.com/help/topics/0685.htm

 

 

示例七

合并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() \'开始合并


--  作者:fubblyc
--  发布时间:2014/1/20 14:36:00
--  

狐爸,这个我弄过了,是可以的。

 

不过我现在是想实现可以通过文件夹来选择要合并的文件,而不是指定的文件!!


--  作者:Bin
--  发布时间:2014/1/20 14:39:00
--  
OpenFileDialog 只能多选文件,不可以选文件夹
--  作者:包头123
--  发布时间:2014/1/20 14:40:00
--  
学习。
--  作者:fubblyc
--  发布时间:2014/1/20 14:51:00
--  

Bin老师,你刚才给我的那个链接还是在后台指定了合并的文件,而不是可以让用户选择。

 

是选文件。选Excel文件。

 

以下是选择Access文件,我想实现能选择Excel文件。。。。

 

如果希望出现一个打开文件对话框,合并用户指定的文件,可以参考下面的代码:

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

 

求。。。