Foxtable(狐表)用户栏目专家坐堂 → [求助]数据统计公式求教~


  共有1823人关注过本帖树形打印复制链接

主题:[求助]数据统计公式求教~

帅哥哟,离线,有人找我吗?
jwt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
[求助]数据统计公式求教~  发帖心情 Post By:2016/1/22 13:59:00 [只看该作者]

简介:
【民主评议表】是大家对领导班子进行评议的表,考核分为【德能勤绩廉】五方面,为了简化,只拿【德】来做说明,每个评价的方面有四个选项【优秀,称职,基本称职,不称职】如图1;
【总量统计】表是对【民主评议表】内的数据进行统计,主要显示为,各评价主体的每项所占百分比,比如【班子整体】,德:优秀占90%,称职占10%,基本称职和不称职占0%,具体计算为:优秀率=【民主评议表】内,【班子整体】的【优秀】评价÷评价总数。希望大家能明白我的意思,我现在只想要这个计算公式,最后结果以百分比形式显示,其他的我都弄的差不多了。麻烦了~

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图2

图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 14:12:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 14:56:00 [只看该作者]

上传具体例子测试。

 

不然自己调试一下 http://www.foxtable.com/help/topics/1485.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/1/22 15:02:00 [只看该作者]

程序如下,半成品,窗口什么的都建好了,就是这个汇总统计的代码我得慢慢搞了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:民主评议系统.rar

[此贴子已经被作者于2016/1/22 15:06:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 15:09:00 [只看该作者]

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 = max + 1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("序号") = Format(idx,"00")
        End If
End Select

If e.DataCol.Name = "姓名" AndAlso e.DataRow.IsNull("姓名") = False Then
    Dim a,b,c As Double
    a =  DataTables("民主评议表").Compute("Count(德)", "[姓名]= '" & e.DataRow("姓名") & "' And [德] = '01优秀'")
    b =  DataTables("民主评议表").Compute("Count(德)", "[姓名]= '" & e.DataRow("姓名") & "'")
    c = iif(b=0, 0, a/b)
    e.DataRow("德_优秀")= c * 100
    a =  DataTables("民主评议表").Compute("Count(德)", "[姓名]= '" & e.DataRow("姓名") & "' And [德] = '02称职'")
    c = iif(b=0, 0, a/b)
    e.DataRow("德_称职")= c * 100
End If


 回到顶部