注册 登录
编程论坛 ASP技术论坛

select count(*)语句在asp中如何使用

jingjing316 发布于 2010-01-19 11:31, 4702 次点击
有一表tbscore,里面有一个字段isexam,想得到isexam=1的记录的总数,
sql2="select count(*) as num1 from tbscore where where tbscore.kcid="&kcid&" and tbscore.paperno="&paperno&" and isexam=1 "
set rs2=server.createobject("adodb.recordset")
rs2.open sql2,conn,3,2
 do while not rs2.eof
rs2.movenext
loop
response.write rs2("num1" )
可是无法执行,报错如下:错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'where tbscore.kcid=2 and tbscore.paperno=63 and isexam=1' 中。


就是isexam来确定是否参加了考试,0为未参加,1为参加,看看有多少人没有考试。


[ 本帖最后由 jingjing316 于 2010-1-19 11:39 编辑 ]
13 回复
#2
aspic2010-01-19 11:45
rs2.open sql2,conn,3,2
do while not rs2.eof
rs2.movenext
loop
????????
#3
aspic2010-01-19 11:46
conn.execute("select count(*) as num1 from tbscore where where tbscore.kcid="&kcid&" and tbscore.paperno="&paperno&" and isexam=1")(0)
#4
jingjing3162010-01-19 11:52
以下是引用aspic在2010-1-19 11:46:39的发言:

conn.execute("select count(*) as num1 from tbscore where where tbscore.kcid="&kcid&" and tbscore.paperno="&paperno&" and isexam=1")(0)
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'where tbscore.kcid=2 and tbscore.paperno=63 and isexam=1' 中。
/ww/exam/adminkcname.asp, 第 82 行
使用上面一句的报错信息。
#5
aspic2010-01-19 11:58
明明写了两个where
#6
dissun2010-01-19 14:14
我终于发现一个问题,就是自己检查自己的代码时,看见的不是显示屏上打出来的代码,而是我们自己大脑中浮现的代码。。。
怪不得自己的代码需要别人来检查,哈哈
#7
jingjing3162010-01-19 14:37
谢谢!select count(*)问题已解决,又有新问题,代码如下
<%
sql="select  banji,count(banji)  as num  from tbuser   group by banji"
Set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,3,1

 
response.write rs("banji")
response.write rs("num")
%>
统计一下每个班级有多少人,这样显示结果是表中最上面的一个班。如果写成下面的
<%
sql="select  banji,count(banji)  as num  from tbuser   group by banji"
Set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,3,1

Do While Not rs.eof
rs.movenext
 
response.write rs("banji")
response.write rs("num")

loop
%>
就连一个也无法显示,出现报错错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
,改如何修改?才能实现每个班相应的人数都统计出来
#8
aspic2010-01-19 15:43
你的循环真搞笑
Do While Not rs.eof
    response.write rs("banji")
    response.write rs("num")
    rs.movenext
loop
#9
jingjing3162010-01-19 15:52
失之毫厘,差之千里,问题已解决。不过统计的到已经参加考试的人员按班级班级分组,和需要参加考试的人员按班级分组的结果。

例如统计五年级一班50人,已经参加过考试的30人,求百分比,如何处理。
同时问一下,asp+access支持带有in的子查询吗?

[ 本帖最后由 jingjing316 于 2010-1-19 16:06 编辑 ]
#10
aspic2010-01-19 16:09
其实自己动下手就知道是否支持了
asp也有算术运算符的哦
#11
jingjing3162010-01-20 10:20
response.write "<table border=1 cellspacing=0 cellpadding=0>"
response.write"<th>参加考试的单位</th> "
response.write"&nbsp;&nbsp;&nbsp;&nbsp;"
response.write"<th>人数<th> "
'response.write"<br>"
sql3="select banji,count(banji) as num2 from tbuser ,tbscore where  tbscore.kcid="&kcid&" and tbscore.paperno="&paperno&"  and tbuser.username=tbscore.username group by banji"
Set rs3=server.CreateObject("adodb.recordset")
rs3.open sql3,conn,3,1
while not rs3.eof
response.write "<tr><td align=center>"
response.write rs3("banji")
response.write "</td>"
'response.write"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
response.write "<td align=center>"
response.write rs3("num2")
response.write "</td></tr>"
'response.write"<br>"
rs3.movenext
wend
rs3.close
'response.write"<hr>"
response.write "<table  border=1 cellspacing=0 cellpadding=0 align=left>"
response.write"<th>已经参加考试单位</th>"
response.write"&nbsp;&nbsp;&nbsp;&nbsp;"
response.write"<th>人数</th> "
'response.write"<br>"

sql4="select banji,count(banji) as num1 from tbuser ,tbscore where  tbscore.kcid="&kcid&" and tbscore.paperno="&paperno&" and  tbscore.isexam=1  and tbuser.username=tbscore.username group by banji"
Set rs4=server.CreateObject("adodb.recordset")
rs4.open sql4,conn,3,1
while not rs4.eof
response.write "<tr><td align=center>"
response.write rs4("banji")
response.write "</td>"
'response.write"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
response.write "<td align=center>"
response.write rs4("num1")
response.write "</td></tr>"

'response.write"<br>"
rs4.movenext
wend
代码如上,得到结果如图所示
只有本站会员才能查看附件,请 登录
,怎样写才能得到下面这种格式呢?
只有本站会员才能查看附件,请 登录

简单说就是让这两个表格并列排列。

[ 本帖最后由 jingjing316 于 2010-1-20 10:38 编辑 ]
#12
chenguoxing5172010-01-20 10:50
像这种sql语句报错,一般采用的方法就是,在执行该sql语句前,打印出该sql语句,然后将其copy到相应的数据库中直接执行,错误就一目了然
#13
aspic2010-01-20 11:19
以下是引用jingjing316在2010-1-20 10:20:14的发言:

response.write "<table border=1 cellspacing=0 cellpadding=0>"
response.write"<th>参加考试的单位</th> "
response.write"&nbsp;&nbsp;&nbsp;&nbsp;"
response.write"<th>人数<th> "
'response.write"<br>"
sql3 ...
这个可是基础的html
先去找手册看看tr td吧
#14
jingjing3162010-01-20 14:25
以下是引用aspic在2010-1-20 11:19:30的发言:

这个可是基础的html
先去找手册看看tr td吧
确实,已找到解决方法。
只有本站会员才能查看附件,请 登录

谢谢各位!辛苦辛苦!
1