Foxtable(狐表)用户栏目专家坐堂 → 分组填充表


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

主题:分组填充表

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


加好友 发短信
等级:幼狐 帖子:67 积分:698 威望:0 精华:0 注册:2014/4/24 19:16:00
分组填充表  发帖心情 Post By:2019/4/26 11:44:00 [只看该作者]


此主题相关图片如下:无标题.png
按此在新窗口浏览图片
如图所示表A和表B,希望达到的效果。
表A的第一列和第二列每5组相衔接后,填充到表B的第一列。
同时表A的第三列也按照每5组相应的衔接后,填充到表B的第二列。

我用的填充的代码如下,但不知如何解决分组填充,请大侠指点。

Dim f As New Filler

f.SourceTable = DataTables("A") '指定数据来源

f.SourceCols = "第一列,第三列" '指定数据来源列

f.DataTable = DataTables("表B") '指定数据接收表

f.DataCols = "第一列,第二列" '指定数据接收列

f.Distinct= True

f.ExcludeNullValue=True

f.Fill() '填充数据

f = New Filler

f.SourceTable = DataTables("A") '指定数据来源

f.SourceCols = "第二列,第三列" '指定数据来源列

f.DataTable = DataTables("表B") '指定数据接收表

f.DataCols = "第一列,第二列" '指定数据接收列

f.Distinct= True

f.ExcludeNullValue=True

f.Fill() '填充数据


这组代码是直接把表A中的所有数据都填充到表B中了,实现不了分组的目的。

[此贴子已经被作者于2019/4/26 11:48:50编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/26 11:56:00 [只看该作者]

这种不能使用Filler,只能遍历表逐行处理

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/4/26 14:42:00 [只看该作者]

DataTables("表B").DataRows.Clear
Dim f As New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "第一列,第三列"
f.DataTable = DataTables("表B")
f.DataCols = "第一列,第二列"
f.Filter = "行号<6"
f.Fill()

f = New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "第二列,第三列"
f.DataTable = DataTables("表B")
f.DataCols = "第一列,第二列"
f.Filter = "行号<6"
f.Fill()

f = New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "第一列,第三列"
f.DataTable = DataTables("表B")
f.DataCols = "第一列,第二列"
f.Filter = "行号>5"
f.Fill()

f = New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "第二列,第三列"
f.DataTable = DataTables("表B")
f.DataCols = "第一列,第二列"
f.Filter = "行号>5"
f.Fill()

MainTable = Tables("表B")


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


加好友 发短信
等级:幼狐 帖子:67 积分:698 威望:0 精华:0 注册:2014/4/24 19:16:00
  发帖心情 Post By:2019/4/28 10:58:00 [只看该作者]

感谢您的建议。

过滤条件的取值我想用窗口控件中的取值,试了好多次,实在是不知道这个表达式该怎么写。(学了这么久,一直对表达式该如何写很头痛,尤其是用方括号,单双引号,一直一头雾水)


DataTables("表B").DataRows.Clear
Dim f As New Filler
f.SourceTable = DataTables("表A")
f.SourceCols = "第一列,第三列"
f.DataTable = DataTables("表B")
f.DataCols = "第一列,第二列"
Dim b As Integer = e.Form.Controls("textBox1").value
f.Filter = "行号<b"
f.Fill()

b是能取到值的,但是总是显示  未找到列 [b]。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/28 11:15:00 [只看该作者]

Dim t1 As Table = Tables("表A")
Dim t2 As Table = Tables("表B")
For i As Integer = 0 To t1.Rows.count-1
    Dim nr1 As Row = t2.addnew
    nr1("第一列") = t1.Rows(i)("第一列")
    nr1("第三列") = t1.Rows(i)("第三列")
    If i Mod 5 = 4 Then
        For j As Integer = i-4 To i Step 1
            Dim nr2 As Row = t2.addnew
            nr2("第一列") = t1.Rows(j)("第二列")
            nr2("第三列") = t1.Rows(j)("第三列")
        Next
    End If
Next

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


加好友 发短信
等级:幼狐 帖子:67 积分:698 威望:0 精华:0 注册:2014/4/24 19:16:00
  发帖心情 Post By:2019/4/28 11:26:00 [只看该作者]

谢谢有点甜老师

同样我分多少组,我也想用窗口控件来取值,这个表达式该怎么写,一直对表达的正确写法和头痛

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/28 11:50:00 [只看该作者]

不明白你的意思,请上传具体项目,说明你要做到什么效果。

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/4/28 12:33:00 [只看该作者]

f.Filter = "行号<" & b

 回到顶部