以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  成绩统计条件代码修正  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=144828)

--  作者:有点蓝
--  发布时间: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编辑过]

--  作者:bohe
--  发布时间:2019/12/31 9:42:00
--  
要代码通用可以考虑单独建一个学科满分表,这样不怕学科分数变化。
--  作者:有点蓝
--  发布时间: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()

--  作者:有点蓝
--  发布时间: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(标准总分)