|
主题: rs.AbsolutePage为何变成 -1
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#12002/8/13 20:46:32
相关代码如下: set rsLog = Server.CreateObject("ADODB.Recordset") strSQL="Select * from tbLog Order by fTime DESC" rsLog.open strSQL,conn,3 'conn已定义 rsLog.PageSize = 8 if len(request("pagesize"))>0 then rsLog.PageSize = request("PageSize") if rsLog.PageSize > rsLog.recordcount then rsLog.PageSize = rsLog.recordcount rsLog.AbsolutePage = 1 if len(request("pagenum"))>0 then rsLog.AbsolutePage = request("pagenum") RowCount = RsLog.pagesize response.write "第"& rsLog.AbsolutePage &"页"%>
输出为 第-1页,但用?pagenum=2时,又可显示第2页,输出时还是显示-1,直到最后一页时,才会输出一个正数来。why?
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
|
蓝色理想
职务:普通成员
等级:1
金币:0.0
发贴:8
|
#32002/8/13 21:27:25
你自己看看怎么算吧。 rs.PageSize=PageSize intPageCount=rs.PageCount if page>intPageCount then page=intPageCount end if rs.AbsolutePage=Page if not (rs.EOF and rs.BOF) then '分页信息 Response.Write " " Response.Write "Total " & intRecordCount &" Display " & (Page-1)*PageSize+1 & " of " response.write (Page-1)*Pagesize+i -1& "" Response.Write " | " Response.Write " " Response.Write "Page " for i=1 to intpagecount if i=page then Response.Write "" & i & " " else Response.Write "" & i & " " end if next if page=intpagecount then Response.Write " Next | " else Response.Write " Next |
"
end if
end if
rs.Close
Set rs=nothing
con.Close
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#42002/8/15 8:15:20
我也遇到过这样的问题, 可能是和数据的打开方式有关, 比如我用 rs.open sql,conn,3,2 打开sql数据库的时候 rs.recordcount返回的是-1
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#52002/8/15 13:40:30
怎么解决的?
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#62002/8/15 16:32:44
rs.open sql,conn,3,1 rs.recordcount就返回正确了。
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#72002/8/16 23:13:27
还是不行,结果一样
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#82002/8/19 17:39:53
你是说要让打开的方式支持 rs.absolutepage 我以前看过王国荣的书上说只有打开方式为 rs.open sql,conn,3,2的时候支持 rs.absolutepage 要不你试试。 但是这个时候好像在SQL里面rs.recordcount返回为-1
|
iLiving
职务:普通成员
等级:1
金币:0.0
发贴:5
|
#92002/8/20 10:35:10
我也碰到这个问题,现在解决了,是数据库打开方式错了.把它改成1,1就行了.
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#102002/8/20 23:12:05
我最早就是用的1,1,结果不行,换了3,2还是不行,根据QQ上的网友建议,也换过其他值,问题依旧……我被它打败了:(
估计问题出在别的地方,我再找找别的
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#112002/8/21 10:52:43
解决的时候, 贴出来分享分享。
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#122002/8/23 22:56:31
在反复尝试过程中,终于把这个问题解决了。原来在用1,1打开时,rs.AbsolutePage只能写不能读(现在还没有试出来什么情况下可读)! 像蓝色写的那样,先用一个变量取得当前页,再把它赋给rs.AbsolutePage就行了。 我在写开发日志时的相关代码如下: '之前相关对象已创建,所有变量已声明 '... set rsLog = Server.CreateObject("ADODB.Recordset") strSQL="Select * from tbLog Order by fTime DESC" rsLog.open strSQL,conn,1,1 if rsLog.bof and rsLog.eof then ' '此处处理无记录情况,略去 ' end if intRecordCount=rsLog.RecordCount pgsize = 8 if len(request("pagesize"))>0 then pgsize = CInt(request("pagesize")) if pgsize>intRecordCount then pgsize=intRecordCount rsLog.PageSize=pgsize intPageCount=rsLog.PageCount intPage=1 if len(request("pagenum"))>0 then intPage = CInt(request("pagenum")) if intPage>intPageCount then intPage=intPageCount rsLog.AbsolutePage = intPage RowCount = pgsize %> ……HTML代码,略去 <%Do While not rsLog.eof and RowCount > 0 '此处处理记录 <% rsLog.movenext RowCount = RowCount - 1 loop%> '下面的代码输出导航页次 <% Response.write " 全部日志" if rsLog.pagecount=1 then Response.write"只有 1 页," else Response.write"共有 "& intPageCount &" 页," end if response.write intRecordCount &" 条记录。" if rsLog.pagecount > 1 then Response.write "此为第 "& intPage &" 页,此页显示 "& pgsize-RowCount &" 条("& (intPage-1)*pgsize+1 & "~" & intPage*pgsize-RowCount &")日志: " if intpage>1 then response.write "[ |< ][ < ]" dim i for i=1 to intPageCount if i=intPage then Response.write "[ "& i &" ]" else Response.write "[ " & i & " ]" end if next if intpage[ > ][ |> ]" end if response.write " " %> 手写的,有些乱:D 显示效果如下:
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#132002/8/25 10:34:11
<%@ Language=VBScript %> <%option explicit%> <%dim phone%> <% ' VI 6.0 Scripting Object Model Enabled %> <% if StartPageProcessing() Then Response.End() %> <% %> --> <% Sub [_PO_OutputClientCode]() %> <% End Sub %>
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#142002/8/25 10:37:25
我上面贴的一段代码是在INTERDEV里面用可视化编程做出来的。 它的代码很长。 你只要把它拷回去在INTERDEV里面打开就可以看见三个服务器端的组件了。 中间的GRID组件很轻松的解决了分页显示的问题。 如果没有办法正常显示的话。 可能你的INTERDEV要安装扩展功能。
|
5D荣誉版主
职务:普通成员
等级:2
金币:10.0
发贴:658
|
#152002/8/25 10:38:19
有关上段代码有什么问题。 我可以解释。
|