星空网站建设

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6|回复: 0

今日访谈ADO 存取数据库时是我重要属性和方法

[复制链接]
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    10万

    主题

    52

    回帖

    30万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    307601
    发表于 2025-8-7 11:46:44 | 显示全部楼层 |阅读模式

    一、BOF与EOF属性

    通常我们在ASP程序中编写代码来检验BOF与EOF属性,从而得知目前指标所指向的RS的位置,使用BOF与EOF属性,可以得知一个R对象是否包含有记录或者得知移动记录行是否已经超出该R对象的范围。

    如:

    %%

    %()%

    若当前记录的位置是在一个R对象首行记录之前时,BOF属性返回,反之则返回。

    若当前记录的位置是在一个R对象比较后一行记录之后时,EOF属性返回,反之则返回。

    BOF与EOF都为F:表示指标位于RS的当中。

    BOF为T:目前指标指到RS的首笔记录。EOF为T:目前指标指到RS的比较后一笔记录。

    BOF与EOF都为T:在RS里没有任何记录。

    二、M方法

    您可以用M方法移动指标到RS中的某一笔记录,语法如下:

    MNR,S

    这里的“”为一个对象变量,表示一个想要移动当当前记录位置的R对象;“NR”是一个正负数运算式,设定当前记录位置的移动数目;“”是一个可选的项目,用来指定记录起始的标签。

    所有的R对象都支持M方法,如果NR参数大于零,当前记录位置向末尾的方向移动;如果其小于零,则当前记录位置向开头的方向移动;如果一个空的R对象调用M方法,将会产生一个错误。

    MF方法:将当前记录位置移至首笔记录。

    ML方法:将当前记录位置移至比较后一笔记录。

    MN方法:将当前记录位置移至下一笔记录。MP方法:将当前记录位置移至上一笔记录。

    M[]方法:移动指标到第笔记录,由0算起。

    、AP属性

    AP属性设定当前记录的位置是位于哪一页的页数编号;使用PS属性将R对象分割为逻辑上的页数,每一页的记录数为PS(除了比较后一页可能会有少于PS的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。

    与AP属性相同,AP属性是以1为起始的,若当前记录为R的首行记录,AP为1。可以设定AP属性,以移动到一个指定页的首行记录位置。

    四、AP属性

    若您需要确定目前指标在RS中的位置,您可以用AP属性。

    AP属性的数值为目前指标相对於首笔的位置,由1算起,即首笔的AP为1。

    注意,在存取RS时,法保证RS每次都以同样的顺序出现。

    若要启用AP,必须先设定为使用用户端(指针),码如下:

    2CL=3

    五、PC属性

    使用PC属性,决定R对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于PS属性的设定,即使比较后一页的记录数比PS的值少,比较后一页也算是PC的一页。必须注意也并不是所有的数据提供者都支持此项属性。

    六、PS属性

    PS属性是决定ADO存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用AP属性移到其它逻辑页的首条记录。PS属性能随时被设定。

    七、RC属性

    这也是一个非常常用和重要的属性,我们常用RC属性来找出一个R对象包括多少条记录。如:%=RSRC%

    在了解了R对象的以上属性和方法后,我们来考虑一下,如何运用它们来达到我们分页显示的目的。首先,我们可以为PS属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过RC属性来确定记录的总数;再用记录总数除以PS就可得到所显示的页面总数;比较后通过AP属性就能完成对指定页的访问。好象很并不复杂呀,下面让我们来看看程序该如何现呢

    我们建立这样一个简单的BBS应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“”,每个帖子的主题;“”,加帖用户的姓;“”,用户的电子邮件地址;“”,加帖的时间。数据库的DSN为“”。我们将显示帖子分页的所有步骤放在一个为“SL()”的过程中,方便调用。程序如下:

    \'----BBS显示帖子分页----

    %SSL()%

    %

    PS=20\'设定开关,指定每一页所显示的帖子数目,默认为20帖一页

    SC=SCO("ADODBC")

    SRS=SCO("ADODBRS")

    ="SELECT*FROMIDDESC"

    \'查询所有帖子,并按帖子的ID倒序排列

    CO""

    RS,C,1,1

    IRSRC=0

    "P对不起,数据库中没有相关信息!P"



    RSPS=C(PS)\'设定PS属性的值

    T=INT(RSPS*-1)*-1\'计算可显示页面的总数

    PN=R("")

    PN=""T

    PN=1



    PN=PN+1

    PN=PN-1



    SA=R("SA")

    SA="上一页"T

    PN=PN-1



    SA="下一页"T

    PN=PN+1



    PN1T

    PN=1



    =1

    RSAP=PN

    RW"CENTER"

    =RSPS*PN

    =-RSPS+1

    RSRC

    =



    =RSRC



    RW"P=\'N\'B数据库查询结果:B"

    RW"(共有"RSRC"条符合条件的信息,显示""-"")"

    RW"TABLEWIDTH=600BORDER=1CELLPADDING=4CELLSPACING=0BGCOLOR=#FFFFFF"

    RW"TRBGCOLOR=#5FB5E2FONTSIZE=2TDB主题BTDTDB用户BTDTDBEBTDTDB发布日期BTDFONTTRBGCOLOR=#FFFFFF"

    D(RS)

    RC=RSPS

    DWNRSEOF0

    I=1

    RW"TRBGCOLOR=#FFFFFF"

    ELSE

    RW"TRBGCOLOR=#EEEEEE"

    EI

    =1-%

    TD="-:9"A=\'=%=RS("ID")%\'%=RS("")%A

    TD="-:9"%=RS("")%A

    TD="-:9"=":%=RS("")%"%=RS("")%TD

    TD="-:9"%=RS("")%

    TR

    %

    RC=RC-1

    RSMN

    L

    RS=RSNRS

    L

    CC

    =

    C=

    %

    TABLE

    FORMMETHOD=GETACTION=""

    INPUTTYPE="HIDDEN"NAME=""VALUE="%=PN%"

    %

    PN1T

    "INPUTTYPE=SUBMITNAME=\'SA\'VALUE=\'上一页\'"



    RC=0PNT

    "INPUTTYPE=SUBMITNAME=\'SA\'VALUE=\'下一页\'"



    "FORM"

    E
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表