繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> ASP编程菜鸟入门教程-ADO数据访问模型(四)

ASP编程菜鸟入门教程-ADO数据访问模型(四)

2006-05-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:六、RecordSet对象   写到这一篇的时候,我不禁想到了先贤的两句话,一句是孟子在曹刿论战中所说的:一鼓作气,再而衰,三而竭。这篇ADO总结报告的前五部分都是一鼓作气之作,不知这后面的再而衰部分是否能保持...

六、RecordSet对象

  写到这一篇的时候,我不禁想到了先贤的两句话,一句是孟子在曹刿论战中所说的:一鼓作气,再而衰,三而竭。这篇ADO总结报告的前五部分都是一鼓作气之作,不知这后面的再而衰部分是否能保持连续了。另外的一句是王安石在游褒禅山记中所说的:世之奇伟、瑰怪、非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。我们学习编程又何尝不是这样了,若非有志,能及于险远是不能真正掌握的。

  好了,讲了这么多的题外话,还是让我们回到正题上来,我想,由于大家对RecordSet都有足够的认识,所以我就不象前面的几章中那样对它的每一个属性和方法都做完整的介绍,我想通过几个有代表性的编程实例来给大家讲一讲。

1、 方法

AddNew, CancelBatch, CancelUpdate, Clone, Close, Delete, GetRows, Move, MoveFirst, MoveLast, MoveNext, MovePrevious, NextRecordset, Open, Requery, Resync, Supports, Update, UpdateBatch

2、 属性

AbsolutePage,AbsolutePosition,ActiveConnection,BOF,Bookmark, CacheSize, CursorLocation, CursorType, EditMode, EOF, Filter, LockType, MarshalOptions, MaxRecords, PageCount, PageSize, RecordCount, Source, State, Status

3、 集合

Fields,Properties

实例一:分页显示及导航:

  为什么我要再提分页的这个问题呢?因为这是一个最基本的问题,虽然有很多关于分页的文章,但我觉得他们的方法偏于复杂。其实RecordSet的AbsolutePage就可以轻松的实现分页,当你指定了PageSize属性后,对AbsolutePage指定值就可以翻转到指定的页面。但是如果你想使用AbsolutePage的话,你必须在打开RecordSet对象之前将它的CursorLocation值设为adUseClient,这个属性是继承Connection对象的一个相同属性的。你也可以在打开Connection对象之前来设定它。下面是源代码,为了方便,我将导航栏独立成了一个子程序方便大家使用。

$#@60;%

sub navigator(PageNo,Target)

Response.Write "$#@60;table border=0$#@62;"

Response.Write "$#@60;tr$#@62;"

Response.Write "$#@60;td$#@62;"

if PageNo$#@62;1 then

Response.write "$#@60;a href="&chr(34)&Target&"?Page=1"&chr(34)&"$#@62;┃第一页$#@60;/a$#@62;"

else

Response.Write "┃第一页"

end if

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;td$#@62;"

if PageNo$#@60;rs.PageCount then

Response.write"$#@60;a href="&chr(34)&Target&"?Page="&PageNo+1&chr(34)&"$#@62;┃下一页$#@60;/a$#@62;"

else

Response.Write "┃下一页"

end if

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;td$#@62;"

if PageNo$#@62;1 then

Response.write "$#@60;a href="&chr(34)&Target&"?Page="&PageNo-1&chr(34)&"$#@62;┃前一页$#@60;/a$#@62;"

else

Response.Write "┃前一页"

end if

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;td$#@62;"

if PageNo$#@60;rs.PageCount then

Response.write "$#@60;a href="&chr(34)&Target&"?Page="&rs.PageCount&chr(34)&"$#@62;┃最后一页$#@60;/a$#@62;"

else

Response.Write "┃最后一页"

end if

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;td$#@62;"

Response.Write "┃页次:"&PageNo&"/"&rs.PageCount&"页┃"&rs.PageSize&"条记录/页┃"

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;td valign="middle"$#@62;"

Response.Write "$#@60;form action="&chr(34)&Target&chr(34)&" method="&chr(34)&"POST"&chr(34)&"$#@62;"

Response.Write "$#@60;input type="text"size=3 maxlength=4 name="Page"$#@62;"

Response.Write " $#@60;input type="submit"value="转到"$#@62;"

Response.Write "$#@60;/form$#@62;"

Response.Write "$#@60;/td$#@62;"

Response.Write "$#@60;/tr$#@62;"

Response.Write "$#@60;/table$#@62;"

end sub

%$#@62;

$#@60;%

const adCmdText=&H0001

const adVarChar=200

const adInteger=3

const adParamInput=&H0001

const adCmdTable=&H0002

const adUseClient=3

const adDate=7

const adLongVarChar=201

set conn=Server.CreateObject("ADODB.Connection")

conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb)};DBQ="& _

Server.Mappath("/source_ASP")&"/process/process.mdb;"

conn.Open

%$#@62;

$#@60;%

const MaxPageSize=5

%$#@62;

$#@60;HTML$#@62;

$#@60;head$#@62;

$#@60;title$#@62; See Book $#@60;/title$#@62;

$#@60;/head$#@62;

$#@60;body$#@62;

$#@60;%

dim i,j,PageNo

set rs=Server.CreateObject("ADODB.RecordSet")

rs.ActiveConnection=conn

rs.CursorLocation=adUseClient

rs.Open "Select * From books",,,adCmdText

if rs.BOF then

Response.Write "欢迎使用图书,资料管理程序!"

else

rs.PageSize=MaxPageSize

if isempty(Request.QueryString("Page")) then

PageNo=1

elseif cInt(Request.QueryString("Page"))$#@60;1 then

PageNo=1

elseif cInt(Request.QueryString("Page"))$#@62;rs.PageCount then

PageNo=rs.PageCount

else

PageNo=cInt(Request.QueryString("Page"))

end if

if Request.ServerVariables("Request_Method")="POST" and not Isempty(Request.Form("Page")) then

PageNo=cInt(Request.Form("Page"))

end if

rs.AbsolutePage=PageNo

Response.Write "$#@60;table border="0" width="100%"$#@62;"

Response.Write "$#@60;tr$#@62;$#@60;td colspan="&rs.fields.count&"$#@62;"

Target="books.ASP"

call navigator(PageNo,Target) "调用导航栏

Response.Write "$#@60;/td$#@62;$#@60;/tr$#@62;"

Response.Write "$#@60;tr$#@62;"

for i=0 to rs.fields.count-1

Response.Write "$#@60;td$#@62;"&rs.fields.item(i).name&"$#@60;/td$#@62;"

next

Response.Write "$#@60;/tr$#@62;"

j=0

while (not rs.EOF) and j$#@60;rs.PageSize

Response.Write "$#@60;tr$#@62;"

for i=0 to rs.fields.count-1

if i=1 then

Response.Write "$#@60;td$#@62;"&"$#@60;a href="&chr(34)&"status.ASP?BookName="& _

rs.fields.item(i).value&chr(34)&"$#@62;"&rs.fields.item(i).value&"$#@60;/a$#@62;$#@60;/td$#@62;"

"这里这样写是为了级联式查询而做的。

else

Response.Write "$#@60;td$#@62;"&rs.fields.item(i).value&"$#@60;/td$#@62;"

end if

next

Response.Write "$#@60;/tr$#@62;"

rs.MoveNext

j=j+1

wend

Response.Write "$#@60;/table$#@62;"

end if

%$#@62;

责任编辑:admin
相关文章