以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  混合计算统计的代码要怎么写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127347)

--  作者:动检
--  发布时间:2018/11/12 11:50:00
--  混合计算统计的代码要怎么写?

请教各位 想在一个代码里体现多种运算的代码怎么写 作为一个开发小白深知以下代码错误很多 脑瓜不够用转不过来 还请多多包涵 


目前,检测份数、最大值、最小值已统计出。其他代码还未成立


Dim t As Table = Tables("PPRV")

Dim g As Subtotalgroup

t.SubtotalGroups.Clear()

t.GroupAboveData = False

t.TreeVisible = False

g = New Subtotalgroup

g.Aggregate = AggregateEnum.Sum

g.GroupOn = "送检单位"

g.Caption = "{0}"

t.SubtotalGroups.Add(g)

t.Subtotal()

 

Dim r As Row

For i As Integer = 0 To t.Rows.Count(True) - 1

    r = t.Rows(i,True)

    If r.IsGroup \'如果是分组行

        Dim f As String = "送检单位 = \'" & r("送检单位") & "\'"

        Dim v As String = " 检测份数:" & t.Compute("Count(送检单位)",f)

        v = v & " 阳性数量(50):" & t.Compute("Sum(结果) = \'P\'",f )   这里是想统计结果列的 ≥50的数据的数量

        v = v & " 阳性数量(80):" & t.Compute("Sum([结果]>=80)",f)  这里是想统计结果列的 ≥80的数据的数量

        v = v & " 阴性数量:" & t.Compute("Sum([判定]=\'N\')",f) 这里是想统计判定列等于字符N的数量

        v = v & " 最大值:" & t.Compute("Max(结果)",f)

        v = v & " 最小值:" & t.Compute("Min(结果)",f)

        v = v & " 平均值:" & t.Compute("Average(结果)",f) 这里想统计结果列里面数据 排除掉50以下的数据的 其他数据平均值

        v = v & " 标准偏差:" & t.Compute("Std(结果)",f)   这里想统计结果列里面数据 排除掉50以下的数据的 其他数据标准偏差

        v = v & " 离散度:" & t.Compute("([标准偏差]/[平均值])",f)  这里想作一个除法运算 用上面统计出的平均值与标准偏差来计算离散度 并且显示为百分数

       

        r("送检单位") = "送检单位:" & r("送检单位") & v

    End If

Next


--  作者:有点甜
--  发布时间:2018/11/12 12:14:00
--  

比如

 

        v = v & " 阳性数量(≥50):" & t.Compute("Sum(结果)",f & " and 结果>=50")   这里是想统计结果列的 ≥50的数据的数量

        v = v & " 阳性数量(≥80):" & t.Compute("Sum(结果)",f & " and 结果>=80")  这里是想统计结果列的 ≥80的数据的数量


 

看懂帮助文档 http://www.foxtable.com/webhelp/scr/1647.htm

 

[此贴子已经被作者于2018/11/12 12:14:16编辑过]

--  作者:动检
--  发布时间:2018/11/16 11:45:00
--  

老师 还要帮忙你看一下我的代码划黄线的那部分有什么问题 就是统计不出来呀 


还有就是如果想在加一行同样的统计行继续跟在后面 怎么写



Dim t As Table = Tables("检测报告")

Dim g As Subtotalgroup

t.SubtotalGroups.Clear()

t.GroupAboveData = False

t.TreeVisible = False

g = New Subtotalgroup

g.Aggregate = AggregateEnum.Sum

g.GroupOn = "生长阶段"

g.Caption = "{0}"

t.SubtotalGroups.Add(g)

t.Subtotal()

 

Dim r As Row

For i As Integer = 0 To t.Rows.Count(True) - 1

    r = t.Rows(i,True)

    If r.IsGroup \'如果是分组行

        Dim f As String = "生长阶段 = \'" & r("生长阶段") & "\'"

        Dim v As String = " 检测份数:" & t.Compute("Count(实验室编号)",f)

        v = v & " 阳性数量(0.4):" & t.Compute("Count(检测项目_蓝耳PRRS_结果)","检测项目_蓝耳PRRS_结果 > =0.4")

        v = v & " 阳性数量(2.5):" & t.Compute("Count(检测项目_蓝耳PRRS_结果)","检测项目_蓝耳PRRS_结果 > =2.5")

        v = v & " 阴性数量:" & t.Compute("Count(检测项目_蓝耳PRRS_判定)","检测项目_蓝耳PRRS_判定=\'N\'")

        v = v & " 最大值:" & t.Compute("Max(检测项目_蓝耳PRRS_结果)",f)

        v = v & " 最小值:" & t.Compute("Min(检测项目_蓝耳PRRS_结果)",f)

        v = v & " 阳性平均值:" & t.Compute("Average(检测项目_蓝耳PRRS_结果)","检测项目_蓝耳PRRS_结果 > =0.4")

        v = v & " 阳性标准偏差:" & t.Compute("Std(检测项目_蓝耳PRRS_结果)","检测项目_蓝耳PRRS_结果> =0.4")

        v = v & " 离散度CV%:" & t.Computer("阳性标准偏差/阳性平均值"),"00.00%")

        r("生长阶段") = "生长阶段:" & r("生长阶段") & v

    End If

Next


--  作者:有点甜
--  发布时间:2018/11/16 11:54:00
--  

标准偏差要这样计算

 

http://www.foxtable.com/webhelp/scr/0545.htm

 

不会做的话,具体实例发上来测试


--  作者:动检
--  发布时间:2018/11/19 14:49:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计项目.rar


主要问题:平均值,标准偏差与离散度统计不出来
              需要增加统计行,比如语文的统计行有及格个数、最大值、最小值、平均值离散度。同样的数学、英语、政治等科目也需要这样的统计行。

--  作者:有点甜
--  发布时间:2018/11/19 15:25:00
--  

Dim t As Table = Tables("表A")
Dim filter = t.filter
Dim dic As new Dictionary(Of String ,Double)
For Each bj As String In t.DataTable.GetValues("班级", t.filter)
    t.filter = iif(filter>"", filter & " And ", "") & "班级=\'" & bj & "\' and 语文_分数 >= 60"
    dic.add(bj & "平均", t.Aggregate(AggregateEnum.Average, 0, t.Cols("语文_分数").index, t.Rows.count-1, t.Cols("语文_分数").index))
    dic.add(bj & "偏差", t.Aggregate(AggregateEnum.Std, 0, t.Cols("语文_分数").index, t.Rows.count-1, t.Cols("语文_分数").index))
Next
t.filter = filter
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "班级"
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
t.Subtotal()

Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
        Dim f As String = "班级 = \'" & r("班级") & "\'"
        Dim 语文及格数量 = t.Compute("Count(语文_判定)","语文_判定=\'P\' and " & f)
        Dim 班级人数 =  t.Compute("Count(班级)",f)
        Dim 语文优秀数量 = t.Compute("Count(语文_分数)","语文_分数> =90 and " & f)
        Dim v As String = " 班级人数:" & 班级人数
        v = v & " 语文及格数量(≥60):" & 语文及格数量
        v = v & " 语文良好数量(≥80):" & t.Compute("Count(语文_分数)","语文_分数> =80 and " & f)
        v = v & " 语文优秀数量(≥90):" & 语文优秀数量
        v = v & " 语文及格率:" & 语文及格数量/班级人数
        v = v & " 语文优秀率:" & 语文优秀数量/班级人数
        v = v & " 语文最大值:" & t.Compute("Max(语文_分数)",f)
        v = v & " 语文最小值:" & t.Compute("Min(语文_分数)",f)
        v = v & " 语文及格分数平均值:" & dic(r("班级") & ("平均"))
        v = v & " 语文及格分数标准偏差:" & dic(r("班级") & ("偏差"))
        v = v & " 语文及格分数离散度:" & dic(r("班级") & ("偏差")) / dic(r("班级") & ("平均"))
       
        r("班级") = "班级:" & r("班级") & v
    End If
Next


--  作者:动检
--  发布时间:2018/11/20 11:15:00
--  
感觉老师要被我烦死了....
但真的非常感谢 有点甜老师的耐心及时的解答  给了我很多帮助

上面的代码写了以后确实是可以统计出来了 但是有一个问题 其他的科目就不好直观的看到 
所以我在想能不能生成一个临时表 来表示 如图所示 就能直观的看到每一个科目的统计了 
如果需要这样做 我的代码需要怎样改动 


--  作者:动检
--  发布时间:2018/11/20 11:23:00
--  
以下是引用动检在2018/11/20 11:15:00的发言:
感觉老师要被我烦死了....
但真的非常感谢 有点甜老师的耐心及时的解答  给了我很多帮助

上面的代码写了以后确实是可以统计出来了 但是有一个问题 其他的科目就不好直观的看到 
所以我在想能不能生成一个临时表 来表示 如图所示 就能直观的看到每一个科目的统计了 
如果需要这样做 我的代码需要怎样改动 


--  作者:动检
--  发布时间:2018/11/20 11:46:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:微信图片_20181120110122.rar


--  作者:动检
--  发布时间:2018/11/20 11:46:00
--  

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