以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何改窗口上的表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186981)

--  作者:lin98
--  发布时间:2023/6/12 18:27:00
--  如何改窗口上的表
\'统计各员工销量
Dim
 st As new InlineGroupTableBuilder("统计表1")
st
.DataTable = DataTables("销售A")
st
.ParentCol = "上级"
st
.ChildCol = "员工"
st
.GridTree = True  \'一定要开启折叠模式
st
.AddTotal("数量","销量"0)
st
.Build()
\'增加一个提成列, 并计算出每个员工的直接销售提成

DataTables
("统计表1").DataCols.Add("提成"Gettype(Double))
DataTables
("统计表1").DataCols("提成").SetFormat("0.00"\'提成列保留两位小数
Dim
 tbl As Table = Tables("统计表1")
For
 n As Integer = 0 To tbl.Rows.Count - 1
    tbl.Rows(n)(
"
提成") = tbl.Rows(n)("销量")  * 8
Next
For
 n As Integer = 0 To tbl.Rows.Count - 1 
    Dim pr As Row = tbl.Rows(n) 
\'
上级
    Dim pHierarchy As Integer = pr.Hierarchy 
\'
上级 行的层级
    For m As Integer = n + 1 To tbl.Rows.Count - 1  
\'
 上级行的下一行位置开始遍历,找出全部下级行
        Dim cr As Row = tbl.Rows(m)
        Dim cHierarchy As Integer = cr.Hierarchy 
\'
下级行层级   
        If cr.Hierarchy <= pHierarchy  Then  
\'
如果并非下级行,则终止遍历。
            Exit For
        End If
        Dim deduct As Double = cr(
"
销量")  * 8  * 0.2 /  2 ^ (cHierarchy - pHierarchy  - 1\'计算扣除额
        cr(
"
提成") = cr("提成") - deduct \'从下级行减去扣除额
        pr(
"
提成") = pr("提成") + deduct \'将扣除额加到本行中
    
Next

Next
MainTable
 = Tables("统计表1")

上面红字代码改为下面,提成没计算出来,也没分级显示,如何解决?

Tables("窗口1_Table1").DataSource = st.BuildDataSource() 



--  作者:有点蓝
--  发布时间:2023/6/12 20:16:00
--  
……
st.GridTree = True  \'一定要开启折叠模式
st
.AddTotal("数量","销量"0)
Tables("窗口1_Table1").DataSource  = st.BuildDataSource()
\'增加一个提成列, 并计算出每个员工的直接销售提成

DataTables
("窗口1_Table11").DataCols.Add("提成"Gettype(Double))
DataTables
("窗口1_Table1").DataCols("提成").SetFormat("0.00"\'提成列保留两位小数
Dim
 tbl As Table = Tables("窗口1_Table1")
For
 n As Integer = 0 To tbl.Rows.Count - 1
    tbl.Rows(n)(
"
提成") = tbl.Rows(n)("销量")  * 8
Next
……