bookmark 70分给一人,其余分享30分,UP有分

masterjames 2003-03-10 09:45:13
代码如下
skipcount = (Page-1)*MaxPerPage
Set Conn=Server.CreateObject ("ADODB.Connection")
Conn.Open "DSN=GovODBC","GovDBadmin","0102govdbadmin"
Set Rs=Server.CreateObject("ADODB.Recordset")
StrSQL = "select * from newscolumn "
Rs.Open StrSQL,conn,2,3
if page <> 1 then
rs.movelast
rs.MoveFirst
p = rs.recordcount
rs.move(skipcount)
response.write rs("columnID")
dim bookmark
bookmark = rs.bookmark
response.write p
p值为:-1,只要是
错误类型:
Microsoft VBScript 运行时错误 (0x800A01C2)
/gov/news/managenewscolumn.asp, 第 147 行
...全文
44 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
redkid 2003-09-11
  • 打赏
  • 举报
回复
不能用2,3打开呀,用1,3打开就不会有错了.
hui_feng 2003-03-11
  • 打赏
  • 举报
回复
up
码视野 2003-03-11
  • 打赏
  • 举报
回复
gz
flygoocn 2003-03-11
  • 打赏
  • 举报
回复
你需要关于ado的技术说明手册吗?
flyinweb 2003-03-11
  • 打赏
  • 举报
回复
打开数据时后面的参数值要更换一下.CursorType \.LockType的值可以参考MSDN文档
wwwliaole 2003-03-11
  • 打赏
  • 举报
回复
如果要分页显示,则打开数据库时应该是这样。。

rs.open sql,conn,1,1

其中最后一个参数必须是1,要不然,recordcout=-1

另我把我自己经常用的分页程序如下:

你只需要改变一个字段值,。sql语句就可以拿来用的。


<%

sql="select * from news order by id desc"

rs.open sql,conn,1,1


if rs.eof and rs.bof then
response.write "<center>暂时还没有新闻的记录!</center>"
end if
rs.PageSize=25

if not isempty(request("page")) then
page=cint(request("page"))
else
page=1
end if

if page>rs.pagecount or page<=0 then
page=1
end if
rs.absolutepage=page


response.write"<form name=form2 method=Post action='index.asp'>"
if Page=1 then
response.write "首页 上一页 "
else
response.write "<a href='index.asp?page=1'>首页</a> "
response.write "<a href='index.asp?page="&cstr(page-1)&"'>上一页</a> "
end if
if (rs.PageCount-page)<1 then
response.write "下一页 尾页"
else
response.write "<a href='index.asp?page="&cstr(page+1)&"'>下一页</a> "
response.write "<a href='index.asp?page="&cstr(rs.PageCount)&"'>尾页</a>"
end if
response.write " 共"&rs.recordcount&"条记录 "&rs.PageSize&"条记录/页"
response.write " 页次:"&page&"/"&rs.PageCount&"页"
response.write " 转到第<input type='text' name='page' size=2 style='font-size: 9pt; color: rgb(0,0,255)' value="&Page&">页 "
response.write "<input class=buttonface type='submit' value='确定' name='cndok' style='font-family: 宋体; font-size: 9pt; color: #000073'></form>" %>

</td></tr>

<%
for i=1 to rs.pagesize '''从1到每页的记录数循环
id=rs("id")

title=rs("title")

vdate=rs("vdate")

image=rs("image")

if image<>"" and (not isnull(image)) then

image="<img src=""../asp/images/haveimg.gif"">"

else

image=" "

end if



%>

<tr>

<td class="unnamed1" height="20"><font color="green" face="wingdings">2</font> <a href="show.asp?id=<%=id%>" target="_blank"><%=title%></a><font color="#AAAAAA">(<%=formatdatetime(vdate,1)%>)</font> <%=image%></td>

</tr>

<%

rs.movenext

if rs.eof then exit for '''如果到了记录尾,则退出。
next

rs.close

%>

redkid 2003-03-10
  • 打赏
  • 举报
回复
问题的原因,recordset对象的pagecount是只写的吧。
  • 打赏
  • 举报
回复
封装成类的分页代码,你自己研究一下吧
******************************************************************************
public function DataGrid(SqlStr,ConnStr,PageSize,PageNum,beginField,EndField,IDField,HttpStr,PageInfo)'以表格形式显示数据

'DataGrid功能:
' 将数据以表格形式显出来,
' 根据需要可能确定显示的字段,
' 页号,每页显示的记录数
' 复选框绑定的字段
' 修改数据时所连接到的设定的网页,传递的参数名是Idfield

'调用实例 call DataGrid("SELECT * FROM mater_bcode","Driver={SQL Server};uid=sa;pwd=passed;database=cthpdb;server=scb-web",10,20,2,50,0,"http://www.clkhome/mater_code1/tools/aaa.asp","Null")

'参数说明
'sqlstr: 将要查询的sql语句
'connstr: 数据库连接字符串
'PageSize: 数据集每页的记录数,PageSize="MAX"时不分页
'PageNum: 数据集中将要显示的页号
'beginField:在记录集中开始显示的字段位置
'EndField: 在记录集中结束显示的字段位置
'IDField: 用于给复选框的value赋值的字段在记录集中的位置,可以用于提交到其它页,其它页做处理的依据
' 如果IDField<0 or IDField> rs.fields.count或不是数字 则不显示复选框
'HttpStr 修改记录时连接到的网页,传递的是IDField的值,如果 httpstr="0"则不显示修改连接
'PageInfo 确定是否显示"第1页,共1页"的提示,PageInfo="Null"时不显示
'返回值, 返回的是记录集的当前页号


on error resume next
dim conn,rs
'if isnumeric(pageSize)then rs.pageSize=pageSize
set conn=server.CreateObject ("adodb.connection")
set rs=server.CreateObject ("adodb.recordset")
Conn.open Connstr
rs.Open sqlstr,conn,1,3
if err.number<>0 then
Response.Write writeinfo("<BR>DataGrid函数在运行出现了错误!<BR>错描述:" & err.Description & "<BR>")
DataGrid="Err"
exit function
end if
if rs.RecordCount<1 then
Response.Write "<font size='-1' color='#FF0000'> 没有数据...</font>"
DataGrid=0
exit function
end if

'------------对参数据进行处理----------------------
'----------确定如何显示字段-----------------
if not Isnumeric(beginField) or beginField<0 then
beginField=0'确保开始显示的位置在合理范围内
else
if beginField>rs.Fields.Count-1 then beginField=rs.Fields.Count-1'保证到少显示一个字段
if beginField<0 then beginField=0
end if
if not Isnumeric(EndField) then EndField=rs.Fields.Count-1
if EndField>rs.Fields.Count-1 then EndField=rs.Fields.Count-1
if EndField<=beginField or EndField<0 then EndField=beginField'保证到少显示一个字段
'----------复选框、修改链接的处理在成生表格时同步完成--------------

'---------分页处理------------------
if Ucase(Trim(PageSize))="MAX" then
PageSize=rs.RecordCount
rs.pageSize=rs.RecordCount
PageNum=1
else
if not Isnumeric(PageSize) or PageSize<1 then PageSize=10
if PageSize>rs.recordcount then pageSize=rs.recordcount
rs.pageSize=pageSize
'---------页号处理----------------
if Trim(Ucase(pageNum))="MAX" then PageNum=rs.PageCount
if not Isnumeric(PageNum) then PageNum=1
if PageNum<1 then PageNum=1
if cint(PageNum-rs.PageCount)>0 then PageNum=rs.PageCount
end if
Rs.AbsolutePage=PageNum

if err.number<>0 then
dbinfo="数据库连接错误"
DataGrid=0
exit function
else
if rs.RecordCount<1 then
Response.Write "没有找到记录"
DataGrid=0
exit function
else
if Ucase(trim(PageInfo))<>"NULL" then '确定是显示页号信息
Response.Write "<font size='-1' color='#666666'>第<font color='#FF0000'>" & PageNum & "</font>页,共<font color='#FF0000'>" & rs.PageCount & "</font>页"
end if
'写入表头
Response.Write "<table width='100%' border='0' cellspacing='1' cellpadding='0' bgcolor='#999999'>"
Response.Write "<tr bgcolor='#CCCCCC'>"
Response.Write "<td width='1%' align='center' onclick='form1.submit()'><b><font color='#666666' size='-1'>序</font></b></td>"
dim i
for i=beginField to EndField
Response.Write "<td align='center'><b><font color='#666666' size='-1'>" & rs.Fields(i).Name & "</font></b></td>"
next
if Isnumeric(IDfield) then '复选框及修改链接处理
if IDField>=0 and (IDField - rs.fields.count<=0) then
Response.Write "<td width='1%' align='center'><b><font color='#666666' size='-1'>删</font></b></td>"
if trim(httpstr)<>"0" then Response.Write "<td width='1%'><b><font color='#666666' size='-1'>修</font></b></td>"
end if
end if
Response.Write "</tr>"
'写入字段信息
dim RecordNum,FieldNum
for RecordNum=0 to PageSize-1 '?????????????????
Response.Write "<tr bgcolor='#FFFFFF'>"
Response.Write "<td><font size='-1'>" & RecordNum +1+(PageNum-1)*PageSize & "</font></td>"
for FieldNum=beginField to EndField '写入字段值
if Trim(rs.Fields(FieldNum).Value)="" or Isnull(rs.Fields(FieldNum).Value) then
Response.Write "<td> </td>"
else
Response.Write "<td><font size='-1'> " & Trim(rs.Fields(FieldNum).Value) & "</font></td>"
end if
next
if Isnumeric(IDfield) then '复选框处理
if IDField>=0 or (IDField - rs.fields.count<=0) then
Response.Write "<td><input type='checkbox' name='IDfield' value='"& rs.Fields(IDfield).Value &"'></td>"
if trim(httpstr)<>"0" then Response.Write "<td><font size='-1'><a href='" & httpstr & "?IDField="& rs.Fields(IDfield).Value &"'>改</a></font></td>"
end if
end if
Response.Write "</tr>"
rs.MoveNext
if rs.eof then exit for '最后不到一整页时,也跳出
next
Response.Write "</table>"
end if
end if
rs.Close
conn.Close
set rs=nothing
set conn=nothing
Err.Clear
DataGrid=PageNum
end function

******************************************************************************

如果几种样式都集合在一起的话,那代码也太长了。。我一般是作成几个函数,用到时就引用就行了。我也现一个我以前常用的。


<%
'---------------------------------------------------------------------------------------------------------
' 名称:showpage
' 参数:
' nowpage 当前页数
' RecordCount 数据集中的总条数 读取的值是:RecordCount=rs.RecordCount
' PageCount 总页数 读取的值是:RecordCount=rs.PageCount
' NoUpData 在翻页时不要提交的变量名称 格式:"name_1,name_2,name_3,name_4,.....name_N"
' 注:有大小写之分的。
'---------------------------------------------------------------------------------------------------------
Sub showpage(byval nowpage,byval RecordCount,byval PageCount,byval NoUpData)
if nowpage<>"" then
dim x,pagename
pagename=Request.ServerVariables("SCRIPT_NAME")
noupdata=noupdata&",page"

Response.Write " <table border=0 cellspacing=0 cellpadding=0>"&_
"<form action="&pagename&" method=post name=uppage>"&_
"<tr><td>"
if abs(nowpage)<>1 then
Response.Write "<a href='javascript:uppage.page.value=1;uppage.submit()'>首页</a> "&_
"<a href='javascript:uppage.page.value="&nowpage-1&";uppage.submit()'>上页</a> "
end if
if abs(nowpage)<>abs(PageCount) then
Response.Write "<a href='javascript:uppage.page.value="&nowpage+1&";uppage.submit()'>下页</a> "&_
"<a href='javascript:uppage.page.value="&PageCount&";uppage.submit()'>末页</a> "
end if
Response.Write "共找到"&RecordCount&"条"&PageCount&"页记录,目前是第"&_
"<SELECT name=page onchange=uppage.submit();>"
for x=1 to PageCount
Response.Write "<OPTION"
if abs(x)=abs(nowpage) then Response.Write " selected"
Response.Write " value="&x&">"&x&"</OPTION>"
next
Response.Write "</SELECT>页"

for each x in Request.Form
if instr(","&noupdata&",",","&x&",")=0 then
response.Write "<input type=hidden name="&x&" value="&request(x)&">"
end if
next
for each x in Request.QueryString
if instr(","&noupdata&",",","&x&",")=0 then
response.Write "<input type=hidden name="&x&" value="&request(x)&">"
en
tangbow 2003-03-10
  • 打赏
  • 举报
回复
呵呵
blueice2002 2003-03-10
  • 打赏
  • 举报
回复
up
Andyken 2003-03-10
  • 打赏
  • 举报
回复
up
ckr_x 2003-03-10
  • 打赏
  • 举报
回复
数据库打开方式错误。
masterjames 2003-03-10
  • 打赏
  • 举报
回复
谢谢大家,问题已经被我同事解决了,我没有打印出来,不过分还是会散。
热心人来领分吧
用户 昵称 2003-03-10
  • 打赏
  • 举报
回复
up
masterjames 2003-03-10
  • 打赏
  • 举报
回复
147 行 就是RS。BOOKMARK
kunyi 2003-03-10
  • 打赏
  • 举报
回复
up
dwhhh 2003-03-10
  • 打赏
  • 举报
回复
up
cpp2017 2003-03-10
  • 打赏
  • 举报
回复
Rs.Open StrSQL,conn,2,3

改为Rs.Open StrSQL,conn,3,3试试

PoorAngel 2003-03-10
  • 打赏
  • 举报
回复
up
Ivyhuang 2003-03-10
  • 打赏
  • 举报
回复
Microsoft VBScript 运行时错误 (0x800A01C2)
这个错误是:错误的参数个数或无效的参数属性值
你自己看看你的程序147行是什么
加载更多回复(3)

28,391

社区成员

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

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