以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不存在列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95410)

--  作者:刘林
--  发布时间:2017/1/18 21:47:00
--  不存在列
DataTables("师表").loadfilter = ""
DataTables("师表").load
Dim g As New sqlGroupTableBuilder("统计表1","小生表")
Dim dt1 As Table = Tables("期末_table6")
g.C
g.Groups.AddDef("考试名称")
g.Groups.AddDef("学校")
g.Groups.AddDef("年级")
g.Groups.AddDef("类别")
g.Groups.AddDef("学校班级")
g.Totals.AddDef("姓名",AggregateEnum.Count,"参考数")
g.Totals.AddDef("语文",AggregateEnum.Average,"语文_人平")
g.Totals.AddDef("数学",AggregateEnum.Average,"数学_人平")
g.Totals.AddDef("英语",AggregateEnum.Average,"英语_人平")
g.Totals.AddDef("政治",AggregateEnum.Average,"政治_人平")
g.Totals.AddDef("历史",AggregateEnum.Average,"历史_人平")
g.Totals.AddDef("物理",AggregateEnum.Average,"物理_人平")
g.Totals.AddDef("化学",AggregateEnum.Average,"化学_人平")
g.Totals.AddDef("生物",AggregateEnum.Average,"生物_人平")
g.Totals.AddDef("地理",AggregateEnum.Average,"地理_人平")
g.Totals.AddDef("总分",AggregateEnum.Average,"总分_人平")
g.Totals.AddDef("语文",AggregateEnum.sum,"语总")
g.Totals.AddDef("数学",AggregateEnum.sum,"数总")
g.Totals.AddDef("英语",AggregateEnum.sum,"英总")
g.Totals.AddDef("政治",AggregateEnum.sum,"政总")
g.Totals.AddDef("历史",AggregateEnum.sum,"历总")
g.Totals.AddDef("生物",AggregateEnum.sum,"生总")
g.Totals.AddDef("地理",AggregateEnum.sum,"地总")
g.Totals.AddDef("物理",AggregateEnum.sum,"物总")
g.Totals.AddDef("化学",AggregateEnum.sum,"化总")
g.Totals.AddDef("总分",AggregateEnum.sum,"总分")

g.Totals.AddExp("语文_优数", "case when convert(int,年级)<7 and 语文>=85 then 1 when convert(int,年级)>=7 and 语文>=80 then 1 else 0 end")
g.Totals.AddExp("数学_优数", "case when convert(int,年级)<7 and 数学>=85 then 1 when convert(int,年级)>=7 and 数学>=80 then 1 else 0 end")
g.Totals.AddExp("英语_优数", "case when convert(int,年级)>=7 and 英语>=80 then 1 else 0 end")
g.Totals.AddExp("政治_优数", "case when convert(int,年级)>=7 and 政治>=80 then 1 else 0 end")
g.Totals.AddExp("历史_优数", "case when convert(int,年级)>=7 and 历史>=80 then 1 else 0 end")
g.Totals.AddExp("生物_优数", "case when convert(int,年级)>=7 and 生物>=80 then 1 else 0 end")
g.Totals.AddExp("地理_优数", "case when convert(int,年级)>=7 and 地理>=80 then 1 else 0 end")
g.Totals.AddExp("物理_优数", "case when convert(int,年级)>=8 and 物理>=80 then 1 else 0 end")
g.Totals.AddExp("化学_优数", "case when convert(int,年级)>=9 and 化学>=80 then 1 else 0 end")
g.Totals.AddExp("语文_及数", "case when 语文>=60 then 1 else 0 end")
g.Totals.AddExp("数学_及数", "case when 数学>=60 then 1 else 0 end")
g.Totals.AddExp("英语_及数", "case when 英语>=60 then 1 else 0 end")
g.Totals.AddExp("政治_及数", "case when 政治>=60 then 1 else 0 end")
g.Totals.AddExp("历史_及数", "case when 历史>=60 then 1 else 0 end")
g.Totals.AddExp("生物_及数", "case when 生物>=60 then 1 else 0 end")
g.Totals.AddExp("地理_及数", "case when 地理>=60 then 1 else 0 end")
g.Totals.AddExp("物理_及数", "case when 物理>=60 then 1 else 0 end")
g.Totals.AddExp("化学_及数", "case when 化学>=60 then 1 else 0 end")
dt1.DataSource = g.BuildDataSource()

dt1.DataTable.DataCols.Add("语文_教师",Gettype(String))
dt1.DataTable.DataCols.Add("数学_教师",Gettype(String))
dt1.DataTable.DataCols.Add("英语_教师",Gettype(String))
dt1.DataTable.DataCols.Add("政治_教师",Gettype(String))
dt1.DataTable.DataCols.Add("历史_教师",Gettype(String))
dt1.DataTable.DataCols.Add("物理_教师",Gettype(String))
dt1.DataTable.DataCols.Add("化学_教师",Gettype(String))
dt1.DataTable.DataCols.Add("生物_教师",Gettype(String))
dt1.DataTable.DataCols.Add("地理_教师",Gettype(String))
dt1.DataTable.DataCols.Add("汇总标识",Gettype(String))
dt1.DataTable.DataCols.Add("语文_优秀率",Gettype(Double),"语文_优数 / 参考数")
dt1.DataTable.DataCols.Add("数学_优秀率",Gettype(Double),"数学_优数 / 参考数")
dt1.DataTable.DataCols.Add("英语_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 英语_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("政治_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 政治_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("历史_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 历史_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("生物_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 生物_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("地理_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 地理_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("物理_优秀率",Gettype(Double),"iif(年级 in (\'8\',\'9\'), 物理_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("化学_优秀率",Gettype(Double),"iif(年级 in (\'9\'), 化学_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("语文_及格率",Gettype(Double),"语文_及数 / 参考数")
dt1.DataTable.DataCols.Add("数学_及格率",Gettype(Double),"数学_及数 / 参考数")
dt1.DataTable.DataCols.Add("英语_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 英语_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("政治_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 政治_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("历史_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 历史_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("生物_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 生物_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("地理_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 地理_及数 / 参考数,null)")
dt1.DataTable.DataCols.Add("物理_及格率",Gettype(Double),"iif(年级 in (\'8\',\'9\'), 物理_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("化学_及格率",Gettype(Double),"iif(年级 in (\'9\'), 化学_及数 / 参考数, null)")

dt1.DataTable.DataCols("语文_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("数学_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("英语_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("政治_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("历史_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("物理_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("化学_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("生物_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("地理_优秀率").SetFormat("#0.0%")

dt1.DataTable.DataCols("语文_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("数学_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("英语_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("政治_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("历史_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("物理_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("化学_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("生物_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("地理_及格率").SetFormat("#0.0%")

dt1.DataTable.DataCols.Add("语文_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("总分_类序",Gettype(Integer))

dt1.DataTable.DataCols.Add("语文_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_及类序",Gettype(Integer))

dt1.DataTable.DataCols.Add("语文_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_人平类序",Gettype(Integer))



dt1.DataTable.DataCols.Add("语文_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("总分_区序",Gettype(Integer))

dt1.DataTable.DataCols.Add("语文_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_及区序",Gettype(Integer))

dt1.DataTable.DataCols.Add("语文_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_人平区序",Gettype(Integer))

\'dt1.DataTable.DataCols.Add("语文_总分",Gettype(Double),"语文_人平 * 参考数")











Dim ds As DataRow
For Each r As Row In Tables("期末_table6").Rows
    ds = DataTables("师表").Find("考试名称 = \'" & r("考试名称") & "\'and 学校班级 = \'" & r("学校班级") & "\'" )
    If ds IsNot Nothing
        r("语文_教师")= ds("语文教师")
        r("数学_教师")= ds("数学教师")
        r("英语_教师")= ds("英语教师")
        r("政治_教师")= ds("政治教师")
        r("历史_教师")= ds("历史教师")
        r("物理_教师")= ds("物理教师")
        r("化学_教师")= ds("化学教师")
        r("生物_教师")= ds("生物教师")
        r("地理_教师")= ds("地理教师")
    End If
Next

Dim Ays As List(Of String())
Ays = t.DataTable.GetValues("考试名称|年级|类别") \'列名用符号|分割
Dim jAys As List(Of String())
jAys = t.DataTable.GetValues("考试名称|年级") \'列名用符号|分割

t.StopRedraw
For Each Ay As String() In Ays
    Dim f As String = "考试名称=\'" & Ay(0) & "\' And 年级=\'" & Ay(1) & "\' and 类别=\'" & Ay(2) & "\'"
    Dim r As Row = t.AddNew()
    r("考试名称") = ay(0)
    r("年级") = Ay(1)
    r("类别") = "总计" & Ay(2)
    r("汇总标识") = "汇总"
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(ay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(ay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(ay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")
    
    
    \' r("语文_优秀率") = t.compute("sum(语文_优数)",f)/r("参考数")
    \' r("数学_优秀率") = t.compute("sum(数学_优数)",f)/r("参考数")
    \' r("英语_优秀率") = t.compute("sum(英语_优数)",f)/r("参考数")
    \' r("政治_优秀率") = t.compute("sum(政治_优数)",f)/r("参考数")
    \' r("历史_优秀率") = t.compute("sum(历史_优数)",f)/r("参考数")
    \' r("生物_优秀率") = t.compute("sum(生物_优数)",f)/r("参考数")
    \' r("地理_优秀率") = t.compute("sum(地理_优数)",f)/r("参考数")
    \' r("物理_优秀率") = t.compute("sum(物理_优数)",f)/r("参考数")
    \' r("化学_优秀率") = t.compute("sum(化学_优数)",f)/r("参考数")
Next


For Each jAy As String() In jAys
    Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\'"
    Dim r As Row = t.AddNew()
    r("考试名称") = jay(0)
    r("年级") = jAy(1)
    r("类别") = "总计全区" & jay(1) & "年级"
    r("汇总标识") = "汇总全区"
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(jay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(jay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(jay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")
    
    
    \' r("语文_优秀率") = t.compute("sum(语文_优数)",f)/r("参考数")
    \' r("数学_优秀率") = t.compute("sum(数学_优数)",f)/r("参考数")
    \' r("英语_优秀率") = t.compute("sum(英语_优数)",f)/r("参考数")
    \' r("政治_优秀率") = t.compute("sum(政治_优数)",f)/r("参考数")
    \' r("历史_优秀率") = t.compute("sum(历史_优数)",f)/r("参考数")
    \' r("生物_优秀率") = t.compute("sum(生物_优数)",f)/r("参考数")
    \' r("地理_优秀率") = t.compute("sum(地理_优数)",f)/r("参考数")
    \' r("物理_优秀率") = t.compute("sum(物理_优数)",f)/r("参考数")
    \' r("化学_优秀率") = t.compute("sum(化学_优数)",f)/r("参考数")
Next
t.ResumeRedraw
dt1.Sort = "考试名称,年级,汇总标识,类别,学校班级"
dt1.SetColVisibleWidth("考试名称|69|年级|44|类别|44|学校|108|学校班级|75|参考数|47|语文_教师|47|语文_优秀率|47|语文_优区序|47|语文_优类序|47|语文_及格率|47|语文_及类序|47|语文_及区序|47|语文_人平|34|语文_人平类序|59|语文_人平区序|59|数学_教师|47|数学_优秀率|47|数学_优类序|47|数学_优区序|47|数学_及格率|47|数学_及类序|47|数学_及区序|47|数学_人平|34|数学_人平类序|59|数学_人平区序|59|英语_教师|47|英语_优秀率|47|英语_优类序|47|英语_优区序|47|英语_及格率|47|英语_及类序|47|英语_及区序|47|英语_人平|34|英语_人平类序|59|英语_人平区序|59|政治_教师|47|政治_优秀率|47|政治_优类序|47|政治_优区序|47|政治_及格率|47|政治_及类序|47|政治_及区序|47|政治_人平|34|政治_人平类序|59|政治_人平区序|59|历史_教师|47|历史_优秀率|47|历史_优类序|47|历史_优区序|47|历史_及格率|47|历史_及类序|47|历史_及区序|47|历史_人平|34|历史_人平类序|59|历史_人平区序|59|物理_教师|47|物理_优秀率|47|物理_优类序|47|物理_优区序|47|物理_及格率|47|物理_及类序|47|物理_及区序|47|物理_人平|34|物理_人平类序|59|物理_人平区序|59|化学_教师|47|化学_优秀率|47|化学_优类序|47|化学_优区序|47|化学_及格率|47|化学_及类序|47|化学_及区序|47|化学_人平|34|化学_人平类序|59|化学_人平区序|59|生物_教师|47|生物_优秀率|47|生物_优类序|47|生物_优区序|47|生物_及格率|47|生物_及类序|47|生物_及区序|47|生物_人平|34|生物_人平类序|59|生物_人平区序|59|地理_教师|47|地理_优秀率|47|地理_优类序|47|地理_优区序|47|地理_及格率|47|地理_及类序|47|地理_及区序|47|地理_人平|34|地理_人平类序|59|地理_人平区序|59|总分_人平|44|总分_类序|34|总分_区序|34")

--  作者:刘林
--  发布时间:2017/1/18 21:50:00
--  
老师,实现汇总表中再汇总,想了下办法做成这个样子,基本实现了目标,但
 \' r("语文_优秀率") = t.compute("sum(语文_优数)",f)/r("参考数")
    \' r("数学_优秀率") = t.compute("sum(数学_优数)",f)/r("参考数")
    \' r("英语_优秀率") = t.compute("sum(英语_优数)",f)/r("参考数")
    \' r("政治_优秀率") = t.compute("sum(政治_优数)",f)/r("参考数")
    \' r("历史_优秀率") = t.compute("sum(历史_优数)",f)/r("参考数")
    \' r("生物_优秀率") = t.compute("sum(生物_优数)",f)/r("参考数")
    \' r("地理_优秀率") = t.compute("sum(地理_优数)",f)/r("参考数")
    \' r("物理_优秀率") = t.compute("sum(物理_优数)",f)/r("参考数")
    \' r("化学_优秀率") = t.compute("sum(化学_优数)",f)/r("参考数")
用这段代码时出现不存在“语文_优秀率“列,因为分类汇总也要统计各科优秀率,请问是什么原因

--  作者:刘林
--  发布时间:2017/1/18 22:01:00
--  
哦,不好意思,是提示 列“语文_优秀率”为只读。
--  作者:有点色
--  发布时间:2017/1/19 0:16:00
--  

 把这句

 

dt1.DataTable.DataCols.Add("语文_优秀率",Gettype(Double),"语文_优数 / 参考数")

 

 改成

 

dt1.DataTable.DataCols.Add("语文_优秀率",Gettype(Double))
 
 如果你写了公式,默认就变成了表达式列的。

--  作者:刘林
--  发布时间:2017/1/19 10:22:00
--  
Dim t As Table = Tables("期末_table6")
t.Cols.Frozen = 6
\'t.sort = "考试名称,年级,类别,学校班级"

Dim Ays As List(Of String())
Ays = t.DataTable.GetValues("考试名称|年级|类别") \'列名用符号|分割
Dim jAys As List(Of String())
jAys = t.DataTable.GetValues("考试名称|年级") \'列名用符号|分割

t.StopRedraw
For Each Ay As String() In Ays
    Dim f As String = "考试名称=\'" & Ay(0) & "\' And 年级=\'" & Ay(1) & "\' and 类别=\'" & Ay(2) & "\'"
    Dim r As Row = t.AddNew()
    r("考试名称") = ay(0)
    r("年级") = Ay(1)
    r("类别") = "总计" & Ay(2)
    r("汇总标识") = 1
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(ay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(ay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(ay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")
   \'\' r("语文_优秀率") = t.compute("sum(语文_优数)",f)/r("参考数")
    \' r("数学_优秀率") = t.compute("sum(数学_优数)",f)/r("参考数")
    \' r("英语_优秀率") = t.compute("sum(英语_优数)",f)/r("参考数")
    \' r("政治_优秀率") = t.compute("sum(政治_优数)",f)/r("参考数")
    \' r("历史_优秀率") = t.compute("sum(历史_优数)",f)/r("参考数")
    \' r("生物_优秀率") = t.compute("sum(生物_优数)",f)/r("参考数")
    \' r("地理_优秀率") = t.compute("sum(地理_优数)",f)/r("参考数")
    \' r("物理_优秀率") = t.compute("sum(物理_优数)",f)/r("参考数")
    \' r("化学_优秀率") = t.compute("sum(化学_优数)",f)/r("参考数")
Next


For Each jAy As String() In jAys
    Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\' 汇总标识 =1 "
    Dim r As Row = t.AddNew()
    r("考试名称") = jay(0)
    r("年级") = jAy(1)
    r("类别") = "总计全区" & jay(1) & "年级"
    r("汇总标识") = 2
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(jay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(jay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(jay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")
    
    
    \' r("语文_优秀率") = t.compute("sum(语文_优数)",f)/r("参考数")
    \' r("数学_优秀率") = t.compute("sum(数学_优数)",f)/r("参考数")
    \' r("英语_优秀率") = t.compute("sum(英语_优数)",f)/r("参考数")
    \' r("政治_优秀率") = t.compute("sum(政治_优数)",f)/r("参考数")
    \' r("历史_优秀率") = t.compute("sum(历史_优数)",f)/r("参考数")
    \' r("生物_优秀率") = t.compute("sum(生物_优数)",f)/r("参考数")
    \' r("地理_优秀率") = t.compute("sum(地理_优数)",f)/r("参考数")
    \' r("物理_优秀率") = t.compute("sum(物理_优数)",f)/r("参考数")
    \' r("化学_优秀率") = t.compute("sum(化学_优数)",f)/r("参考数")
Next
t.ResumeRedraw
dt1.Sort = "考试名称,年级,汇总标识,类别,学校班级"

老师上面红色的代码统计出来的班数为空呢

--  作者:有点色
--  发布时间:2017/1/19 10:24:00
--  

Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\' 汇总标识 =1 "

 

改成

 

Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\' And 汇总标识 =1 "

[此贴子已经被作者于2017/1/19 10:24:24编辑过]

--  作者:刘林
--  发布时间:2017/1/19 10:32:00
--  
DataTables("师表").loadfilter = ""
DataTables("师表").load
Dim g As New sqlGroupTableBuilder("统计表1","小生表")
Dim dt1 As Table = Tables("期末_table6")
g.C
g.Groups.AddDef("考试名称")
g.Groups.AddDef("学校")
g.Groups.AddDef("年级")
g.Groups.AddDef("类别")
g.Groups.AddDef("学校班级")
g.Totals.AddDef("姓名",AggregateEnum.Count,"参考数")
g.Totals.AddDef("语文",AggregateEnum.Average,"语文_人平")
g.Totals.AddDef("数学",AggregateEnum.Average,"数学_人平")
g.Totals.AddDef("英语",AggregateEnum.Average,"英语_人平")
g.Totals.AddDef("政治",AggregateEnum.Average,"政治_人平")
g.Totals.AddDef("历史",AggregateEnum.Average,"历史_人平")
g.Totals.AddDef("物理",AggregateEnum.Average,"物理_人平")
g.Totals.AddDef("化学",AggregateEnum.Average,"化学_人平")
g.Totals.AddDef("生物",AggregateEnum.Average,"生物_人平")
g.Totals.AddDef("地理",AggregateEnum.Average,"地理_人平")
g.Totals.AddDef("总分",AggregateEnum.Average,"总分_人平")
g.Totals.AddDef("语文",AggregateEnum.sum,"语总")
g.Totals.AddDef("数学",AggregateEnum.sum,"数总")
g.Totals.AddDef("英语",AggregateEnum.sum,"英总")
g.Totals.AddDef("政治",AggregateEnum.sum,"政总")
g.Totals.AddDef("历史",AggregateEnum.sum,"历总")
g.Totals.AddDef("生物",AggregateEnum.sum,"生总")
g.Totals.AddDef("地理",AggregateEnum.sum,"地总")
g.Totals.AddDef("物理",AggregateEnum.sum,"物总")
g.Totals.AddDef("化学",AggregateEnum.sum,"化总")
g.Totals.AddDef("总分",AggregateEnum.sum,"总分")
g.Totals.AddExp("语文_优数", "case when convert(int,年级)<7 and 语文>=85 then 1 when convert(int,年级)>=7 and 语文>=80 then 1 else 0 end")
g.Totals.AddExp("数学_优数", "case when convert(int,年级)<7 and 数学>=85 then 1 when convert(int,年级)>=7 and 数学>=80 then 1 else 0 end")
g.Totals.AddExp("英语_优数", "case when convert(int,年级)>=7 and 英语>=80 then 1 else 0 end")
g.Totals.AddExp("政治_优数", "case when convert(int,年级)>=7 and 政治>=80 then 1 else 0 end")
g.Totals.AddExp("历史_优数", "case when convert(int,年级)>=7 and 历史>=80 then 1 else 0 end")
g.Totals.AddExp("生物_优数", "case when convert(int,年级)>=7 and 生物>=80 then 1 else 0 end")
g.Totals.AddExp("地理_优数", "case when convert(int,年级)>=7 and 地理>=80 then 1 else 0 end")
g.Totals.AddExp("物理_优数", "case when convert(int,年级)>=8 and 物理>=80 then 1 else 0 end")
g.Totals.AddExp("化学_优数", "case when convert(int,年级)>=9 and 化学>=80 then 1 else 0 end")
g.Totals.AddExp("语文_及数", "case when 语文>=60 then 1 else 0 end")
g.Totals.AddExp("数学_及数", "case when 数学>=60 then 1 else 0 end")
g.Totals.AddExp("英语_及数", "case when 英语>=60 then 1 else 0 end")
g.Totals.AddExp("政治_及数", "case when 政治>=60 then 1 else 0 end")
g.Totals.AddExp("历史_及数", "case when 历史>=60 then 1 else 0 end")
g.Totals.AddExp("生物_及数", "case when 生物>=60 then 1 else 0 end")
g.Totals.AddExp("地理_及数", "case when 地理>=60 then 1 else 0 end")
g.Totals.AddExp("物理_及数", "case when 物理>=60 then 1 else 0 end")
g.Totals.AddExp("化学_及数", "case when 化学>=60 then 1 else 0 end")
dt1.DataSource = g.BuildDataSource()
dt1.DataTable.DataCols.Add("语文_教师",Gettype(String))
dt1.DataTable.DataCols.Add("数学_教师",Gettype(String))
dt1.DataTable.DataCols.Add("英语_教师",Gettype(String))
dt1.DataTable.DataCols.Add("政治_教师",Gettype(String))
dt1.DataTable.DataCols.Add("历史_教师",Gettype(String))
dt1.DataTable.DataCols.Add("物理_教师",Gettype(String))
dt1.DataTable.DataCols.Add("化学_教师",Gettype(String))
dt1.DataTable.DataCols.Add("生物_教师",Gettype(String))
dt1.DataTable.DataCols.Add("地理_教师",Gettype(String))
dt1.DataTable.DataCols.Add("汇总标识",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_优秀率",Gettype(Double),"语文_优数 / 参考数")
dt1.DataTable.DataCols.Add("数学_优秀率",Gettype(Double),"数学_优数 / 参考数")
dt1.DataTable.DataCols.Add("英语_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 英语_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("政治_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 政治_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("历史_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 历史_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("生物_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 生物_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("地理_优秀率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 地理_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("物理_优秀率",Gettype(Double),"iif(年级 in (\'8\',\'9\'), 物理_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("化学_优秀率",Gettype(Double),"iif(年级 in (\'9\'), 化学_优数 / 参考数, null)")
dt1.DataTable.DataCols.Add("语文_及格率",Gettype(Double),"语文_及数 / 参考数")
dt1.DataTable.DataCols.Add("数学_及格率",Gettype(Double),"数学_及数 / 参考数")
dt1.DataTable.DataCols.Add("英语_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 英语_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("政治_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 政治_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("历史_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\',\'9\'), 历史_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("生物_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 生物_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("地理_及格率",Gettype(Double),"iif(年级 in (\'7\',\'8\'), 地理_及数 / 参考数,null)")
dt1.DataTable.DataCols.Add("物理_及格率",Gettype(Double),"iif(年级 in (\'8\',\'9\'), 物理_及数 / 参考数, null)")
dt1.DataTable.DataCols.Add("化学_及格率",Gettype(Double),"iif(年级 in (\'9\'), 化学_及数 / 参考数, null)")
dt1.DataTable.DataCols("语文_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("数学_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("英语_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("政治_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("历史_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("物理_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("化学_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("生物_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("地理_优秀率").SetFormat("#0.0%")
dt1.DataTable.DataCols("语文_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("数学_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("英语_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("政治_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("历史_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("物理_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("化学_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("生物_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols("地理_及格率").SetFormat("#0.0%")
dt1.DataTable.DataCols.Add("语文_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_优类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("总分_类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_及类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_人平类序",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_优区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("总分_区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_及区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("语文_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("数学_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("英语_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("政治_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("历史_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("生物_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("地理_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("物理_人平区序",Gettype(Integer))
dt1.DataTable.DataCols.Add("化学_人平区序",Gettype(Integer))

Dim ds As DataRow
For Each r As Row In Tables("期末_table6").Rows
    ds = DataTables("师表").Find("考试名称 = \'" & r("考试名称") & "\'and 学校班级 = \'" & r("学校班级") & "\'" )
    If ds IsNot Nothing
        r("语文_教师")= ds("语文教师")
        r("数学_教师")= ds("数学教师")
        r("英语_教师")= ds("英语教师")
        r("政治_教师")= ds("政治教师")
        r("历史_教师")= ds("历史教师")
        r("物理_教师")= ds("物理教师")
        r("化学_教师")= ds("化学教师")
        r("生物_教师")= ds("生物教师")
        r("地理_教师")= ds("地理教师")
    End If
Next


Dim t As Table = Tables("期末_table6")
t.Cols.Frozen = 6
\'t.sort = "考试名称,年级,类别,学校班级"

Dim Ays As List(Of String())
Ays = t.DataTable.GetValues("考试名称|年级|类别") \'列名用符号|分割
Dim jAys As List(Of String())
jAys = t.DataTable.GetValues("考试名称|年级") \'列名用符号|分割

t.StopRedraw
For Each Ay As String() In Ays
    Dim f As String = "考试名称=\'" & Ay(0) & "\' And 年级=\'" & Ay(1) & "\' and 类别=\'" & Ay(2) & "\'"
    Dim r As Row = t.AddNew()
    r("考试名称") = ay(0)
    r("年级") = Ay(1)
    r("类别") = "总计" & Ay(2)
    r("汇总标识") = 1
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(ay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(ay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(ay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")
  
Next
For Each jAy As String() In jAys
    Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\' 汇总标识 < 1 "
    Dim r As Row = t.AddNew()
    r("考试名称") = jay(0)
    r("年级") = jAy(1)
    r("类别") = "总计全区" & jay(1) & "年级"
    r("汇总标识") = 2
    r("学校班级") = t.Compute("Count(学校班级)",f) & "个班"
    r("参考数") =  t.Compute("Sum(参考数)",f)
    r("语文_人平") = t.compute("sum(语总)",f)/ r("参考数")
    r("数学_人平") = t.compute("sum(数总)",f)/  r("参考数")
    If val(jay(1)) > 6
        r("英语_人平") = t.compute("sum(英总)",f)/  r("参考数")
        r("政治_人平") = t.compute("sum(政总)",f)/  r("参考数")
        r("历史_人平") = t.compute("sum(历总)",f)/ r("参考数")
        r("生物_人平") = t.compute("sum(生总)",f)/  r("参考数")
        r("地理_人平") = t.compute("sum(地总)",f)/  r("参考数")
    End If
    If val(jay(1)) >7
        r("物理_人平") = t.compute("sum(物总)",f)/  r("参考数")
    End If
    If val(jay(1)) >8
        r("化学_人平") = t.compute("sum(化总)",f)/ r("参考数")
    End If
    r("总分_人平") = t.compute("sum(总分)",f)/ r("参考数")

Next
t.ResumeRedraw
dt1.Sort = "考试名称,年级,汇总标识,类别,学校班级"


--  作者:有点色
--  发布时间:2017/1/19 10:33:00
--  
看6楼
--  作者:刘林
--  发布时间:2017/1/19 10:43:00
--  
Dim f As String = "考试名称=\'" & jAy(0) & "\' And 年级=\'" & jAy(1) & "\' and 汇总标识 < 1 "

还是不行

--  作者:有点色
--  发布时间:2017/1/19 10:46:00
--  

 那就改成

 

Dim f As String = ""

 

 不断加条件,看是不是你条件没写对。