以文本方式查看主题 - 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 Fillerf.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取得要填充内容的不重复值即可。 |