以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 合并数据时列名不同请问怎么办  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119180)

--  作者:hrlong
--  发布时间:2018/5/19 10:44:00
--  [求助] 合并数据时列名不同请问怎么办
我采用下面的代码合并excel数据到内部表中
但是原来的excel表有两列
“收件人姓名*”,“收件人电话/手机”
这两列标题有特殊字符
在FOX里面只能设成
"收件人姓名“,”收件人电话”
这样就会导致两个列名不同;
这时该怎么修改下面的代码来把这两列数据合并进去呢

=================================================
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = "sheet0$"
    mg.DataTableName = "订单临时表"
    mg.Merge()
End If

--  作者:有点蓝
--  发布时间:2018/5/19 10:50:00
--  
1、把Execl标题改正确再导

2、试试

FieldMaps
这是一个集合,要合并的表和接收数据的表的字段名称存在不一致的情况下,可以用此集合指定两个表之间字段的对应关系。
假定要合并的表中某一字段的名称为“ID”,合并的时候,需要将该列的内容合并到接收表中的"编号"列,可以设置代码:
Dim mg As New Merger
mg.FieldMaps.Add("ID","编号")

mg.FieldMaps.Add("收件人电话/手机","收件人电话")

--  作者:hrlong
--  发布时间:2018/5/19 11:21:00
--  
谢谢,这样可以了
但是用这个方法把数据合并到表中,
在表事件DataColChanged中以下代码却不起作用了
===============================================================
Select Case e.DataCol.name
    Case "系统单号"
        Dim filter As String = "系统单号 = \'" & e.DataRow("系统单号") & "\'"
        Dim sum1 As Double = e.DataTable.Compute("count(系统单号)", filter)
        e.DataTable.ReplaceFor("款数",sum1,filter)
        filter = "系统单号 = \'" & e.oldvalue & "\'"
        sum1 = e.DataTable.Compute("count(系统单号)", filter)
        e.DataTable.ReplaceFor("款数",sum1,filter)
End Select
是怎么回事呢

--  作者:有点蓝
--  发布时间:2018/5/19 11:26:00
--  
Merger不会触发表事件

导入后调用一下重置列http://www.foxtable.com/webhelp/scr/1468.htm