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


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

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

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望: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()

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望: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(标准总分)

 回到顶部