分享
 
 
 

ado网站资料库技术速成(二)

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

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")回到上次書籤記號的位置

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有