以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Excel合并到表的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87531)

--  作者:hongyefor
--  发布时间:2016/7/13 9:43:00
--  Excel合并到表的问题


此主题相关图片如下:cw.jpg
按此在新窗口浏览图片

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel"
    mg.SourceTableName = "cs$" \'指定要合并的表
    mg.DataTableName = "表A" \'指定接收数据的表
    mg.FieldMaps.Add("姓名","第一列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("基础代码","第二列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("基础金额","第三列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("地址码","第四列" ) \'将指定ID列的数据合并到编号列中
    mg.Merge() \'开始合并
End If

不同名称列合并

2个问题

1、如果姓名、基础代码、基础金额、地址码相同,则不合并,这句代码怎么写

2、如何在和并过程中,如果姓名和地址码的内容和表B的员工姓名、地址代码列的内容相同,则将表B的“_Identify”复制到表A的第五列中

这些按键代码怎么写啊

 


--  作者:大红袍
--  发布时间:2016/7/13 9:45:00
--  

1、合并以后删除,或者用这种方法

 

http://www.foxtable.com/webhelp/scr/2334.htm

 

2、可应用这种方法

 

http://www.foxtable.com/webhelp/scr/2334.htm

 


--  作者:hongyefor
--  发布时间:2016/7/13 9:49:00
--  

因为列名称不同,所以不会搞,能帮我改一下吗?


--  作者:大红袍
--  发布时间:2016/7/13 9:53:00
--  

 那你就导入后

 

1、删除重复

 

2、循环每一行,引用数据到表B

 

删除重复参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=87415&skin=0

 


--  作者:hongyefor
--  发布时间:2016/7/13 10:05:00
--  
看不懂,能不能帮我改一下
--  作者:大红袍
--  发布时间:2016/7/13 10:06:00
--  
 上传实例
--  作者:hongyefor
--  发布时间:2016/7/13 10:14:00
--  
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:不同列名导入.table

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:测试.xls

1、如果姓名、基础代码、基础金额、地址码相同,则不合并,这句代码怎么写

2、如何在和并过程中,如果姓名和地址码的内容和表B的员工姓名、地址代码列的内容相同,则将表B的“_Identify”复制到表A的第五列中,如果没有则空


--  作者:大红袍
--  发布时间:2016/7/13 10:44:00
--  
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel"
    mg.SourceTableName = "cs$" \'指定要合并的表
    mg.DataTableName = "表A" \'指定接收数据的表
    mg.FieldMaps.Add("姓名","第一列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("基础代码","第二列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("基础金额","第三列" ) \'将指定ID列的数据合并到编号列中
    mg.FieldMaps.Add("地址码","第四列" ) \'将指定ID列的数据合并到编号列中
    mg.Merge() \'开始合并
    Dim idx As String = "-1,"
    Dim idx_temp As String = ""
    Dim pdr As DataRow = Nothing
    Dim count As Integer = 0
    Dim cs As String = "第一列,第二列,第三列,第四列"
    For Each dr As DataRow In DataTables("表A").Select("", cs)
        Dim flag As Boolean = False
        If pdr IsNot Nothing Then
            For Each c As String In cs.split(",")
                If pdr(c) <> dr(c) Then
                    flag = True
                    Exit For
                End If
            Next
            If flag Then
                If count > 1 Then
                    idx &= idx_temp
                End If
                count = 1
                idx_temp = ""
            Else
                count += 1
                idx_temp &= dr("_Identify") & ","
            End If
        Else
            count += 1
        End If
        pdr = dr
    Next
   
    If count > 1 Then
        idx &= idx_temp
    End If
   
    DataTables("表A").DeleteFor("_Identify In (" & idx.trim(",") & ")")
   
    For Each dr As DataRow In DataTables("表A").Select("")
        If dr.RowState = DataRowState.Added Then
            Dim fdr As DataRow = DataTables("表B").Find("第一列 = \'" & dr("第一列") & "\'")
            If fdr IsNot Nothing Then
                dr("第五列") = fdr("_Identify")
            End If
        End If
    Next
End If

--  作者:hongyefor
--  发布时间:2016/7/13 12:38:00
--  
如果“基础代码"和"第二列”是逻辑列的话怎么合并啊
--  作者:hongyefor
--  发布时间:2016/7/13 12:41:00
--  
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.6.26.1
错误所在事件:
详细错误信息:
该字符串未被识别为有效的布尔值。不能在 第二列 列中存储 <0>。所需类型是 Boolean。
该字符串未被识别为有效的布尔值。

图片点击可在新窗口打开查看此主题相关图片如下:cw.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/7/13 12:46:05编辑过]