主题:我问这个分页问题已经三天了,我看得都晕了,搞不定了.高手帮帮忙啊!!
wcc9
[专家分:130] 发布于 2006-12-13 09:59:00
我在点击下一页时就出现错误!是怎么回事啊?
错误如下:错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/tiyie/jcxx/fun1.inc, 第 5 行
代码:<!--#include file="fun1.inc"-->
<%
path=Request.ServerVariables("PATH_INFO")
Response.write(Request.ServerVariables("PATH_INFO"))
Response.write(Request.QueryString("page"))
if Request("tsel")<>""then
tsel=Request("tsel")
qname=Request("qname")
jname=Request("sel")
'session("tj")=tj
'session("lname")=lname
'session("jname")=jname
end if
if Request("tsel")="=" then
sql="select*from tal_spinfo where spname='"&qname&"'"
end if
if Request("tsel")="like" then
sql="select*from tal_spinfo where spname like '%"&Request("qname")&"%'"
end if
if Request("tsel")="all" then
sql="select*from tal_spinfo"
end if
set rs=dbs_con(sql,1)
if not rs.eof then
teml=rs.recordcount
shum=2
rs.pagesize=shum
page=clng(Request("page"))
if page<1 then page=1
if page>rs.pagecount then page=rs.pagecount
show rs,page
sub show(rs,page)
rs.absolutepage=page
for i=1 to rs.pagesize
%>
<p>
<table width="804" border="n" align="center" cellspacing="0">
<tr>
<td width="264" bgcolor="#CCCCCC">商品名称:<%=rs("spname")%></td>
<td width="254" bgcolor="#CCCCCC">简称:<%=rs("jc")%></td>
<td width="280" bgcolor="#CCCCCC">产地:<%=rs("cd")%></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">规格:<%=rs("gg")%></td>
<td bgcolor="#CCCCCC">包装:<%=rs("bz")%></td>
<td bgcolor="#CCCCCC">单位:<%=rs("dw")%></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">批号:<%=rs("ph")%></td>
<td colspan="2" bgcolor="#CCCCCC">供应商全称:<%=rs("gysname")%></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">批准文号:<%=rs("pzwh")%></td>
<td colspan="2" bgcolor="#CCCCCC">备注:<%=rs("memo")%></td>
</tr>
</table></p>
<%rs.movenext
if rs.eof then exit for
next
end sub
end if
%></td></tr></table>
<form action="checkspindex.asp" method="post">
<div align="center">
<%if page<>1 then%>
<font size="+2"><a href=<%=path%>?page=1>第一页</a>
</font><a href=<%=path%>?page=<%=(page-1)%>>上一页</a>
<%end if
if page<>rs.pagecount then%>
<a href=<%=path%>?page=<%=(page+1)%>>下一页</a>
<a href=<%=path%>?page=<%=rs.pagecount%>>最后一页</a>
<%end if%>
<font color="#336699">
<input type="text" name="page" size="3" />输入页次
</font><font color=red><%=page%>/<%=rs.pagecount%></font>[<a href="spindex.asp">返回</a>]</div></form>
fun1.inc
代码:<%
Function dbs_con(sql,para)
set rs=server.CreateObject("ADODB.recordset")
conn="provider=sqloledb;Data source=WCC9-A251FB5923;initial catalog=tiyie;User ID=sa;password=;"
rs.open sql,conn,para,1
set dbs_con=rs
End Function
%>
回复列表 (共13个回复)
沙发
nckggood [专家分:1020] 发布于 2006-12-13 11:14:00
使用AbsolutePage这些属性,要提供者必须支持相应的功能才能使用此属性。
板凳
wcc9 [专家分:130] 发布于 2006-12-13 11:36:00
那我应该怎么做才能用这个属性啊?
3 楼
wcc9 [专家分:130] 发布于 2006-12-13 11:47:00
我把AbsolutePage=page 改成:
for i=1 to (page+1)*rs.pagesize
rs.movenext
next
他出现-1/-1..晕倒... 我快疯了..
我该怎么办啊?????高手们....帮帮忙啊..我以前没用过种分页..
4 楼
nckggood [专家分:1020] 发布于 2006-12-13 12:06:00
<% pagetemp=Trim(Request("page"))
if IsNumeric(pagetemp)=false then
page=1
else
page=int(pagetemp)
end if
pacount=5'一页有5条记录
pasize = int(rec.RecordCount/pacount)
if (rec.recordcount mod pacount)>0 then
pasize=pasize+1
end if
if page>pasize then
page=pasize
end if
if page<=0 then
page=1
end if
if (page-1)>0 then
rec.move (page-1)*pacount
end if
%>
5 楼
wcc9 [专家分:130] 发布于 2006-12-13 12:34:00
还是不行..我用你的代码改了一下,,可以显示第一页,,,点击第二页时就出现错误..
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/tiyie/jcxx/fun1.inc, 第 5 行
6 楼
wcc9 [专家分:130] 发布于 2006-12-13 13:09:00
楼上的兄弟..你能不能给我一套完整的分页代码给我参考参考啊?我的EMAIL:w-ch-ch@163.com 谢谢!
7 楼
notbird [专家分:2800] 发布于 2006-12-13 14:51:00
文件名:aa.asp
数据库66.mdb表名为info,包含三个字段: id(自动编号),rec1,rec2(文本),你随便添加一些记录就可以了。
on error resum next 语句用于解决输入错误(用户可能输入了汉字,英文而不是数字)
<%
on error resume next
dim rs,sql,i
filePath = Server.MapPath("66.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
set rs =Server.CreateObject("adodb.recordset")
sql="select * from info order by id"
rs.open sql,conn,1,1
rs.pagesize=5
page=clng(Request("page"))
if page<1 then page=1
if page>rs.pagecount then page=rs.pagecount
rs.AbsolutePage = page
%>
<table>
<% for i=1 to rs.pagesize %>
<tr>
<td ><% response.write rs("rec1") %></td>
<td ><% response.write rs("rec2") %></td>
</tr>
<% rs.movenext
If rs.EOF Then
Exit For
End If
next
%>
</table>
<script Language="JavaScript">
function ChkFields() {
if (document.Myform.page.value=='') {
window.alert ("请输入页数");
Myform.page.focus();
return false
}
Myform.action="aa.asp";
Myform.submit();
return true
}
</script>
<form mehtod="POST" name="Myform" >
输入页数:<input type="text" name="page" size="4">
<input type="button" value="确定" onclick="ChkFields()">
<%
if page>1 then
Response.write("<a href=aa.asp?page=1>第一页</a> ")
Response.write("<a href=aa.asp?page="&(page-1)&">上一页</a> ")
end if
if page <> rs.pagecount then
Response.write("<a href=aa.asp?page="&(page+1)&">下一页</a> ")
Response.write("<a href=aa.asp?page="&rs.pagecount&">最后一页</a> ")
end if
for i=1 to rs.pagecount
if i <> page then
response.write "<a href=aa.asp?page="&i&">" &i& "</a> "
else
response.write i&" "
end if
next
%>
页数:<% =page %>/<% =rs.pagecount %>
</form>
下载地址:
[url=http://pcfun.cn:888/upload/pages_2006-12-13_14:55:16_553.rar]记录的分页显示[/url]
8 楼
pk4321 [专家分:690] 发布于 2006-12-14 10:07:00
楼主的数据连接不对
改成这样试试:
Set conn = Server.CreateObject("ADODB.Connection")
conn.CursorLocation=3
conn.Open "Provider=SQLOLEDB.1;User ID=sa;Password=;Initial Catalog=tiyie;Data Source=WCC9-A251FB5923"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 1, 1
另外,请将此函数取消,不要为了少写上面几行代码而严重地降低程序的执行效率!
Function dbs_con(sql,para)
...
End Function
很多菜鸟都会自作聪明的将建立rs和conn的那几行代码封装在一个Function、Sub、甚至在一个Class中,这样虽然你写代码的时候会省点,但却严重的降低执行效率。因为Function、Sub、Class的调用是要有额外的系统资源开支的,rs是很经常用到的,如果你的ASP程序调用了100次,那么就要额外的开销系统资源100次!
9 楼
wcc9 [专家分:130] 发布于 2006-12-14 19:41:00
楼上的兄弟..我用了你的方法..还是不得/它出现 rs.Open sql,conn,1,1 这句话是错误的..
错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/tiyie/jcxx/checkspindex.asp, 第 39 行
难道是我读取数据库不对...我如果加:on error resume next
可以点击下一页..不过里面没有内容.我应该怎么办呢?
10 楼
pk4321 [专家分:690] 发布于 2006-12-15 11:21:00
请检查你的SQL语句!
我来回复