以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]数据统计公式求教~ (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80419) |
||||
-- 作者:jwt -- 发布时间:2016/1/22 13:59:00 -- [求助]数据统计公式求教~ 简介: 【民主评议表】是大家对领导班子进行评议的表,考核分为【德能勤绩廉】五方面,为了简化,只拿【德】来做说明,每个评价的方面有四个选项【优秀,称职,基本称职,不称职】如图1; 【总量统计】表是对【民主评议表】内的数据进行统计,主要显示为,各评价主体的每项所占百分比,比如【班子整体】,德:优秀占90%,称职占10%,基本称职和不称职占0%,具体计算为:优秀率=【民主评议表】内,【班子整体】的【优秀】评价÷评价总数。希望大家能明白我的意思,我现在只想要这个计算公式,最后结果以百分比形式显示,其他的我都弄的差不多了。麻烦了~ 图2 此主题相关图片如下:222.png |
||||
-- 作者:大红袍 -- 发布时间:2016/1/22 14:12:00 -- 参考 http://www.foxtable.com/help/topics/0681.htm
|
||||
-- 作者:jwt -- 发布时间:2016/1/22 14:41:00 -- 提示错误,计算不出来 Dim a,b,c As Integer a = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\' And [德] = \'01优秀\'") b = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\'") c = a/b e.DataRow("德_优秀")= c
|
||||
-- 作者:大红袍 -- 发布时间:2016/1/22 14:46:00 -- Dim a,b,c As Integer
a = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\' And [德] = \'01优秀\'")
b = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\'")
msgbox(a)
msgbox(b)
c = iif(b=0, 0, a/b)
e.DataRow("德_优秀")= c
|
||||
-- 作者:jwt -- 发布时间:2016/1/22 14:54:00 -- .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2014.8.24.1 错误所在事件:表,总量统计,DataColChanged 详细错误信息: 调用的目标发生了异常。 索引和长度必须引用该字符串内的位置。 参数名: length 全部代码如下: Select e.DataCol.Name \'自动编号 Case "姓名" If e.DataRow.IsNull("姓名") Then e.DataRow("序号") = Nothing Else Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(序号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(0,3)) + 1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("序号") = Format(idx,"00") End If End Select If e.DataCol.Name = "姓名" And e.DataRow.IsNull("姓名") = False Then Dim a,b,c As Integer a = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\' And [德] = \'01优秀\'") b = DataTables("民主评议表").Compute("Count(德)", "[姓名]= \'" & e.DataRow("姓名") & "\'") c = iif(b=0, 0, a/b) e.DataRow("德_优秀")= c End If [此贴子已经被作者于2016/1/22 14:57:29编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/1/22 14:56:00 -- 上传具体例子测试。
不然自己调试一下 http://www.foxtable.com/help/topics/1485.htm
|
||||
-- 作者:jwt -- 发布时间:2016/1/22 15:02:00 -- 程序如下,半成品,窗口什么的都建好了,就是这个汇总统计的代码我得慢慢搞了
[此贴子已经被作者于2016/1/22 15:06:09编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/1/22 15:09:00 -- Select e.DataCol.Name \'自动编号 If e.DataCol.Name = "姓名" AndAlso e.DataRow.IsNull("姓名") = False Then |