以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何关联表填充  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=8507)

--  作者:lihe60
--  发布时间:2010/11/5 16:38:00
--  如何关联表填充
 

dim f As New Filler
f
.SourceTable = DataTables("订单") \'指定数据来源
f
.SourceCols = "产品,客户" \'指定数据来源列
f
.DataTable = DataTables("统计") \'指定数据接收表
f
.DataCols = "产品,客户" \'指定数据接收列
f
.Fill()
\'填充数据

 

f.DataTable = DataTables("统计") \'指定数据接收表,因业务需要,此处需要用table格式的而不是DataTable格式的,即此处要用关联表。希望增加这样的功能。

 

[此贴子已经被作者于2010-11-5 16:38:21编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/11/5 17:11:00
--  
填充并非一定要Filler,自己编码,想怎么样都行的,我复制一段帮助给你,你尝试自己写一下:
 
 
前面介绍了用Filler进行数据填充,Filler的设置很丰富,使用比较灵活。

如果只是简单地将数据从一个表填充到另一个表,也不用考虑重复值和现有值,那么手工编码可能是一个更好的选择,因为这样性能更高。
例如需要从表A中,将金额大于1000的记录,复制到表B中,假定两个表的结构一样:
 
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For Each dc As DataCol in DataTables("表A").DataCols
        dr2(dc.Name) = dr1(dc.name)
    Next
Next
 
如果表A和表B的结构不同,就需要定义数据来源列和数据接收列,例如:
 
Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next

[此贴子已经被作者于2010-11-5 17:14:15编辑过]

--  作者:caiwenzong
--  发布时间:2010/11/6 7:54:00
--  
以下是引用狐狸爸爸在2010-11-5 17:11:00的发言:
填充并非一定要Filler,自己编码,想怎么样都行的,我复制一段帮助给你,你尝试自己写一下:
 
 
前面介绍了用Filler进行数据填充,Filler的设置很丰富,使用比较灵活。

如果只是简单地将数据从一个表填充到另一个表,也不用考虑重复值和现有值,那么手工编码可能是一个更好的选择,因为这样性能更高。
例如需要从表A中,将金额大于1000的记录,复制到表B中,假定两个表的结构一样:
 
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For Each dc As DataCol in DataTables("表A").DataCols
        dr2(dc.Name) = dr1(dc.name)
    Next
Next
 
如果表A和表B的结构不同,就需要定义数据来源列和数据接收列,例如:
 
Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next

[此贴子已经被作者于2010-11-5 17:14:15编辑过]
[此贴子已经被作者于2010-11-6 7:59:42编辑过]

--  作者:lihe60
--  发布时间:2010/11/6 8:05:00
--  
以下是引用狐狸爸爸在2010-11-5 17:11:00的发言:
填充并非一定要Filler,自己编码,想怎么样都行的,我复制一段帮助给你,你尝试自己写一下:
 
 
前面介绍了用Filler进行数据填充,Filler的设置很丰富,使用比较灵活。

如果只是简单地将数据从一个表填充到另一个表,也不用考虑重复值和现有值,那么手工编码可能是一个更好的选择,因为这样性能更高。
例如需要从表A中,将金额大于1000的记录,复制到表B中,假定两个表的结构一样:
 
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For Each dc As DataCol in DataTables("表A").DataCols
        dr2(dc.Name) = dr1(dc.name)
    Next
Next
 
如果表A和表B的结构不同,就需要定义数据来源列和数据接收列,例如:
 
Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim dr2 As DataRow = DataTables("表B").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next

[此贴子已经被作者于2010-11-5 17:14:15编辑过]

如何排除重复列?


--  作者:狐狸爸爸
--  发布时间:2010/11/6 8:13:00
--  
用GetUniqueValues取得要填充内容的不重复值即可。