以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  交?统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194693)

--  作者:lgz518
--  发布时间:2025/1/6 14:02:00
--  交?统计问题
如何让交叉统计统计,增加“小计,超差数,状态”?
Dim b As New CrossTableBuilder("统计表1", DataTables("表C"))
b.HGroups.AddDef("姓名") \'
b.HGroups.AddDef("项目") \'
b.HGroups.AddDef("计划运动量") \'
b.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年") \'
b.VGroups.AddDef("日期", DateGroupEnum.Month, "{0}月") \'
b.Totals.AddDef("数量") \'
b.Totals.AddDef("日运动量") \'
b.Build \'生成统计表
Maintable = Tables("统计表1") \'打开生成的统计表
如图

图片点击可在新窗口打开查看此主题相关图片如下:交计算.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2025/1/6 14:18:00
--  
先生成统计表,再使用DataTables("统计表1").DataCols.Add这种方式添加表达式列,类似:http://www.foxtable.com/webhelp/topics/3227.htm
--  作者:lgz518
--  发布时间:2025/1/6 14:53:00
--  
先生成统计表

Dim b As New CrossTableBuilder("统计表1", DataTables("表C"))
b.HGroups.AddDef("姓名") \'
b.HGroups.AddDef("项目") \'
b.HGroups.AddDef("计划运动量") \'
b.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年") \'
b.VGroups.AddDef("日期", DateGroupEnum.Month, "{0}月") \'
b.Totals.AddDef("数量") \'
b.Totals.AddDef("日运动量") \'
b.Build \'生成统计表
\'Maintable = Tables("统计表1") \'打开生成的统计表

\'Dim nms() As String = {"语文", "英语", "数学", "物理", "化学"}

2.绿色部分是如何加上,对红代码,没太理解,请帮处理?
Dim nms() As String = {"日期", "数量"}
For Each nm As String In nms \'对生成的统计表增加表达式列,计算及格率和优秀率
    DataTables("统计表1").DataCols.Add(nm & "小计", GetType(Double), nm & "_数量")
    Tables("统计表1").Cols(nm & "超差数").Move(Tables("统计表1").Cols(nm & "超差数").Index + 1)
    DataTables("统计表1").DataCols.Add(nm & "状态", GetType(Double), nm & "状态")
    Tables("统计表1").Cols(nm & "状态").Move(Tables("统计表1").Cols(nm & "_状态").Index + 1)

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

--  作者:有点蓝
--  发布时间:2025/1/6 15:40:00
--  
……
b.Build \'生成统计表
dim s as string = ""
for each c as col in Tables("统计表1").cols
if c.name like "数量_*" then
s = s & "+" & c.name
next
s = s.trim("+")
DataTables("统计表1").DataCols.Add("数量小计", GetType(Double), s)
DataTables("统计表1").DataCols.Add("超差数", GetType(Double), "数量小计 - 计划运动量")

--  作者:lgz518
--  发布时间:2025/1/7 10:40:00
--  

执行后,第一行没计算,如何解决?如下图


图片点击可在新窗口打开查看此主题相关图片如下:交计算-1.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2025/1/7 10:42:00
--  
加上isnull:http://www.foxtable.com/webhelp/topics/0602.htm
--  作者:lgz518
--  发布时间:2025/1/7 11:52:00
--  
Dim b As New CrossTableBuilder("统计表1", DataTables("表C"))
b.HGroups.AddDef("姓名") \'
b.HGroups.AddDef("项目") \'
b.HGroups.AddDef("计划运动量") \'
b.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年") \'
b.VGroups.AddDef("日期", DateGroupEnum.Month, "{0}月") \'
b.VGroups.AddDef("日期", DateGroupEnum.Day, "{0}日")
b.Totals.AddDef("数量") \'
b.Totals.AddDef("日运动量") \'

b.Build \'生成统计表
dim s as string = ""
for each c as col in Tables("统计表1").cols
if c.name like "数量_*" then
s = s & "+" & c.name
next
s = s.trim("+")
DataTables("统计表1").DataCols.Add("数量小计", GetType(Double), s)
DataTables("统计表1").DataCols.Add("超差数", GetType(Double), "数量小计 - 计划运动量")
加上红代码,取不到值,如何处理?

--  作者:有点蓝
--  发布时间:2025/1/7 12:02:00
--  
什么地方没有值?截图说明
--  作者:lgz518
--  发布时间:2025/1/7 13:43:00
--  
问题一:没值

此主题相关图片如下:交没值.jpg
按此在新窗口浏览图片


问题二:改代码,让统计结果在窗口上的表显示,下面代码报错,提示没"统计表1",如何解决?
Dim b As New CrossTableBuilder("统计表1", DataTables("表C"))
b.HGroups.AddDef("姓名") \'
b.HGroups.AddDef("项目") \'
b.HGroups.AddDef("计划运动量") \'
b.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年") \'
b.VGroups.AddDef("日期", DateGroupEnum.Month, "{0}月") \'
b.VGroups.AddDef("日期", DateGroupEnum.Day, "{0}日")
b.Totals.AddDef("数量") \'
b.Totals.AddDef("日运动量") \'

b.Build \'生成统计表
dim s as string = ""
for each c as col in Tables("统计表1").cols
if c.name like "数量_*" then
s = s & "+" & c.name
next
s = s.trim("+")
DataTables("统计表1").DataCols.Add("数量小计", GetType(Double), s)
DataTables("统计表1").DataCols.Add("超差数", GetType(Double), "数量小计 - 计划运动量")
\'MainTable = Tables("统计表1") 
Tables("窗口2_Table1").DataSource = b.BuildDataSource() 


--  作者:有点蓝
--  发布时间:2025/1/7 13:46:00
--  
问题1、看6楼
2、请上传实例测试