Foxtable(狐表)用户栏目专家坐堂 → 如何关联表填充


  共有12198人关注过本帖树形打印复制链接

主题:如何关联表填充

帅哥哟,离线,有人找我吗?
lihe60
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6843 积分:43298 威望:0 精华:0 注册:2009/3/2 14:07:00
如何关联表填充  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:59 积分:428 威望:0 精华:0 注册:2010/10/7 14:46:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6843 积分:43298 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By: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编辑过]

如何排除重复列?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/11/6 8:13:00 [只看该作者]

用GetUniqueValues取得要填充内容的不重复值即可。

 回到顶部