以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 分组填充表 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=134064) |
|
-- 作者:80790800 -- 发布时间:2019/4/26 11:44:00 -- 分组填充表 如图所示表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编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2019/4/26 11:56:00 -- 这种不能使用Filler,只能遍历表逐行处理 |
|
-- 作者:y2287958 -- 发布时间: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 -- 发布时间:2019/4/28 10:58:00 -- 感谢您的建议。 过滤条件的取值我想用窗口控件中的取值,试了好多次,实在是不知道这个表达式该怎么写。(学了这么久,一直对表达式该如何写很头痛,尤其是用方括号,单双引号,一直一头雾水)
b是能取到值的,但是总是显示 未找到列 [b]。 |
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2019/4/28 11:26:00 -- 谢谢有点甜老师 同样我分多少组,我也想用窗口控件来取值,这个表达式该怎么写,一直对表达的正确写法和头痛
|
|
-- 作者:有点甜 -- 发布时间:2019/4/28 11:50:00 -- 不明白你的意思,请上传具体项目,说明你要做到什么效果。 |
|
-- 作者:y2287958 -- 发布时间:2019/4/28 12:33:00 -- f.Filter = "行号<" & b |