Foxtable(狐表)用户栏目专家坐堂 → 成绩排名


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

主题:成绩排名

美女呀,离线,留言给我吧!
联友
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/9 7:47:00 [显示全部帖子]

生成代码:

Dim t As Table = e.Form.controls("Table1").Table
e.Form.controls("NavBar1").SelectedPage.Butt
Dim SQL As String ="Sel ect  c.学期,班级,考试名称,c.学生编号,学生姓名,学科,学生分数 Fr om ({学生基本信息} a Inner JOIN {学生缴费} b ON b.学生编号 = a.学生编号) Inner JOIN {学生成绩} c ON c.学期 = b.学期 And c.学生编号 = b.学生编号 Where c.学期 = '20191'"
Dim cmd As New SQLCommand
cmd.CommandText = SQL
Dim dt As DataTable
dt = cmd.ExecuteReader()

Dim b As New CrossTableBuilder("统计表1", dt)
b.HGroups.AddDef("学期")
b.HGroups.AddDef("考试名称")
b.HGroups.AddDef("班级")
b.HGroups.AddDef("学生编号")
b.HGroups.AddDef("学生姓名")
b.VGroups.AddDef("学科","{0}_分数")
b.Totals.AddDef("学生分数", "学生分数")
t.DataSource = b.BuildDataSource()
Dim lst As new List(of String)
dt = DataTables("成绩分析_Table1")
For Each dc As DataCol In dt.DataCols
    Dim Tel As String = dc.Caption
    If Tel .Contains("_分数") Then
        Dim Parts() As String = Tel.Split("_")
        lst.add(Parts(0) & "_名次")
    End If
Next
For Each s As String In lst
    dt.DataCols.Add(s, Gettype(Double))
Next

比如:语文_分数、语文_名次 排在一起,数学_分数、数学_名次 排在一起



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200109075218.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/1/9 7:51:43编辑过]

 回到顶部
美女呀,离线,留言给我吧!
联友
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/9 8:45:00 [显示全部帖子]

谢谢老师

 回到顶部
美女呀,离线,留言给我吧!
联友
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/9 11:35:00 [显示全部帖子]

Dim t As Table = e.Form.controls("Table1").Table
e.Form.controls("NavBar1").SelectedPage.Butt
Dim SQL As String ="Sele ct  c.学期,班级,考试名称,c.学生编号,学生姓名,学科,学生分数 Fr om ({学生基本信息} a Inner JOIN {学生缴费} b ON b.学生编号 = a.学生编号) Inner JOIN {学生成绩} c ON c.学期 = b.学期 And c.学生编号 = b.学生编号 Where c.学期 = '20191'"
Dim cmd As New SQLCommand
cmd.CommandText = SQL
Dim dt As DataTable
dt = cmd.ExecuteReader()

Dim b As New CrossTableBuilder("统计表1", dt)
b.HGroups.AddDef("学期")
b.HGroups.AddDef("考试名称")
b.HGroups.AddDef("班级")
b.HGroups.AddDef("学生编号")
b.HGroups.AddDef("学生姓名")
b.VGroups.AddDef("学科","{0}_分数")
b.Totals.AddDef("学生分数", "学生分数")
t.DataSource = b.BuildDataSource()
Dim lst As new List(of String)
dt = DataTables("成绩分析_Table1")
For Each dc As DataCol In dt.DataCols
    Dim Tel As String = dc.Caption
    If Tel.Contains("_分数") Then
        Dim Parts() As String = Tel.Split("_")
        lst.add(Parts(0) & "_名次")
    End If
Next
Dim idx As Integer= 6
For Each s As String In lst
    dt.DataCols.Add(s, Gettype(Double))
    t.cols(s).move(idx)
    idx += 2
Next

还要 求老师,我想按班级、学科排名次,求代码,谢谢

[此贴子已经被作者于2020/1/9 11:37:41编辑过]

 回到顶部
美女呀,离线,留言给我吧!
联友
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/9 12:03:00 [显示全部帖子]

Dim drs As List(Of DataRow) = DataTables("成绩表").Select("[班级] = " & bj, "总分 DESC")
   
For n As integer = 0 To drs.Count - 1 '遍历所有行
       
If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
            drs(n)(
"总分排名") = drs(n-1)("总分排名") '则排名等于上一行
       
Else
            drs(n)(
"总分排名") = n + 1 '设置排名
       
End If
   
Next
Next

 

老师,这段代码只是总分一列排名,我要多列排名。



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200109120921.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/1/9 12:08:33编辑过]

 回到顶部
美女呀,离线,留言给我吧!
联友
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/9 14:39:00 [显示全部帖子]

老师实在写不出来,按学科、班级排名次。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生成绩排名.rar

[此贴子已经被作者于2020/1/9 14:59:22编辑过]

 回到顶部
美女呀,离线,留言给我吧!
联友
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:300 积分:2565 威望:0 精华:0 注册:2013/5/23 9:49:00
  发帖心情 Post By:2020/1/10 8:45:00 [显示全部帖子]

谢谢

 回到顶部
总数 17 上一页 1 2