Foxtable(狐表)用户栏目专家坐堂 → 成绩统计条件代码修正


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

主题:成绩统计条件代码修正

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


加好友 发短信
等级:五尾狐 帖子:798 积分:9630 威望:0 精华:0 注册:2011/4/20 14:23:00
成绩统计条件代码修正  发帖心情 Post By:2019/12/31 7:31:00 [只看该作者]

用户已被锁定

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106296 积分:540609 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/31 8:53:00 [只看该作者]

没有必要使用全局变量

'=========生成条件表达式结束===========
Dim 标准总分 As Integer = 100
If e.DataRow("年级简称") Like "中*"
    If e.DataRow("学科") = "语文" OrElse e.DataRow("学科") = "数学" OrElse e.DataRow("学科") = "英语"
        标准总分 = 150
    End If
Else
    If e.DataRow("学科") = "科学" OrElse e.DataRow("学科") = "英语"
        标准总分 = 50
    End If
End If
        If filter >"" Then
            Filter  = Filter & " and  "
            Filter_jg = filter & e.DataRow("学科") & " >= " & (标准总分 * 0.6 )
            Filter_yy = filter & e.DataRow("学科") & " >= " & (标准总分 * 0.8 )
            
        Else
            Filter_jg = filter & e.DataRow("学科") & " >= " & (标准总分 * 0.6 )
            Filter_yy = filter & e.DataRow("学科") & " >= " & (标准总分 * 0.8 )
            
        End If
可以考虑把获取标准总分的代码放到内部函数中,作为通用功能调用
[此贴子已经被作者于2019/12/31 8:53:18编辑过]

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


加好友 发短信
等级:五尾狐 帖子:798 积分:9630 威望:0 精华:0 注册:2011/4/20 14:23:00
  发帖心情 Post By:2019/12/31 9:26:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:五尾狐 帖子:1074 积分:9872 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2019/12/31 9:42:00 [只看该作者]

要代码通用可以考虑单独建一个学科满分表,这样不怕学科分数变化。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106296 积分:540609 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/31 9:59:00 [只看该作者]

在分组一次,如


Dim g1 As New GroupTableBuilder("语文优秀格", DataTables("片区学生成绩_查询"))
Dim dt1 As fxDataSource
g1.Groups.AddDef("年级简称")
g1.Groups.AddDef("班级编号")
g1.Totals.AddDef("语文", AggregateEnum.Count, "语文优秀人数")
g1.Filter = "语文 > 120 and 年级简称 like '中%'"
dt1 = g1.BuildDataSource()

Dim g3 As New GroupTableBuilder("语文优秀格", DataTables("片区学生成绩_查询"))
Dim dt3 As fxDataSource
g3.Groups.AddDef("年级简称")
g3.Groups.AddDef("班级编号")
g3.Totals.AddDef("语文", AggregateEnum.Count, "语文优秀人数")
g3.Filter = "语文 > 80 and 年级简称 like '小%'"
dt3 = g1.BuildDataSource()

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


加好友 发短信
等级:五尾狐 帖子:798 积分:9630 威望:0 精华:0 注册:2011/4/20 14:23:00
  发帖心情 Post By:2020/1/1 12:50:00 [只看该作者]

用户已被锁定

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106296 积分:540609 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/2 9:25:00 [只看该作者]

Dim 学科  As String = args(0)
Dim 年级简称  As String = args(1)

Dim 标准总分 As Integer = 100
If 年级简称 Like "中*"
    If 学科 = "语文" OrElse 学科 = "数学" OrElse 学科 = "英语"
        标准总分 = 150
    End If
Else
    If 学科 = "科学" OrElse 学科 = "英语"
        标准总分 = 50
    End If
End If

Return 标准总分

调用
dim 标准总分 as integer = Functions.Execute("某函数","语文","中一")
msgbox(标准总分)

或者

dim 标准总分 as integer = Functions.Execute("某函数",e.DataRow("学科"),e.DataRow("年级简称")
msgbox(标准总分)

 回到顶部