Foxtable(狐表)用户栏目专家坐堂 → 计算及格率、优秀率时的空值


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

主题:计算及格率、优秀率时的空值

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


加好友 发短信
等级:童狐 帖子:241 积分:2569 威望:0 精华:0 注册:2018/1/11 14:52:00
计算及格率、优秀率时的空值  发帖心情 Post By:2018/5/13 14:55:00 [只看该作者]


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

在研究FT的经典例子中,遇到一个问题,计算及格率、优秀率时,要是“化学”学科没有考试,即“成绩表”中“化学”列的数值是空值,按照下列的代码计算的及格率,优秀率全部出现0.00%,这种情况怎么处理呢,能不能让没有考试的“化学”及格率、优秀率为空值呢?


Dim b As New SQLGroupTableBuilder("统计表1","成绩表")
b
.Groups.AddDef("班级")
b
.Totals.AddExp("人数","学号","",AggregateEnum.Count) '统计人数
Dim
nms() As String = {"语文","英语","数学","物理","化学"}
For
Each nm As String In nms '利用表达式统计及格人数和优秀人数
   
b.Totals.Addexp(nm & "_及格", "iif(" &  nm & " >= 60, 1, 0)")
    b.Totals.Addexp(nm &
"_
优秀", "iif(" &  nm & " >= 90, 1, 0)")
Next

b
.VerticalTotal = True
b
.Build()
For
Each nm As String In nms '对生成的统计表增加表达式列,计算及格率和优秀率
    DataTables(
"
统计表1").DataCols.Add(nm & "_及格率",Gettype(Double), nm & "_及格/人数" )
    Tables(
"
统计表1").Cols(nm & "_及格率").Move(Tables("统计表1").Cols(nm & "_及格").Index + 1)
    DataTables(
"
统计表1").DataCols.Add(nm & "_优秀率",Gettype(Double), nm & "_优秀/人数" )
    Tables(
"
统计表1").Cols(nm & "_优秀率").Move(Tables("统计表1").Cols(nm & "_优秀").Index + 1)
    DataTables(
"
统计表1").DataCols(nm & "_及格率").SetFormat("0.00%")
    DataTables(
"
统计表1").DataCols(nm & "_优秀率").SetFormat("0.00%")
Next
MainTable
= Tables("统计表1")

[此贴子已经被作者于2018/5/13 14:55:48编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/13 14:59:00 [只看该作者]

修改公式,如

 

DataTables("统计表1").DataCols.Add(nm & "_及格率",Gettype(Double), "iif(" & nm & "_及格 is null, null, " & nm & "_及格/人数)" )


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


加好友 发短信
等级:童狐 帖子:241 积分:2569 威望:0 精华:0 注册:2018/1/11 14:52:00
  发帖心情 Post By:2018/5/13 15:20:00 [只看该作者]

谢谢
[此贴子已经被作者于2018/5/13 15:21:42编辑过]

 回到顶部