以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  两个外部数据源A和B,其中有名称为C和D的两个外部数据表,结构相同,怎么复制他们的数据?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=46959)

--  作者:小刚
--  发布时间:2014/3/2 8:33:00
--  两个外部数据源A和B,其中有名称为C和D的两个外部数据表,结构相同,怎么复制他们的数据?
两个外部数据源A和B,其中有名称为C和D的两个外部数据表,结构相同,怎么复制他们的数据?
--  作者:qianqian1530
--  发布时间:2014/3/2 8:39:00
--  
在菜单的“数据表”功能区,单击下面的按钮,可以复制表

复制表只复制数据列,不复制表达式列。

--  作者:小刚
--  发布时间:2014/3/2 8:59:00
--  
看都不看,你这个是内部数据表。我说的是外部数据源、外部数据表。
--  作者:小刚
--  发布时间:2014/3/2 9:04:00
--  

自行编码合并外部数据

我们知道,用Merger可以合并外部数据到表中,不过Merger没有排除重复内容的选项,有时不能满足我们的要求。

例如项目中有一个员工表,要从一个外部文件中合并数据到这个员工表中,希望在合并过程中检查身份证号码,如果员工表已经存在相同身份证号码的行,则跳过此行。
假定被合并的表和员工表的结构相同,代码如下:

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.ConnectionName =
"数据源名称"
cmd.CommandText =
"SELECT * From {员工}"
dt = cmd.ExecuteReader()

For
Each dr As DataRow In dt.DataRows
    If
DataTables("员工").Find("身份证号码 = \'" & dr("身份证号码") & "\'") Is Nothing Then
        Dim
nr As DataRow = DataTables("员工").AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

可见要自己设计一个功能更强的Merger,其实是件很简单的事情。

如果两个表的结构不同,可以参考下面的代码:

Dim cmd As New SQLCommand
Dim
dt As DataTable
Dim
sCols() As String = {"列名1", "列名2", "列名3"}
Dim
dCols() As String = {"列名A", "列名B", "列名C"}
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "SELECT * From {员工}"
dt
= cmd.ExecuteReader()
For Each
dr As DataRow In dt.DataRows
    Dim
nr As DataRow = DataTables("员工").AddNew()
    For
i As Integer =0 To sCols.Length -1
       
nr(dCols(i)) = dr(sCols(i))
    Next
Next

 

 

这个是一个外部数据源吧    两个数据源怎么更改代码?


--  作者:有点甜
--  发布时间:2014/3/2 21:16:00
--  
 回复4楼,不论几个数据源,外部表的数据,都是可以相互复制的。只要把它们都引用在狐表里。