| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1179 人关注过本帖
标题:ASP成绩统计
只看楼主 加入收藏
shineld
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-25
收藏
 问题点数:0 回复次数:4 
ASP成绩统计

要完成一个统计班级的不合格率的程序

这些数据都已经预先放在acess的数据表里面了
要按照班级分别查询出每个班不合格的人数再计算出不合格率最终显示出来

想不好该怎么写ASP语句
感觉上是要用group语句吧

但是不知到该怎么写,也不知道用group分组好的数据该如何去调用才能算出不合格率并且输出

班级(bj)的信息存在一个叫学生(xs)的表中
成绩变量为(cj)存在一个成绩(cj)表中.两者有相互联系的变量


代码如下

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ=" & Server.MapPath("shuju.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"


sqlstr1="select bj from cj,xs,kc where cj.cj<60 Group By xs.bj"
Set rs1 = Server.Createobject("ADODB.recordset")
rs1.open sqlstr1,conn1,1,3

Response.Write "<p>Group By 班级"

a=0

if not rs1.eof then

do while not (rs1.eof or rs1.bof) and count<rs1.PageSize

bj=rs1("bj")

a0= Conn1.Execute("Select count(*) From cj,xs,kc where cj.cj<60 and xs.bj='"&bj&"'")(0)
b0= Conn1.Execute("Select count(*) From cj,xs,kc where cj.cj<40 and xs.bj='"&bj&"'")(0)


a=a0/100*100
a=fix(a)

Response.Write "<BR>" & rs1("bj")


%>

<td><%=a&"%"%></td>

<%
rs1.movenext

loop

else
response.write"<p>发生错误1!<p>"

response.end

end if
%>


我的原意是想通过判断rs1("bj")班级的值来统计不合格的人数以及各个班级的总人数

结果却是比较奇怪的答案

搜索更多相关主题的帖子: ASP 不合格率 变量 统计 group 
2007-07-26 00:58
shineld
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-25
收藏
得分:0 
a0= Conn1.Execute("Select count(*) From cj,xs,kc where cj.cj<60 and xs.bj='"&bj&"'")(0)

这儿的a0到底输出的是一个什么值呢?

我将
a0= Conn1.Execute("Select count(*) From cj,xs,kc where cj.cj<60 and xs.bj='"&bj&"'")(0)
改为
a0= Conn1.Execute("Select count(*) From cj,xs,kc where cj.cj=20and xs.bj='"&bj&"'")(0)

输出改为
a=a0/100*100

20是我的成绩中最小的一个数

照理说应该答案是 1个为1,其它均为0
可现在的结果却是





Group By 班级
040 5%
041 10%
042 10%
043 10%
044 5%
045 10%


请问下是什么问题?
2007-07-26 01:10
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 

试试这个,我这边已经调试通过,把我的conn改成你的conn1,比率没有写,你自己补上
<%
set rs=Server.CreateObject("adodb.recordset")
sql= "select bj,count(bj) as tj from xs inner join cj on xs.xh=cj.xh where int(cj)<60 group by xs.bj"
rs.open sql,conn,1,1
if rs.bof and rs.eof then
response.Write "<script language='javascript'>alert('无记录'!);</script>"
response.end
else
do while not rs.eof
%>
<%
set rs1=Server.CreateObject("adodb.recordset")
sql1 ="select bj,count(bj) as tj1 from xs where bj='" & rs("bj") & "' group by bj"
rs1.open sql1,conn,1,1
%>
班级:<%=rs("bj")%>&nbsp;
不及格人数:<%=rs("tj")%><br>
班级:<%=rs1("bj")%>&nbsp;
班级人数:<%=rs1("tj1")%><br>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>

<%
end if
%>

2007-07-26 04:05
shineld
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-25
收藏
得分:0 
回复:(shineld)ASP成绩统计

问题解决了
谢谢

[此贴子已经被作者于2007-7-26 10:12:13编辑过]

2007-07-26 10:01
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 

b=rs(“tj1”)
改成
b=rs1(“tj1”)

2007-07-26 10:31
快速回复:ASP成绩统计
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017233 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved