My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 基本
ado网站资料库技术速成(二)
作者:Yestar2000 时间:2001-11-08 10:55 出处:互联网 责编:MyFAQ
              摘要:ado网站资料库技术速成(二)
ADO存取資料庫如何顯示上一筆下一筆?

ADO存取資料庫如何顯示上一筆下一筆?

若要於RecordSet移動到上一筆下一筆的位置,讓我們先學會以下RecordSet物件的屬性和方法:


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


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


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


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


bookmark(書籤)屬性:於RecordSet的一筆記錄做一個記號。

詳細介紹如下:

BOF與EOF屬性

可以撰寫程式碼來檢查BOF與EOF屬性,來得知目前指標於RecordSet的位置:


BOF與EOF都為False:表示指標位於RecordSet當中。


BOF為True:目前指標指到RecordSet的第一筆。


EOF為True:目前指標指到RecordSet的最後一筆。


BOF與EOF都為True:在RecordSet裏沒有任何的資料記錄。

Move方法

您可以用Move方法移動指標到RecordSet中的某一筆記錄:


MoveFirst方法:移至第一筆記錄。


MoveLast方法:移至最後一筆記錄。


MoveNext方法:移至下一筆記錄。


MovePrevious方法:移至上一筆記錄。


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

AbsolutePosition屬性

若您需要確定目前指標在RecordSet中的位置,您可以用AbsolutePosition屬性。

AbsolutePosition屬性的數值為目前指標相對於第一筆的位置,由1算起,即第一筆的AbsolutePosition為1。然而,不要誤以為AbsolutePosition是資料記錄的編號,如果目前RecordSet處於未定的狀態,則AsolutePosition的數值為–1。

另外,在存取RecordSet時,無法保證RecordSet每次都以同樣的順序出現。

若要啟用AbsolutePosition,必須先設定為使用用戶端cursor,asp碼如下:

rs2.CursorLocation = 3

Move/AbsolutePosition例子

讓我們看一個於ASP程式碼當中使用Move/AbsolutePosition做到上一筆下一筆功能的例子。

譬如ASP程式碼如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

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

SqlStr = "SELECT * From 著作"

'Enable AbsolutePosition

rs2.CursorLocation = 3 'adUseClient

rs2.Open SqlStr,conn1,1,1

if Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

else

Session("position") = 0

end if

%>

<% = Session("position") %>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">書名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">圖片</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">簡介</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">AbsolutePosition</FONT></TD>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("書名") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("出版") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("圖片") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("簡介") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2.AbsolutePosition %></TD>

</TR>

</TABLE>

<% if Session("position") > 0 then %>

<A href=rs14.asp?sel=prev>上一筆</A>

<% end if %>

<% if Session("position") < rs2.RecordCount -1 then %>

<A href=rs14.asp?sel=next>下一筆</A>

<% end if %>

<% rs2.Close %>

以上的 ASP程式碼,於用戶端使用瀏覽器,瀏覽執行的結果,顯示上一筆下一筆的功能。

由Session("position")儲存這個使用者的RecordSet指標位置,當按下 [上一筆] 超連結時,由<A href=rs14.asp?sel=prev>上一筆</A>,將sel設定為prev,並重新執行rs14.asp的asp碼。由以下的程式部份,將Session("position")減一:

if Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

else

Session("position") = 0

end if

然後使用Move Session("position")方法,將移動指標到第Session("position")個記錄,第一筆記錄的Session("position")值為0。

當按下 [下一筆] 超連結時,由<A href=rs14.asp?sel=next>下一筆</A>,將sel設定為next,並重新執行rs14.asp的asp碼。由以上的程式部份,將Session("position")加一,然後使用Move Session("position")方法,將移動指標到第Session("position")個記錄。

AbsolutePosition部份,首先由rs2.CursorLocation = 3設定為使用用戶端cursor,以啟用AbsolutePosition,即可由<%= rs2.AbsolutePosition %>顯示AbsolutePosition的值。

為了判斷是否要顯示 [上一筆] [下一筆] 超連結,由以下的程式部份:

<% if Session("position") > 0 then %>

<A href=rs14.asp?sel=prev>上一筆</A>

<% end if %>

<% if Session("position") < rs2.RecordCount -1 then %>

<A href=rs14.asp?sel=next>下一筆</A>

<% end if %>

就可以使用if Session("position") > 0、if Session("position") < rs2.RecordCount -1,比較目前的位置Session("position")和第一筆0、第末筆RecordCount -1的位置,來判斷是否要顯示 [上一筆] [下一筆] 的超連結。

Bookmark(書籤)

Bookmark(書籤)於RecordSet的一筆記錄做一個記號。

使用時先移動到那筆資料,然後給予Bookmark屬性一個名稱,即書籤記號的名稱,當要回到該筆記錄時,將Bookmark 屬性設為所設定書籤記號的名稱即可。

Bookmark例子

如何使用Bookmark(書籤)呢?讓我們看一個於ASP程式碼當中使用Bookmark的例子。

譬如ASP程式碼如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

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

SqlStr = "SELECT * From 著作"

rs2.Open SqlStr,conn1,1,1

rs2.MoveNext

if Request("sel") = "last" then

rs2.MoveLast

elseif Request("sel") = "first" then

rs2.MoveFirst

elseif Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

elseif Request("sel") = "set" then

rs2.Move Session("position")

Session("bk") = rs2.Bookmark

elseif Request("sel") = "go" then

rs2.Bookmark = Session("bk")

else

Session("position") = 0

end if

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">書名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">圖片</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">簡介</FONT></TD>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("書名")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("出版")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("圖片")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("簡介")%></TD>

</TR>

</TABLE>

<A href=rs13.asp?sel=first>第一筆</A>

<% if Session("position") > 0 then %>

<A href=rs13.asp?sel=prev>上一筆</A>

<% end if %>

<% if Session("position") < rs2.RecordCount -1 then %>

<A href=rs13.asp?sel=next>下一筆</A>

<% end if %>

<A href=rs13.asp?sel=last>最末筆</A>

<A href=rs13.asp?sel=set>設定Bookmark</A>

<A href=rs13.asp?sel=go>到Bookmark</A>

<% rs2.Close %>

由Session("bk")儲存這個使用者RecordSet 的bookmark(書籤)位置,當按下 [設定Bookmark] 超連結時,由<A href=rs13.asp?sel=set>設定Bookmark</A>,將sel設定為set,並重新執行rs13.asp的asp碼。由以下的程式部份,首先rs2.Move Session("position")回到上次的位置,然後使用Session("bk") = rs2.Bookmark設定書籤,Session("Bookmark")儲存書籤記號的名稱:

if Request("sel") = "last" then

rs2.MoveLast

elseif Request("sel") = "first" then

rs2.MoveFirst

elseif Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

elseif Request("sel") = "set" then

rs2.Move Session("position")

Session("bk") = rs2.Bookmark

elseif Request("sel") = "go" then

rs2.Bookmark = Session("bk")

else

Session("position") = 0

end if

當按下 [到Bookmark] 超連結時,由<A href=rs13.asp?sel=go>到Bookmark</A>,將sel設定為go,並重新執行rs13.asp的asp碼。由以上的程式部份,由rs2.Bookmark = Session("bk")回到上次書籤記號的位置
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有