标题:(转贴)还是数据库分页
只看楼主
哈马拟
Rank: 1
等 级:新手上路
帖 子:270
专家分:0
注 册:2004-7-15
 问题点数:0 回复次数:4 
(转贴)还是数据库分页
<anguage="vbscript"

dim conn

dim connstr

dim totalPut

dim CurrentPage

dim TotalPages

dim i,j

dim sql

dim rs

on error resume next

'打开数据库

connstr="DBQ="+server.mappath("book.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

set conn=server.createobject("ADODB.CONNECTION")

conn.open connstr

set rs=server.createobject("adodb.recordset")

'定义每页文章显示数

const MaxPerPage=18

if not isempty(request("page")) then

currentPage=cint(request("page"))

else

currentPage=1

end if

sql="select * from learning order by articleid desc"

Set rs= Server.CreateObject("ADODB.Recordset")

rs.open sql,conn,1,1

if rs.eof and rs.bof then

response.write "<p align='center'> 还 没 有 任 何 文 章</p>"

else

'数据库中文章数totalput

totalPut=rs.recordcount

if currentpage<1 then

currentpage=1

end if

'统计总页数currentpage

if (currentpage-1)*MaxPerPage>totalput then

if (totalPut mod MaxPerPage)=0 then

currentpage= totalPut \ MaxPerPage

else

currentpage= totalPut \ MaxPerPage + 1

end if

end if

if currentPage=1 then

showpage totalput,MaxPerPage,"index.asp"

showContent

showpage totalput,MaxPerPage,"index.asp"

else

if (currentPage-1)*MaxPerPage<totalPut then

rs.move (currentPage-1)*MaxPerPage

dim bookmark

bookmark=rs.bookmark

showpage totalput,MaxPerPage,"index.asp"

showContent

showpage totalput,MaxPerPage,"index.asp"

else

currentPage=1

showpage totalput,MaxPerPage,"index.asp"

showContent

showpage totalput,MaxPerPage,"index.asp"

end if

end if

rs.close

end if

set rs=nothing

conn.close

set conn=nothing

sub showContent

dim i

i=0

do while not rs.eof

>

'选择显示数据库内容

<a href="openarticle.asp?id=<=rs("articleid")>"><=rs("title")></a>[点击:<=rs("hits")>]<br>
<

'当显示记录大于maxperpage时结束这页

i=i+1

if i>=MaxPerPage then exit do

rs.movenext

loop

end sub

function showpage(totalnumber,maxperpage,filename)

'求出当每页18篇文章时总共的页数

dim n

if totalnumber mod maxperpage=0 then

n= totalnumber \ maxperpage

else

n= totalnumber \ maxperpage+1

end if

response.write "<form method=Post action="&filename&">"

response.write "<p align='center'><font color='#000080'>>>分页</font> "

'显示页数链接的条件

if CurrentPage<2 then

response.write "<font color='#000080'>首页 上一页</font> "

else

response.write "<a href="&filename&"?page=1&>首页</a> "

response.write "<a href="&filename&"?page="&CurrentPage-1&">上一页</a> "

end if

if n-currentpage<1 then

response.write "<font color='#000080'>下一页 尾页</font>"

else

response.write "<a href="&filename&"?page="&(CurrentPage+1)

response.write ">下一页</a> <a href="&filename&"?page="&n&">尾页</a>"

end ifc

response.write "<font color='#000080'> 页次:</font><strong><font color=red>"&CurrentPage&"</font><font color='#000080'>/"&n&"</strong>页</font>"

response.write "<font color='#000080'> 共<b>"&totalnumber&"</b>篇文章 <b>"&maxperpage&"</b>篇文章/页</font>"

response.write " <font color='#000080'>转到:</font><input type='text' name='page' size=4 maxlength=10 class=smallInput value="¤tpage&">"

response.write "<input class=buttonface type='submit' value=' Goto ' name='cndok'></span></p></form>"

end function

>
搜索更多相关主题的帖子: 数据库 
2004-08-24 09:14
哈马拟
Rank: 1
等 级:新手上路
帖 子:270
专家分:0
注 册:2004-7-15
得分:0 

其中有一句

bookmark=rs.bookmark

记录集对象还有bookmark属性??这个属性是作什么用的呢???


2004-08-24 10:23
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 

顾名思义,bookmark就是书签呀

Bookmark 属性 (ADO)

返回唯一标识 Recordset 对象中当前记录的书签,或者将 Recordset 对象的当前记录设置为由有效书签所标识的记录。

设置和返回值

设置或返回计算有效书签的变体型表达式。

说明

使用 Bookmark 属性可保存当前记录的位置并随时返回到该记录。书签只能在支持书签功能的 Recordset 对象中使用。

打开 Recordset 对象时,其每个记录都有唯一的书签。要保存当前记录的书签,请将 Bookmark 属性的值赋给一个变量。移动到其他记录后要快速返回到该记录,请将该 Recordset 对象的 Bookmark 属性设置为该变量的值。

用户可能无法查看书签的值,也同样无法对书签直接进行比较(指向同一记录的两个书签的值可能不同)。

如果使用 Clone 方法创建 Recordset 的一个副本,则原始的和复制的 Recordset 对象 Bookmark 属性设置相同并可以替换使用。但是,无法替换使用不同 Recordset 对象的书签,即使这些书签是通过同一数据源或命令创建的。

Remote Data Service 的用法 在客户端 (ADOR) Recordset 对象上使用时,Bookmark 属性始终有效。


天津网站建设 http://www./
2004-08-24 10:48
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 

BOF、EOF 和 Bookmark 属性范例 该范例使用 BOF 和 EOF 属性,在用户试图移过 Recordset 的第一个和最后一个记录时显示一条信息。它通过 Bookmark 属性使用户对 Recordset 中的记录进行标记,稍后再返回给它。

Public Sub BOFX()

Dim rstPublishers As ADODB.Recordset Dim strCnn As String Dim strMessage As String Dim intCommand As Integer Dim varBookmark As Variant

' 使用出版商表格数据打开记录集。 strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " Set rstPublishers = New ADODB.Recordset rstPublishers.CursorType = adOpenStatic ' 使用客户游标激活 AbsolutePosition 属性。 rstPublishers.CursorLocation = adUseClient rstPublishers.Open "SELECT pub_id, pub_name FROM publishers " & _ "ORDER BY pub_name", strCnn, , , adCmdText

rstPublishers.MoveFirst

Do While True ' 显示关于当前记录的信息并让用户输入。 strMessage = "Publisher: " & rstPublishers!pub_name & _ vbCr & "(record " & rstPublishers.AbsolutePosition & _ " of " & rstPublishers.RecordCount & ")" & vbCr & vbCr & _ "Enter command:" & vbCr & _ "[1 - next / 2 - previous /" & vbCr & _ "3 - set bookmark / 4 - go to bookmark]" intCommand = Val(InputBox(strMessage))

Select Case intCommand ' 向前或向后移动,捕获 BOF 或 EOF。 Case 1 rstPublishers.MoveNext If rstPublishers.EOF Then MsgBox "Moving past the last record." & _ vbCr & "Try again." rstPublishers.MoveLast End If Case 2 rstPublishers.MovePrevious If rstPublishers.BOF Then MsgBox "Moving past the first record." & _ vbCr & "Try again." rstPublishers.MoveFirst End If

' 将当前记录的书签保存。 Case 3 varBookmark = rstPublishers.Bookmark

' 转向由存储的书签所指示的记录。 Case 4 If IsEmpty(varBookmark) Then MsgBox "No Bookmark set!" Else rstPublishers.Bookmark = varBookmark End If

Case Else Exit Do End Select

Loop

rstPublishers.Close

End Sub

该范例使用 Bookmark 和 Filter 属性创建记录集的限定视图,将只允许访问书签数组所引用的记录。

Public Sub BOFX2()

Dim rs As New ADODB.Recordset Dim bmk(10)

rs.CursorLocation = adUseClient rs.ActiveConnection = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;"

rs.Open "select * from authors", , adOpenStatic, adLockBatchOptimistic Debug.Print "Number of records before filtering: ", rs.RecordCount

ii = 0 While rs.EOF <> True And ii < 11 bmk(ii) = rs.Bookmark ii = ii + 1 rs.Move 2 Wend rs.Filter = bmk Debug.Print "Number of records after filtering: ", rs.RecordCount

rs.MoveFirst While rs.EOF <> True Debug.Print rs.AbsolutePosition, rs("au_lname") rs.MoveNext Wend End Sub

[此贴子已经被作者于2004-08-24 10:52:29编辑过]


天津网站建设 http://www./
2004-08-24 10:51
寒星
Rank: 1
等 级:新手上路
帖 子:455
专家分:0
注 册:2004-6-7
得分:0 
你应当适当的查看一下一些书籍,专门将这些的e

http://www. 版主位置空缺
2004-08-24 12:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-4524-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112629 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved