以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- merger合并 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8184) |
-- 作者:lihe60 -- 发布时间:2010/9/14 16:28:00 -- merger合并 merger合并,增加“逻辑型,是否排除重复内容,默认为True;如果设为False,将不会排除重复内容,也不会排除已有内容和空白值。” 就是同filler一样使用。 |
-- 作者:狐狸爸爸 -- 发布时间:2010/9/14 16:58:00 -- 以后再考虑吧 |
-- 作者:lihe60 -- 发布时间:2010/9/26 11:45:00 -- 以下是引用狐狸爸爸在2010-9-14 16:58:00的发言: 贺老师,考虑好了没有?
以后再考虑吧 |
-- 作者:狐狸爸爸 -- 发布时间:2010/10/21 17:05:00 -- 我们知道,用Merger可以合并外部数据到表中,不过Merger没有排除重复内容的选项,有时不能满足我们的要求。 例如项目中有一个员工表,要从一个外部文件中合并数据到这个员工表中,希望在合并过程中检查身份证号码,如果员工表已经存在相同身份证号码的行,则跳过此行。
Dim cmd As New SQLCommandDim dt As DataTable cmd.ConnectionName = "test" cmd.CommandText = "SELECT * From {表A}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows If DataTables("表A").Find("身份证号码 = \'" & dr("身份证号码") & "\'") Is Nothing Then Dim nr As DataRow = DataTables("表A").AddNew() For Each dc As DataCol In dt.DataCols nr(dc.name) = dr(dc.name) Next End If Next
可见要自己设计一个功能更强的Merger,其实是非常简单的事情。 如果两个表的结构不同,可以参考下面的代码:
Dim cmd As New SQLCommandDim dt As DataTable Dim sCols() As String = {"列名1", "列名2", "列名3"} Dim dCols() As String = {"列名一", "列名而", "列名三"} cmd.ConnectionName = "test" cmd.CommandText = "SELECT * From {表A}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows Dim nr As DataRow = DataTables("表A").AddNew() For i As Integer =0 To sCols.Length -1 nr(dCols(i)) = dr(sCols(i)) Next Next |
-- 作者:czy -- 发布时间:2010/10/21 18:23:00 -- "列名而"应该改成"列名二",这样才匹配。 |
-- 作者:狐狸爸爸 -- 发布时间:2010/10/21 21:02:00 -- ![]() |
-- 作者:mr725 -- 发布时间:2010/10/21 21:10:00 -- 其实也可以先 Importer 再用数据填充器 因为Filter可以设置条件, , |