分页的问题,rs.absolutepage=page 出错

skytears 2004-07-09 02:37:15
错误:变量或类型不正确,或者不在可以接受的范围之内,要不就是与其它数据冲突

<%
sub ShowOnePage(rs,page)
response.write "<center><table border=1>"
response.write "<tr bgcolor=#00ffff>"
response.write "<td>编号</td>"
for i=0 to rs.fields.count-1
response.write "<td>" & rs.fields(i).name & "</td>"
next
response.write "</tr>"

rs.AbsolutePage=page
for ipage=1 to rs.pagesize
response.write "<tr>"
RecNo=(page-1)*rs.PageSize+ipage
response.write "<td>" & RecNo & "</td>"
for i=0 to rs.fields.Count-1
response.write "<td>" & rs.fields(i).value & "</td>"
next
response.write "</tr>"
rs.MoveNext
if rs.eof then exit for
next
response.write "</table></center>"
end sub

%>
...全文
414 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsdzmhongm 2004-08-14
  • 打赏
  • 举报
回复
分页函数


func.asp
<%
''''''''''''''''''''''
' '
'分页函数 '
' '
''''''''''''''''''''''


sub pag_mana(table_name)
sql="select * from "&table_name&"" '从指定的数据库中读取数据
set rs=server.CreateObject("adodb.recordset")
rs.cursorlocation=3
rs.open sql,conn,3,3
if rs.recordcount>0 then
rs.pagesize=2
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''当前页的处理
if request.Form("gotopage")<>"" then
currentpage=cint(request.Form("goto"))
elseif request.Form("del")<>"" or request.Form("addsysuser") then
currentpage=cint(request.Form("hpage"))
else
if request.querystring("pagenum")="" then
currentpage=1
else
currentpage=cint(request.QueryString("pagenum"))
end if
end if

if currentpage<1 then
currentpage=1
end if
if currentpage>rs.pagecount then
currentpage=rs.pagecount
end if

'''''''''''''''''
rs.absolutepage=currentpage '确定当前页
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

response.Write("<table align=center>")
response.Write("<tr>")
''''''''''''''''''''''''''''''''''输出字段名作为表格的头排
for each afield in rs.fields
response.Write("<td>")
response.Write(afield.name)
response.Write("</td>")
next
''''''''''''''''''''''''''''''''''''
response.Write("</tr>")
do until rs.absolutepage<>currentpage or rs.eof
response.Write("<tr>")
for each afield in rs.fields
response.Write("<td>")
response.Write(rs(afield.name))
response.Write("</td>")
next
response.Write("<tr>")
rs.movenext
loop

response.Write("</table>")
response.Write("<center><form method=post action="&request.ServerVariables("URL")&">")
if currentpage=1 then
response.Write("首页 | 上页 | ")
else
response.Write("<a href='"&request.ServerVariables("URL")&"?pagenum="¤tpage-1&"'>首页</a> | <a href='"&request.ServerVariables("URL")&"?pagenum=1'>上页 | </a>")
end if

if currentpage=rs.pagecount then
response.Write("下页 | 末页 ")
else
response.Write("<a href='"&request.ServerVariables("URL")&"?pagenum="¤tpage+1&"'>下页</a> | <a href='"&request.ServerVariables("URL")&"?pagenum="&rs.pagecount&"'>末页</a>")
end if
response.Write("<select name=goto>")
for i=1 to rs.pagecount
response.Write("<option value="&i&">"&i&"</option>")
next
response.Write("</select>")
response.Write("<input type=submit name=gotopage value=go>")
response.Write("</form></center>")


else
response.Write("没有记录!")
end if



rs.close
set rs=nothing
end sub

%>



'使用
-------
xx.asp

<!--#include file="func.asp"-->
<%
'...连接你的数据库

pag_mana("表名")

'....关闭你的数据库
%>
gu1dai 2004-08-14
  • 打赏
  • 举报
回复
这是打开数据库的方式错误造成
注意,最好以这种方式打开数据库
<%
set conn=server.createobject("adodb.connection")
conn.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("../date.mdb")
%>
sunjiujiu 2004-07-21
  • 打赏
  • 举报
回复
你检查下你curpage=request("page")之后,curpage是什么?
另外
rs.open sql,conn,1,3改为
rs.open sql,conn,3,1

以上就应该可以了!
zhyindividual 2004-07-21
  • 打赏
  • 举报
回复
游标类型.....
对于楼主的问题,可能是打开方式的不当造成的.
我之前打开数据库使用rs.open sql,conn,1,3结果出现同样的错误.
改成rs.open sql,conn,1,1就没事了, 不过我目前还不知道为什么,希望知者能给予解惑
qddoudouqd 2004-07-21
  • 打赏
  • 举报
回复
set rst=server.createobject("ADODB.Recordset")
rst.PageSize=15
rst.CursorLocation=3 '设定为Aduseclient,默认的有可能为2:Aduseserver
rst.Open sql,Conn,1,3
--------------------------
rst.CursorLocation=3 这一句是什么意思??定义什么??
lanechng 2004-07-21
  • 打赏
  • 举报
回复
另:
rst.CursorType = 1
rst.LockType = 1
rst.CursorLocation = 3
lanechng 2004-07-21
  • 打赏
  • 举报
回复
pagesize=12
curpage=request("page")
nextpage="?page="&cint(curpage)+1
lastpage="?page="&cint(curpage)-1
if curpage="" then
curpage=1
end if
if curpage<1 then
curpage=1
end if
if rst.recordcount mod pagesize=0 then
totalpagecount=rst.recordcount/pagesize
else
totalpagecount=int(rst.recordcount/pagesize)+1
end if

if cint(curpage)>cint(totalpagecount) then
curpage=totalpagecount
end if

rst.pagesize=pagesize
rst.absolutepage=cint(curpage)

if not rst.eof then
for i=1 to pagesize
result=result&"<tr height=26><td align=center bgcolor=#ffffff>"&rst("todo_tle")&"</td></tr>"
rst.movenext
if rst.eof then exit for
next
end if
xuqli 2004-07-21
  • 打赏
  • 举报
回复
楼主的数据库是否是informix数据库,我的问题已经解决,只需要加上一句
就可以了:
set rst=server.createobject("ADODB.Recordset")
rst.PageSize=15
rst.CursorLocation=3 '设定为Aduseclient,默认的有可能为2:Aduseserver
rst.Open sql,Conn,1,3
mmcgzs 2004-07-19
  • 打赏
  • 举报
回复
写错了
应该是:
if page="" then page=1
page=cint(page)
if page>rs.pagecount then page=rs.pagecount
rs.AbsolutePage=page
mmcgzs 2004-07-19
  • 打赏
  • 举报
回复
if page="" then page=1
page=cint(page)
if page>rs.AbsolutePage then page=rs.AbsolutePage
rs.AbsolutePage=page
xuqli 2004-07-19
  • 打赏
  • 举报
回复
数据库里面查出来有结果的啊.
xuqli 2004-07-19
  • 打赏
  • 举报
回复
ADODB.Recordset 错误 '800a0bb9'
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
我也碰到这个问题啊。
set rst=server.createobject("ADODB.Recordset")
rst.PageSize=15
rst.Open sql,Conn,1,3
page=Cint(request("page"))
if page<1 then
page=1
end if
if not rst.eof then
if page>rst.PageCount then
page=rst.PageCount
end if
rst.AbsolutePage=0
end if
i=0
while not rst.eof and i<rst.Pagesize
%>
<tr>
<td class=Forumrow width="40%"><%=rst(0)%></td>
<td class=Forumrow width="20%"><%=rst(2)%></td>
<td class=Forumrow width="20%"><%=rst(1)%></td>
<td class=Forumrow width="20%"><%=rst(3)%></td>
</tr>
<%
rst.MoveNext
i=i+1
wend
%>
<tr>
<td class=forumrow align=center width=100%>
<%if page=1 then%>第一页<%else%><a href="card.asp?page=1&query=<%=request("query")%>">第一页</a><%end if%>
<%if page=1 then%>上一页<%else%><a href="card.asp?page=<%=(page-1)%>&query=<%=request("query")%>">上一页</a><%end if%>
<%if page>=rst.pagecount then%>下一页<%ELSE%><a href="card.asp?page=<%=(page+1)%>&query=<%=request("query")%>">下一页</a><%end if%>
<%if page>=rst.pagecount then%>最后页<%else%><a href="card.asp?page=<%=rst.pagecount%>&query=<%=request("query")%>">最后页</a><%end if%>
</td>
</tr>
kylinhj 2004-07-19
  • 打赏
  • 举报
回复
if IsObject(rs) then
rs.absolutepage=page
end if
woderoom 2004-07-19
  • 打赏
  • 举报
回复
服务器不支持该组件,建议使用手动分页,即rs.movenext / rs.moveto
wsdzmhongm 2004-07-19
  • 打赏
  • 举报
回复
靠,你分页怎么这么晕啊
数通网络 2004-07-17
  • 打赏
  • 举报
回复
库里读不出数据的时候,而这时候没有除错语句,就出这样的错!
xiefeng 2004-07-17
  • 打赏
  • 举报
回复
救命啊!!!我也是这个问题!!!up!!!!!!
skytears 2004-07-15
  • 打赏
  • 举报
回复
都试过了还是不行
wsdzmhongm 2004-07-09
  • 打赏
  • 举报
回复
rs.AbsolutePage=cint(page)
aspczlover 2004-07-09
  • 打赏
  • 举报
回复
参数传递有问题~
加载更多回复(10)
asp的七种分页方法! 简单 实用 是有点乱 ASP中七种实现分页显示的方法 MS Visual InterDev6.0中七种实现分页显示的方法 我们在编制与数据库有关的Web网页时,由于要显示的数据量巨大,常常面临一个数据记录分页显示的问题。 -------------------------------------------------------------------------------- 在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便、自由。而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM)、Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便。 因为主题方面的原因,关于数据库的连接,下文只给出代码和简要注释,而把重点放在如何利用Recordset对象(或控件)实现数据记录的分页显示方面。根据我的理解,分页显示的关键就在于对ADO的Recordset对象或DTC(设计时控件)的Recordset控件的属*和方法的熟练把握上。 这七种分页显示的方法概括起来说分四类: 第一、二种我暂取名叫“纯ASP法”,这也是国内的ASP网站上用得最多的方法,它们的区别仅在实现技巧的不同。这两种方法的实现最易理解,用到的对象概念也最少,对开发环境的要求也最低(只要记事本就行)。可以说,这两种方法的实质还是CGI的编程思想,只是在程序中引入了ADO对象而已。 第四、五种暂取名叫“SOM的DHTML法”。这两种方法要求在VI6.0的环境下,利用微软提出的脚本对象模型(Script Object Model)和DHTML中Table对象的与数据库绑定的新特*(许多书和文章只介绍了DHTML的CSS特*在样式设计中的运用而忽略介绍其数据绑定特*),实现在客户端控制翻页。但它要求用户的浏览器必须是支持DHTML,如:Microsoft Internet Explorer 4.0及以上的版本。 第六种暂取名叫“SOM服务器端法”。要求在VI6.0的环境下开发,它利用微软提出的脚本对象模型(Script Object Model)中的几个DTC控件:Recordset、PageObject、Grid等在服务器端(客户端)实现翻页控制。这是一种激动人心的、全新的编程方法,它把网页看成对象(这种对象模型和传统的DOM----document object model是有区别的:DOM只能控制客户端,而SOM可控制服务器端和客户端),它真正实现了网页的面向对象编程。但遗憾的是,也许是我个人能力有限,这种技术我个人认为还不是很成熟,比如,与浏览器的结合还不是很好,这将在后文详细说明。 第七种暂取名叫“DEOM法”。它也是利用了VI6.0中建立的数据环境对象模型(Data Environment Object Model)建立Recordset对象。这也是在网页编程上比较少见的新方法,与SOM模型相比,自有它的优点,这将在后文详述。 在后面所举的所有例子源代码,都可以直接拷贝使用,你甚至可以不懂其原理,只要把其中的粗斜体字部分换成相应自己的数据库名或字段名就可以了。 在开始详细介绍各种分页方法前,让我们先创建一个数据库:用Office97中的access自创一个Employee.mdb,其中建一个表emp,只设三个字段:emp ID,last name和first name。为什么这么简单,是因为我们关心的是怎样处理recordset的结果。 第一种:参数直接代入法。 这种方法是用手工建立Recordset对象,利用其pagesize(每页指定显示记录数),pagecount(总页码数)和absolutepage(当前页码数)属*来控制分页的输出。分页采用直接带页码参数的方法来控制翻页。网页的名字为emp1.asp。源代码如下: <%//建立与employee.mdb数据库的连接。 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=employee.mdb" //建立emp表的Recordset对象实例rs。 Set rs = Server.CreateObject("ADODB.Recordset") rs.Open "emp", conn, 3

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧