Office中国论坛/Access中国论坛

标题: 谁能把这个例子作出来? [打印本页]

作者: tornado    时间: 2003-1-14 22:28
标题: 谁能把这个例子作出来?
我在作VB里的一个小程序,是这样的:
学校对学习成绩优良的学生将进行奖励,只要满足如下条件的之一就可获奖:
(1)所考的5门课的总成绩超过450分(含450)
(2)每门课的成线都在88分以上(含88)
(3)前三门主课的成绩都在95分之上,其它两非主课的成绩在80以上。
输入学生姓名及各科分数s1.s2.s3.s4.s5.判断它是否能获奖。如获奖请输出学生姓名及各科成绩?
我想把学生姓名及成绩放到access表里怎么作?有其他什么更精典的作法吗?

[em06][em06][em06][em06][em06][em06][em06][em06]


[此贴子已经被作者于2003-1-14 14:27:55编辑过]


作者: tornado    时间: 2003-1-14 22:54
标题: 是不是太简单没有人愿意作啊?
是不是太简单没有人愿意作啊?

肯请各位高手忙里偷闲作一下, 多谢多谢!!!!
作者: zhengjialon    时间: 2003-1-14 22:56
单纯是输入判断没必要放入表里,如果要统计和以后的查询又另当别论,从你的要求来看用一用IF语句就可以搞定。如果要放入表里用查询就行,在准则里写一写条件。
作者: tornado    时间: 2003-1-14 23:03
标题: 我就是想把VB想把VB 里编的程序和access表联接起来,我该怎么做?
我就是想把VB想把VB 里编的程序和access表联接起来,我该怎么做?( 不是在access查询设计的,) 因为我从来就没有作这样的例子, 能就上面这个例子给说一下吗?

作者: waltonw    时间: 2003-1-15 06:30
先生成一张表,然后用此表生成一个查询,再在查询中设置条件即可。
作者: 小布点    时间: 2003-1-16 22:11
小布点把这个小程序做一下。

在Access建立数据库D:\db1.mdb
建立表student(ID,Name)
建立成绩表Score(id,Subject,Score,SturentID)
起中字段Subject是科目,只有s1,s2,s3,s4,s5等5门课
SturentID是学生ID,来自student表

在VB工程中引用ADO
代码如下:

Dim Conn as new ADODB.CONNECTION

sub Form_load()
'建立数据库连接
Conn.open "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdbersist Security Info=False"
End sub

Sub Commond1_OnClick()
'显示查找符合奖励的学生
Dim rs as new ADODB.RECORDSET
dim sSQL as string

Dim sStudentID as string

'查询得到总分>=450的学生
sSQL="Select studentid  From score  Where (s1+s2+s3+s4+s5)>=450 Order by ScoreSum"

sStudentID=""
rs.open sSQL,Conn,3,1
if not rs.eof
    sStudentID=rs.getstring(adClipString, -1, ",", ",", "0")
end if
rs.close

'查询得到门课分>=88的学生,但不包括上面的得奖学生
sSQL="Select studentid  From score  Where s1>=88 and s2>=88 and s3>=88 and s4>=88 and s5>=88 and studentid Not in(" & sStudentID & ")"

Dim sStudentID1 as string
rs.open sSQL,conn,3,1
if not rs.eof then
  sStudentID1 =rs.getstring(adClipString, -1, ",", ",", "0")
end if
rs.close

dim sTemp as string
Dim sTudentID3 as string

if right(sStudentID,1)="," then sStudentID=mid(sStudentID,1,len(sStudentID)-1)
if left(sStudentID1,1)<>"," then sStudentID1="," & sStudentID1
stemp=sStudentID & sStudentID1

'查询得到门课分>=88的学生,但不包括上面的得奖学生
sSQL="Select studentid  From score  Where s1>=95 and s2>=95 and s3>=95 and s4>=80 and s5>=80 and studentid Not in(" & stemp & ")"

rs.open sSQL,conn,3,1
if not rs.eof then
  sStudentID3 =rs.getstring(adClipString, -1, ",", ",", "0")
end if
rs.close

if right(stemp,1)="," then stemp=mid(stemp,1,len(stemp)-1)
if left(sStudentID3,1)<>"," then sStudentID3="," & sStudentID3

stemp=stemp & sStudentID3  '得到了符合三个条件之一的学生的ID

'下面可以得到学生的姓名及各课的分数
sSQL="Select a.Name,b.s1,b.s2.b.s3,b.s4,b.s5 from student a,score b Where a.id=b.studentid and a.id in(" & stemp & ")
rs.open sSQL,Conn,3,1

do until rs.eof
  debug.print rs("name") & "," & rs("s1") & "," & rs("s2") & "," & rs("s3") & "," & rs("s4") & "," & rs("s5")
  rs.movenext
loop
rs.close







End sub





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3