mschart控件和数据库的连接

happying2000 2004-10-04 07:35:29
我想做一个学生信息管理系统,其中要用到各专业,年级,班级学生学习的统计。我的想法是这样的:我用COMBOBOX控件选择专业,年级,班级,课程名称。我想所选择的班级的成绩段组成在mschart控件中相应的显示出来(我用二维饼图和SQL数据库)。即当我选定一个班级的某一门课程名时,在mschart中显示该班级的学生成绩段比例(90以上,80-90,70-80,60-70,60以下)。我不知道怎么实现。希望大虾指点(我用的SQL数据库!)。先谢谢了!!
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
guxizhw 2004-10-06
  • 打赏
  • 举报
回复
上面那个可能不对,你看一下这个吧,我没有调试过,有问题再联系,guxizhw@sina.com
Dim strWhere As String

Dim strSQL As String

Dim rs As New ADODB.Recordset

Dim arr() As String

strWhere = " WHERE 专业='专业1' AND 年级='年级1' AND 班级='班级1' AND 课程='课程1'"

strSQL = "SELECT SUM(CASE WHEN 成绩>=90 AND 成绩<100 THEN 成绩 ELSE 0 END) AS L90Above," _
& "SUM(CASE WHEN 成绩>=80 AND 成绩<90 THEN 成绩 ELSE 0 END) AS L80To90," _
& "SUM(CASE WHEN 成绩>=70 AND 成绩<80 THEN 成绩 ELSE 0 END) AS L70To80," _
& "SUM(CASE WHEN 成绩>=60 AND 成绩<70 THEN 成绩 ELSE 0 END) AS L60To70," _
& "SUM(CASE WHEN 成绩<60 THEN 成绩 ELSE 0 END) AS L50Low,Count(学号) AS StudentNum FROM 表名 " _

strSQL = strSQL & strWhere

If rs.state = adStateOpen Then rs.Close

rs.Open strSQL, cn, adOpenStatic, adLockReadOnly

If Not rs.EOF Then

ReDim arr(0 To rs.Fields.Count - 1, 0 To 1)

For i = 0 To rs.Fields.Count - 1

If rs("StudentNum") <> 0 Then

arr(i, 0) = Mid(rs.Fields(i).Name, 2) & "比例"

arr(i, 1) = rs.Fields(i).value / rs("StudentNum")

Else

arr(i, 0) = "没有人在" & Mid(rs.Fields(i).Name, 2)

End If

Next

chart1.ChartData = arr

End If
guxizhw 2004-10-05
  • 打赏
  • 举报
回复
'表中有:专业,年级,班级,学号,姓名,课程,成绩几个列属性!!希望大虾指点一下!
Dim strWHERE As String

Dim strSQL As String

Dim rs As New ADODB.Recordset

Dim arr() As String

strWHERE = " WHERE 专业='专业1' AND 年级='年级1' AND 班级='班级1' AND 课程='课程1'"

strSQL = "SELECT SUM(CASE WHEN 成绩>=90 AND 成绩<100 THEN 成绩 ELSE 0 END) AS L90," _
& "SUM(CASE WHEN 成绩>=80 AND 成绩<90 THEN 成绩 ELSE 0 END) AS L80," _
& "SUM(CASE WHEN 成绩>=70 AND 成绩<80 THEN 成绩 ELSE 0 END) AS L70," _
& "SUM(CASE WHEN 成绩>=60 AND 成绩<70 THEN 成绩 ELSE 0 END) AS L60," _
& "SUM(CASE WHEN 成绩<60 THEN 成绩 ELSE 0 END) AS LBadStudent " _

strSQL = strSQL & strWHERE

If rs.state = adStateOpen Then rs.Close

rs.Open strSQL, cn, adOpenStatic, adLockReadOnly

If Not rs.EOF Then

ReDim arr(0 To rs.Fields.Count - 1, 0 To 1)

End If

明天,我要回了,sorry
happying2000 2004-10-05
  • 打赏
  • 举报
回复
表中有:专业,年级,班级,学号,姓名,课程,成绩几个列属性!!希望大虾指点一下!
guxizhw 2004-10-05
  • 打赏
  • 举报
回复
这种东西,没有什么可说的
关键看你的统计数据

比如选择了1班
首先统计分数在90分以上的人占全班的比例
写入arr(1,0)=90以上的人占的比例
再写入80-90的人数占全班的比例
arr(2,0)=80-90的人占的比例
然后chart.chartdata=arr
就行了

最好别绑定,不灵活

你把表弄出来,我帮你看看,呵呵

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧