我想在VB里实现全班各科目成绩查询、显示与统计,显示控件用的是datagrid,数据库用的是access。显示出来的内容大概是这样的。
  学号  |  姓名  |  语文  |  数学  |  英语  |  计算机基础  |  计算机组装  |  总分  |  平均分  |  排名  |
我已经建立Score表用来保存成绩、Student用来保存学生信息结构,分别是这样的。
score表:
    学号  |        学期     |  类型  |   课程   |  分数  |(类型为:期中/期末)
  0701201 |2007-2008第一学期|  期中  |计算机基础|   78   |
  0701201 |2007-2008第一学期|  期末  |计算机基础|   88   |
  0701201 |2007-2008第一学期|  期中  |中英文打字|   72   |
  0701201 |2007-2008第一学期|  期末  |中英文打字|   81   |
  0701201 |2007-2008第二学期|  期中  |计算机基础|   73   |
.......
  0701204 |2007-2008第二学期|  期中  |中英文打字|   63   |Student表:
  学号  |  姓名  |
0701201 |  陈一  |
0701202 |  王二  |
0701203 |  张三  |
0701204 |  刘四  |用sql查询实现的功能:通过combo选择不同的【学期】或者【类型】显示出全班学生的成绩统计表(在datagrid中)。
请问这样建表正确吗?如果正确能够实现我要的功能吗?如果不正确那么表应该怎样建立。

解决方案 »

  1.   

    用SQL語句联合查询出你所要的字段,再绑定到DataGrid上就行了,主要是SQL語句比較关键
      

  2.   


    select stud.学号,stud.姓名,score.分数 from stud,score " & _
                    "where stud.学号=score.学号 and score.课程='计算机基础' and score.类型='期中'
    这是我用到的查询语句,问题是只能在datagrid中实现一个分数字段,查询到的是【计算机基础】、【期中】的成绩,如果我要从score表中查询到【计算机基础】、【中英文打字】。并且在datagrid中显示下面的内容呢:学号|姓名|计算机基础|中英文打字|是否要另外建立表
      

  3.   

    你可以把字段全部查詢出來,綁定到datagrid中,然后根据自己的的需求把其中一些不想要显示出来的字段隐藏起来,设置
    DataGrid1.Columns("你不想显示的字段名").Width = 0就行了
      

  4.   

     你可以动态绑定DataGrid1吗?我绑定时要报错.我根据查询条件绑定时却要报错,运行时报错,提示  
    "Run-time error '7004': 
     The rowset is not bookable" 
    把你的代码发出来我对照一下.
      

  5.   

    strcnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\db1.mdb"
        Set rsl = New ADODB.Recordset
        rsl.CursorLocation = adUseClient
        sql = "select stud.学号,stud.姓名,score.分数 from stud,score " & _
                    "where stud.学号=score.学号 and score.课程='计算机基础' and score.类型='期中'"
        rsl.Open sql, strcnn, adOpenDynamic, adLockOptimistic
        Set DataGrid1.DataSource = rsl
      

  6.   

    你的数据库这么不用sql呢?
      

  7.   

    想做一个班主任管理系统给学校班主任用用,想想就是小型数据库应用,也没有考虑太多,呵呵,当作是自己顺便学习学习。不知道caobingyi兄有什么建议没有
      

  8.   

    我看把课程表的结构改一下,把课程单独作一张表Course
    表1 Student:
    字段:学号 ,姓名
    表2 Course
    字段:课程号 , 课程名称
    表3 Score
    字段: 流水号(主键),学号(外键) ,课程号(外键) ,学期 ,类型 ,语文,数学 ,英语 ,计算机基础,计算机组装
      

  9.   

    呵呵,这样建表我也想过,但是会出现下图这种情况比如【计算机基础】第一学期就结束课程了,而【Photoshop】第二学期才开始开设课程,【中英文打字】两个学期都有开设。
    我建立表的目的就是要通过combo控件选择不同的学期,不同的类型(期中、期末),可以列出全班所选择学期开设课程成绩信息。
    呵呵,还请各位给出一个比较合理的思路,麻烦各位了
      

  10.   

    3楼提出的问题已经解决,谢谢各位。
    sorse.分数 as 计算机基础
      

  11.   

    呵呵,问题已经解决。用的就是score和Student两张表就可以解决问题。谢谢各位无私的帮助。由于是第一次发贴所以没有注意到分数的问题。以后一定注意。