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

asp分页后点击下一页即出现“rs.open SQL,conn,1,1 子语法错误”提示,请问各位怎么回事?

liuvking 发布于 2009-11-02 23:25, 2015 次点击
我编制了一个背单词程序,原理是在数据库中我有几个不同英语级别的单词表,通过index.asp页面来选择一个想要进行练习的英语级别,然后把所选的值clas作为参数传到deal.asp页面,在deal.asp页面中,所选值clas为查询语句“SQL="select * from "&clas”赋值,但是,如果单纯地将clas参数替换为任意一个表名都正常,而当我用clas参数给查询语句赋值时,在第一页中可以正常显示,但一点下一页,马上就出现:“rs.open SQL,conn,1,1 子语法错误”的提示,请问这是怎么回事 啊?
注:由于单词量太多,我采用了分页浏览方式,即现在只能看第一页的内容,一点下一页就报错,请各位帮忙看看哪里出问题了。谢谢!
11 回复
#2
chenbofeng202009-11-03 09:00
rs.open SQL,conn,1,3
试试看
#3
msgj2009-11-03 10:30
分页显示时点击下一页,表不应该重新打开的你看看能不能只传(page+1)。
#4
yms1232009-11-03 14:09
很明显你的分页第二页没有得到参数。
#5
liuvking2009-11-03 15:29
回复 4楼 yms123
版主果然厉害!我今天用设置断点的方法检验了,的确是在第二页后,原本要赋给SQL语句的值没了!这是怎么回事啊?我用session变量来储存也不行,请问该怎么办?
#6
yms1232009-11-03 16:21
你可以把参数写到分页的URL里这样下一页,也可以接收,代码怎么写的?
#7
liuvking2009-11-04 21:01
回复 6楼 yms123
版主,不好意思,因为课业紧张,现在才有时间上网。
代码贴出来你看看怎么回事:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">



<title>英语</title>
</head>
<style type="text/css">

<!--
td{font: 10pt/12pt "Arial"; color: black}
-->
</style>
<body>
<font size=4 color=red><center>请根据所给中文写出英文单词</center></font>
<table align=center>
<tr>
<td>
 </td>
</tr>
</table>




<%clas=request.form("jibie")  '"jibie"是从前台传过来的所选的英语级别的表名。

Set conn= Server.CreateObject("ADODB.Connection")
provider="provider=microsoft.jet.oledb.4.0;"
DBPath ="data source=" & Server.MapPath("data.mdb")
conn.Open provider & DBPath


set rs=server.createobject("adodb.recordset")

SQL="select * from "&clas    ’这里使用session()变量也不管用,点击“下一页”后,可以检测发现原本有值的“clas”变量变成空了。

pgsize=1
page=request.querystring("page")



rs.open SQL,conn,1,1



rs.pagesize=pgsize
pgnm=rs.pagecount
if page="" or clng(page)<1 then page=1
if clng(page)>pgnm then page=pgnm
if pgnm>0 then rs.absolutepage=page
count=0


  %>

<%session("chinese")=rs("chinese1")%>
 <%session("english")=rs("english")%>
 

 
<table width="788" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#3399CC">
<tr>
    <td width="368" height="36" align="left"><font size="3">中文意思</font></td>
    <td width="414" height="36" align="left"><font size="3">请输入英文</font></td>
  
</tr>
<% do while not rs.eof and count<rs.pagesize %>


<tr><td size=4 height="25"width=368 align=left><%Response.Write rs("chinese1")%><%=rs("chinese2")%></td>
<td height="25"width=414 align=left>
<form action ="result.asp" name=getinf method=post>
 <input type=text name=english  size=58 ></td>
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
</tr>



<% count=count+1
rs.MoveNext

Loop



 rs.Close
  Set rs=Nothing
  conn.Close
  Set conn=Nothing

%>

<%session("page")=page%>
<table width="1236" align=center>
<tr><td width="281"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </font><a href=deal.asp?page=1><font size="3">第一题</font></a></td>
<td width="178"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=page-1%>>上一题</a></font></td>
<td><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=page+1%>>下一题</a></font></td>
<td width="575"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=pgnm%>>最后一题</a></font></td>
</tr></table>
<br>共有<%=pgnm%>题;当前在第<%=page%>题





</html>

</table>

 
</body>
  <center><br><input type=submit name=submit1 value="确定"></form>
  <p align="center"><a href="tongji.asp">不做了,看成绩去!</a></p>


请版主帮忙解决一下这个问题,谢谢!
#8
aspic2009-11-05 09:34
<a href=deal.asp?page=1&jibie=<%=clas%>><font size="3">第一题</font></a> '链接都添加红色部分
#9
liuvking2009-11-07 23:52
回复 8楼 aspic
貌似···还是不管呢···
高手看看改后的代码:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">



<title>英语</title>
</head>
<style type="text/css">

<!--
td{font: 10pt/12pt "Arial"; color: black}
-->
</style>
<body>
<font size=4 color=red><center>请根据所给中文写出英文单词</center></font>
<table align=center>
<tr>
<td>
 </td>
</tr>
</table>




<%clas=request.form("jibie")

Set conn= Server.CreateObject("ADODB.Connection")
provider="provider=microsoft.jet.oledb.4.0;"
DBPath ="data source=" & Server.MapPath("data.mdb")
conn.Open provider & DBPath


set rs=server.createobject("adodb.recordset")

SQL="select * from "&clas
pgsize=1
page=request.querystring("page")



rs.open SQL,conn,1,1



rs.pagesize=pgsize
pgnm=rs.pagecount
if page="" or clng(page)<1 then page=1
if clng(page)>pgnm then page=pgnm
if pgnm>0 then rs.absolutepage=page
count=0


  %>

<%session("chinese")=rs("chinese1")%>
 <%session("english")=rs("english")%>
 

 
<table width="788" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#3399CC">
<tr>
    <td width="368" height="36" align="left"><font size="3">中文意思</font></td>
    <td width="414" height="36" align="left"><font size="3">请输入英文</font></td>
  
</tr>
<% do while not rs.eof and count<rs.pagesize %>


<tr><td size=4 height="25"width=368 align=left><%Response.Write rs("chinese1")%><%=rs("chinese2")%></td>
<td height="25"width=414 align=left>
<form action ="result.asp" name=getinf method=post>
 <input type=text name=english  size=58 ></td>
 
</tr>



<% count=count+1
rs.MoveNext

Loop



 rs.Close
  Set rs=Nothing
  conn.Close
  Set conn=Nothing

%>

<%session("page")=page%>
<table width="1236" align=center>
<tr><td width="281"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </font><a href=deal.asp?page=1&jibie=<%=clas%>><font size="3">第一题</font></a></td>
<td width="178"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=page-1%>&jibie=<%=clas%>>上一题</a></font></td>
<td><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=page+1%>&jibie=<%=clas%>>下一题</a></font></td>
<td width="575"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=deal.asp?page=<%=pgnm%>&jibie=<%=clas%>>最后一题</a></font></td>
</tr></table>
<br>共有<%=pgnm%>题;当前在第<%=page%>题





</html>

</table>

 
</body>
  <center><br><input type=submit name=submit1 value="确定"></form>
  <p align="center"><a href="tongji.asp">不做了,看成绩去!</a></p>






浏览器地址栏的参数为:http://127.0.0.1/index/english/deal.asp?page=2&jibie=senior
一点“下一页”又报错了···
#10
aspic2009-11-08 09:08
<%clas=request("jibie")%> '你又不是表单提交的 这里用request.form的话当然取不到地址栏过来的参数了
<a href=deal.asp?page=1&jibie=<%=clas%>><font size="3">第一题</font></a> '链接都添加红色部分
#11
liuvking2009-11-08 21:37
回复 10楼 aspic
对啊!忘了“form”这码事,现在解决了,谢谢版主!高手啊!
但是我还有一个疑问,就是为什么用session来储存变量还是不能把值传递到下一页?
#12
yms1232009-11-08 21:47
以下是引用liuvking在2009-11-8 21:37:59的发言:

对啊!忘了“form”这码事,现在解决了,谢谢版主!高手啊!
但是我还有一个疑问,就是为什么用session来储存变量还是不能把值传递到下一页?
session存储变量受session.timeout(变量过期时间)的影响,到时间后系统自动清除变量。
1