以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:统计问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1310) |
||||
-- 作者:abcdzabcdz -- 发布时间:2008/12/3 20:53:00 -- 求助:统计问题 求助: 问题一:“课时统计”按纽公式如何修改? 说明:在生成的“课时统计”表中“守班”、“巡查”数量均要除以3,即每3小时算1次。 问题二:“汇总流水数据”按纽公式如何设置? 说明:1、要求自动“汇总表”结构(详见文件“汇总表”)。 2、“汇总表”数据来源说明: 姓名来源于“课时名单”中“姓名”列,所有表的姓名。 ⑴、“正课”来源于“正课表”,具体数据来源于“课时名单”中“计分”列。 ⑵、“辅导”来源于“辅导表”,具体数据来源于“课时名单”中“计分”列。 ⑶、“补课”来源于“补课表”,具体数据来源于“课时名单”中“计分”列。 ⑷、“考试”列暂不管。 ⑸、“甘孜_辅导”来源于”甘孜表”且”性质”为”辅导”的”计分”列; ⑹、“甘孜_补课”来源于”甘孜表”且性质为”补课”的”计分”列; ⑺、“甘孜_守班_小时” 来源于”甘孜表”且性质为”守班”的”计分”列; ⑻、“甘孜_守班_次数” 来源于”甘孜表”且性质为”守班”的”计分”列,且数据除以3(即“甘孜_守班_小时”数量转换为次数,每3小时算一次) ⑼、“甘孜_巡查_小时” 来源于”甘孜表”且性质为”巡查”的”计分”列; ⑽、“甘孜_巡查_次数” 来源于”甘孜表”且性质为”巡查”的”计分”列,且数据除以3(即“甘孜_巡查_小时”数量转换为次数,每3小时算一次) 注:1、计算代码方式能解决问题,感觉不是很好,最好是自动生成文件中“汇总表”结构且自动统计数据。2、文件中有“课时统计”生成,该表是上报数据;而“汇总表”是给公布给教师用的,故两种统计缺一不可。
|
||||
-- 作者:czy -- 发布时间:2008/12/3 22:01:00 -- 问题1,你用的是内置的交叉表生成器创建的交叉表,只能生成后重算这几列。 问题2,似乎没必要自动创建表,因为临时表不能保存数据。 计算代码就不要去考虑了,因为计算代码最终将全部弃用。 |
||||
-- 作者:czy -- 发布时间:2008/12/3 23:57:00 -- 第一个问题改成这样试试: Dim g As New CrossTableBuilder("课时统计", DataTables("课时名单")) g.HGroups.AddDef("姓名") g.VGroups.AddDef("性质") g.Totals.AddDef("计分", "计分") g.OrderByTotal = True g.VerticalTotal = True g.Build() Dim dt As Table = Tables("课时统计") For i As integer = 0 to dt.Rows.Count -1 dt.Rows(i)("crsz3") = Math.Round(dt.Rows(i)("crsz3") / 3,2) dt.Rows(i)("crsz4") = Math.Round(dt.Rows(i)("crsz4") / 3,2) Next Tables("课时统计").Cols("crsz5").Move(1) Tables("课时统计").Cols("crsz2").Move(2) MainTable = Tables("课时统计") |
||||
-- 作者:czy -- 发布时间:2008/12/4 0:09:00 -- 第二个问题: DataTables("汇总表").DataRows.Clear() dim f As New Filler f.SourceTable = DataTables("课时名单") f.DataTable = DataTables("汇总表") f.Fill() Dim dt As Table = Tables("汇总表") Dim dt1 As DataTable = DataTables("课时名单") For i As integer = 0 to dt.Rows.Count -1 dt.Rows(i)("正课") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'正课表\'") dt.Rows(i)("辅导") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'辅导表\'") dt.Rows(i)("补课") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'补课表\'") dt.Rows(i)("甘孜_辅导") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'辅导\'") dt.Rows(i)("甘孜_补课") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'补课\'") dt.Rows(i)("甘孜_守班_小时") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'守班\'") dt.Rows(i)("甘孜_守班_次数") = Math.Round(dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'守班\'") / 3,2) dt.Rows(i)("甘孜_巡查_小时") = dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'巡查\'") dt.Rows(i)("甘孜_巡查_次数") = Math.Round(dt1.Compute("sum(计分)","[姓名] = \'" & dt.Rows(i)("姓名") & "\'and [数据来源] = \'甘孜表\' and [性质] = \'巡查\'") / 3,2) Next MainTable = Tables("汇总表") [此贴子已经被作者于2008-12-4 0:10:32编辑过]
|
||||
-- 作者:czy -- 发布时间:2008/12/4 0:12:00 -- 楼上的代码没有做生成临时表,如果需要可以自己用临时表生成器创建一个。 |
||||
-- 作者:abcdzabcdz -- 发布时间:2008/12/4 9:52:00 -- 老六真该禁止CZY版主在深夜论坛上劳作,-----CZY版主要保重身体啊! [此贴子已经被作者于2008-12-5 17:44:28编辑过]
|
||||
-- 作者:abcdzabcdz -- 发布时间:2008/12/4 15:47:00 -- 以下是引用czy在2008-12-4 0:09:00的发言:
第二个问题: DataTables("汇总表").DataRows.Clear() dim f As New Filler f.SourceTable = DataTables("课时名单") f.DataTable = DataTables("汇总表") f.Fill() Dim dt As Table = Tables("汇总表")......... 执行时出现错误提示 |
||||
-- 作者:czy -- 发布时间:2008/12/4 21:07:00 -- 以下是引用abcdzabcdz在2008-12-4 15:47:00的发言:
执行时出现错误提示
|
||||
-- 作者:abcdzabcdz -- 发布时间:2008/12/5 11:52:00 -- 我昨天也没有发现错误,感到十分奇怪,也许是版本过时。谢谢CZY老师! |