以文本方式查看主题

-  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
--  分组填充表

此主题相关图片如下:无标题.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编辑过]

--  作者:有点蓝
--  发布时间: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
--  
感谢您的建议。

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


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]。

--  作者:有点甜
--  发布时间: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