王力公告查詢_第1頁
王力公告查詢_第2頁
王力公告查詢_第3頁
王力公告查詢_第4頁
王力公告查詢_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版下載后可任意編輯和復制第第頁王力公告查詢

那么畢竟如何才能做到將數(shù)據(jù)庫的查詢結果分頁顯示呢?其實方法有許多,但主要有兩種:

一、將數(shù)據(jù)庫中全部符合查詢條件的記錄一次性的都讀入recordset中,存放在內(nèi)存中,然后通過ADORecordset對象所供應的幾個特地支持分頁處理的屬性:PageSize(頁大小)、PageCount(頁數(shù)目)以及

AbsolutePage(肯定頁)來管理分頁處理。

二、依據(jù)客戶的指示,每次分別從符合查詢條件的記錄中將規(guī)定數(shù)目的記錄數(shù)讀取出來并顯示。兩者的主要差別在于前者是一次性將全部記錄都讀入內(nèi)存然后再依據(jù)指示來依次做推斷分析從而達到分頁顯示的效果,而后者是先依據(jù)指示做出推斷并將規(guī)定數(shù)目的符合查詢條件的記錄讀入內(nèi)存,從而直接達到分頁顯示的功能。

我們可以很明顯的感覺到,當數(shù)據(jù)庫中的記錄數(shù)達到上萬或更多時,第一種方法的執(zhí)行效率將明顯低于第二種方法,因為當每一個客戶查詢頁面時都要將全部符合條件的記錄存放在服務器內(nèi)存中,然后在進行分頁等處理,假如同時有超過100個的客戶在線查詢,那么ASP應用程序的執(zhí)行效率將大受影響。但是,當服務器上數(shù)據(jù)庫的記錄數(shù)以及同時在線的人數(shù)并不是許多時,兩者在執(zhí)行效率上是相差無幾的,此時一般就采納第一種方法,因為第一種方法的ASP程序編寫相對第二種方法要簡潔明白得多。

在這里就以我們常見的ASPBBS程序為例,來給大家分析一下如何在BBS程序里實現(xiàn)分頁顯示功能,由于我們一般使用的BBS程序的數(shù)據(jù)庫記錄數(shù)和同時訪問的人數(shù)都不會太多,所以以下程序實例是使用的從前所介紹的第一種分頁顯示方法。

進行ADO存取數(shù)據(jù)庫時的分頁顯示,其實就是對Recordset的記錄進行操作。所以我們首先必需了解Reordset對象的屬性和方法:

BOF屬性:目前指標指到RecordSet的第一筆。

EOF屬性:目前指標指到RecordSet的最終一筆。

Move方法:移動指標到RecordSet中的某一條記錄。

AbsolutePage屬性:設定當前記錄的位置是位于哪一頁

AbsolutePosition屬性:目前指標在RecordSet中的位置。

PageCount屬性:顯示Recordset對象包括多少“頁”的數(shù)據(jù)。

PageSize屬性:顯示Recordset對象每一頁顯示的記錄數(shù)。

RecordCount屬性:顯示Recordset對象記錄的總數(shù)。

下面讓我們來具體熟悉一下這些重要的屬性和方法

一、BOF與EOF屬性

通常我們在ASP程序中編寫代碼來檢驗BOF與EOF屬性,從而得知目前指標所指向的RecordSet的位置,使用BOF與EOF屬性,可以得知一個Recordset對象是否包含有記錄或者得知移動記錄行是否已經(jīng)超出該ecordset對象的范圍。

如:%ifnotrs.eofthen...%

%ifnot(rs.bofandrs.eof)%

若當前記錄的位置是在一個Recordset對象第一行記錄之前時,BOF屬性返回true,反之則返回false。若當前記錄的位置是在一個Recordset對象最終一行記錄之后時,EOF屬性返回true,反之則返回false。BOF與EOF都為False:表示指標位于RecordSet的當中。BOF為True:目前指標指到RecordSet

的第一筆記錄。EOF為True:目前指標指到RecordSet的最終一筆記錄。BOF與EOF都為True:在RecordSet里沒有任何記錄。

二、Move方法

您可以用Move方法移動指標到RecordSet中的某一筆記錄,語法如下:rs.MoveNumRecords,Start

這里的“rs”為一個對象變量,表示一個想要移動當當前記錄位置的Recordset對象;“NumRecords”是一個正負數(shù)運算式,設定當前記錄位置的移動數(shù)目;“start”是一個可選的項目,用來指定記錄起始的標簽。全部的Recordset對象都支持Move方法,假如NumRecords參數(shù)大于零,當前記錄位置向末尾的方向移動;假如其小于零,則當前記錄位置向開頭的方向移動;假如一個空的Recordset對象調用Move方法,將會產(chǎn)生一個錯誤。

MoveFirst方法:將當前記錄位置移至第一筆記錄。

MoveLast方法:將當前記錄位置移至最終一筆記錄。

MoveNext方法:將當前記錄位置移至下一筆記錄。

MovePrevious方法:將當前記錄位置移至上一筆記錄。

Move[n]方法:移動指標到第n筆記錄,n由0算起。

三、AbsolutePage屬性

AbsolutePage屬性設定當前記錄的位置是位于哪一頁的頁數(shù)編號;使用PageSize屬性將Recordset對象分割為規(guī)律上的頁數(shù),每一頁的記錄數(shù)為PageSize(除了最終一頁可能會有少于PageSize的記錄數(shù))。這里必需留意并不是全部的數(shù)據(jù)供應者都支持此項屬性,因此使用時要當心。與AbsolutePosition屬性相同,AbsolutePage屬性是以1為起始的,若當前記錄為Recordset的第一行記錄,AbsolutePage為1??梢栽O定AbsolutePage屬性,以移動到一個指定頁的第一行記錄位置。

四、AbsolutePosition屬性

若您需要確定目前指標在RecordSet中的位置,您可以用AbsolutePosition屬性。AbsolutePosition屬性的數(shù)值為目前指標相對於第一筆的位置,由1算起,即第一筆的AbsolutePosition為1。留意,在存取RecordSet時,無法保證RecordSet每次都以同樣的挨次消失。若要啟用AbsolutePosition,必需先設定為使用用戶端cursor(指針),asp碼如下:rs2.CursorLocation=3

五、PageCount屬性

使用PageCount屬性,打算Recordset對象包括多少“頁”的數(shù)據(jù)。這里的“頁”是數(shù)據(jù)記錄的集合,大小等于PageSize屬性的設定,即使最終一頁的記錄數(shù)比PageSize的值少,最終一頁也算是PageCount的一頁。

必需留意也并不是全部的數(shù)據(jù)供應者都支持此項屬性。

六、PageSize屬性

PageSize屬性是打算ADO存取數(shù)據(jù)庫時如何分頁顯示的關鍵,使用它就可以打算多少記錄組成一個規(guī)律上的“一頁”。設定并建立一個頁的大小,從而允許使用AbsolutePage屬性移到其它規(guī)律頁的第一條記錄。PageSize屬性能隨時被設定。

七、RecordCount屬性

這也是一個特別常用和重要的屬性,我們常用RecordCount屬性來找出一個Recordset對象包括多少條記錄。如:

%totle=RS.RecordCount%

在了解了Recordset對象的以上屬性和方法后,我們來考慮一下,如何運用它們來達到我們分頁顯示的目的。首先,我們可以為PageSize屬性設置一個值,從而指定從記錄組中取出的構成一個頁的行數(shù);然后通過RecordCount屬性來確定記錄的總數(shù);再用記錄總數(shù)除以PageSize就可得到所顯示的頁面總數(shù);最終通過AbsolutePage屬性就能完成對指定頁的訪問好象很并不簡單呀,下面讓我們來看看程序該如何實現(xiàn)呢?

我們建立這樣一個簡潔的BBS應用程序,它的數(shù)據(jù)庫中分別有以下五個字段:“ID”,每個帖子的自動編號;“subject”,每個帖子的主題;“name”,加帖用戶的姓名;“email”,用戶的電子郵件地址;“postdate”,加帖的時間。數(shù)據(jù)庫的DSN為“bbs”。我們將顯示帖子分頁的全部步驟放在一個名為“ShowList()”的過程中,便利調用。程序如下:

\BBS顯示帖子分頁

%SubShowList()%

%

PgSz=20\設定開關,指定每一頁所顯示的帖子數(shù)目,默認為20帖一頁SetConn=Server.CreateObject(\ADODB.Connection\)

SetRS=Server.CreateObject(\ADODB.RecordSet\)

sql=\SELECT*FROMmessageorderbyIDDESC\

\查詢?nèi)刻?,并按帖子的ID倒序排列

Conn.Open\bbs\

RS.opensql,Conn,1,1

IfRS.RecordCount=0then

response.write\Pcenter對不起,數(shù)據(jù)庫中沒有相關信息!

/center/P\

else

RS.PageSize=Cint(PgSz)\設定PageSize屬性的值

Total=INT(RS.recordcount/PgSz*-1)*-1\計算可顯示頁面的總數(shù)

PageNo=Request(\pageno\)

ifPageNo=\\Then

PageNo=1

else

PageNo=PageNo+1

PageNo=PageNo-1

endif

ScrollAction=Request(\ScrollAction\)

ifScrollAction=\上一頁\Then

PageNo=PageNo-1

endif

ifScrollAction=\下一頁\Then

PageNo=PageNo+1

endif

ifPageNo1Then

PageNo=1

endif

RS.AbsolutePage=PageNo

Response.Write\CENTER\

position=RS.PageSize*PageNo

pagebegin=position-RS.PageSize+1

ifpositionRS.RecordCountthen

pagend=position

else

pagend=RS.RecordCount

endif

Response.Write\Pfontcolor=\Navy\B數(shù)據(jù)庫查詢結果:/B\Response.Write\(共有\(zhòng)RS.RecordCount\條符合條件的信息,

顯示\pagebegin\-\pagend\)/font/p\

Response.Write\TABLEWIDTH=600BORDER=1CELLPADDING=4CELLSPACING=0BGCOLOR=#FFFFFF\

Response.Write\TRBGCOLOR=#5FB5E2FONTSIZE=2TDB主題/B/TDTDB用戶/B/TDTDBEmail/B/TDTDB發(fā)布日期/B/TD/FONTBGCOLOR=#FFFFFF\

Dowhilenot(RSisnothing)

RowCount=RS.PageSize

DoWhileNotRS.EOFandrowcount0

Ifn=1then

Response.Write\TRBGCOLOR=#FFFFFF\

ELSE

Response.Write\TRBGCOLOR=#EEEEEE\

EndIf

n=1-n%

TDspanstyle=\font-size:9pt\

Ahref=\view.asp?key=%=RS(\ID\)%\%=RS(\subject\)%/A/span/td

TDspanstyle=\font-size:9pt\

%=RS(\name\)%/A/span/td

TDspanstyle=\font-size:9pt\

ahref=\mailto:%=RS(\email\)%\%=RS(\email\)%/a/span/TD

TDspanstyle=\font-size:9pt\

%=RS(\postdate\)%/span/td

/TR

%

RowCount=RowCount-1

RS.MoveNext

Loop

setRS=RS.NextRecordSetTR

Conn.Close

setrs=nothing

setConn=nothing

%

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論