以文本方式查看主题

-  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、文件中有“课时统计”生成,该表是上报数据;而“汇总表”是给公布给教师用的,故两种统计缺一不可。




 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:1.table


--  作者: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的发言:

执行时出现错误提示


可能你的版本和我的不一样,这样应该不会有问题了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目12.table


--  作者:abcdzabcdz
--  发布时间:2008/12/5 11:52:00
--  

我昨天也没有发现错误,感到十分奇怪,也许是版本过时。谢谢CZY老师!