回 帖 发 新 帖 刷新版面

主题:我问这个分页问题已经三天了,我看得都晕了,搞不定了.高手帮帮忙啊!!

我在点击下一页时就出现错误!是怎么回事啊?
错误如下:错误类型:
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个回复)

沙发

使用AbsolutePage这些属性,要提供者必须支持相应的功能才能使用此属性。

板凳

那我应该怎么做才能用这个属性啊?

3 楼

我把AbsolutePage=page 改成:
for i=1 to (page+1)*rs.pagesize
  rs.movenext
  next
他出现-1/-1..晕倒... 我快疯了.. 
我该怎么办啊?????高手们....帮帮忙啊..我以前没用过种分页..

4 楼

<% 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 楼

还是不行..我用你的代码改了一下,,可以显示第一页,,,点击第二页时就出现错误..
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/tiyie/jcxx/fun1.inc, 第 5 行

6 楼

楼上的兄弟..你能不能给我一套完整的分页代码给我参考参考啊?我的EMAIL:w-ch-ch@163.com  谢谢!

7 楼

文件名: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>&nbsp;")
     Response.write("<a href=aa.asp?page="&(page-1)&">上一页</a>&nbsp;")
  end if
  if page <> rs.pagecount then
      Response.write("<a href=aa.asp?page="&(page+1)&">下一页</a>&nbsp;")
      Response.write("<a href=aa.asp?page="&rs.pagecount&">最后一页</a>&nbsp;")
  end if

  for i=1 to rs.pagecount
    if i <> page then
    response.write "<a href=aa.asp?page="&i&">" &i& "</a>&nbsp;"
    else
    response.write i&"&nbsp;"
    end if
   next
%>
页数:<% =page %>/<% =rs.pagecount %>
</form>
下载地址:
[url=http://pcfun.cn:888/upload/pages_2006-12-13_14:55:16_553.rar]记录的分页显示[/url]

8 楼

楼主的数据连接不对
改成这样试试:

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 楼

楼上的兄弟..我用了你的方法..还是不得/它出现 rs.Open sql,conn,1,1 这句话是错误的..
错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/tiyie/jcxx/checkspindex.asp, 第 39 行
难道是我读取数据库不对...我如果加:on error resume next 
可以点击下一页..不过里面没有内容.我应该怎么办呢?

10 楼

请检查你的SQL语句!

我来回复

您尚未登录,请登录后再回复。点此登录或注册