3.2.3 记录的定位
一、记录指针标志
一个表文件被打开后,系统中自动生成3个控制标志:记录的开始标志、记录的指针标志和记录的结束标志。
当向表中输入记录时,VFP按输入的顺序为每个记录指定了“记录号”。第一个输入的记录的记录号为1,其余依次类推(图3-3)
图3-3 表文件示意图
记录指针是VFP系统内部的一个指示器,指向表中的记录,刚打开文件时,记录指
记录的开始标志位于第一个记录之前,记录的结束标志是整个表记录结束的标志。记录的开始标志可用函数BOF()进行测试,指针指向开始标志时,其值为.T.,反之为.F.。记录的结束标志可用函数EOF()进行测试,指针指向结束标志时,其值为.T.,反之为.F.。
表3-2是刚打开一张表时记录指针的情况:
表3-2 刚打开表时记录指针的情况
注意:记录指针的初始值总是1,不可能为0或负数,其记录号的最大值是记录总数+1。
二、记录定位方式
记录指针的定位方式有:记录指针的绝对定位、相对定位和条件定位。
指针的绝对定位是指把指针移动到指定的位置。如第一个记录、最后一个记录或指定记录号的记录。
相对定位是指把指针从当前位置开始,相对当前记录向前或向后移动若干个记录位置。相对定位与定位前指针的位置有关。
条件定位是指按照一定的条件自动地在整张表或表的某个指定范围内查找符合该条件的记录。若找到符合条件的记录,则定位在该记录上;否则,指针将定位到整张表或表的指定范围的末尾。
三、定位的实现
1.通过界面操作方式定位
在“表”菜单中的“转到记录”菜单项中可实现不同方式的定位(图3-4)。
(1)“记录号…”:实现绝对定位。
(2)“定位…”:实现条件定位。需在“定位记录”对话框中输入查找范围、定位条件。再按“定位”按钮实现条件定位。
在“作用范围”下拉列表中选择范围。4个选项为:
(1)“All”:表中的全部记录。
(2)“Next”:从当前记录开始的n个记录,具体个数在其右边的文本框中输入。
(3)“Record”:指定一个记录,记录号在其右边的文本框中输入。
(4)“Rest”:当前记录后的所有记录。
在“For”文本框中输入条件表达式。
例如:xsxh="040102"。
图3-4 定位的实现
2.用命令定位
(1)绝对定位命令,见表3-3。
表3-3 绝对定位命令
(2)相对定位命令
语法:
SKIP[nRecords]
参数:
[nRecords]:指定记录指针需要移动的记录数。如果nRecords>0,记录指针将向文件尾移动nRecords个记录;如果nRecords<0,记录指针将向文件头移动n Records个记录;如果nRecords省略,则等价于SKIP 1。
说明:
①如果从第一个记录向上移动一个记录,指针将指向记录开始标志,BOF()函数为.T.,RECNO()函数返回值为1。如果再执行SKIP–1命令,系统将显示出错信息:已到文件头。此时,记录指针仍然指向记录开始标志。
②如果从最后一个记录向下移动一个记录,指针将指向记录结束标志,EOF()函数为.T.,RECNO()函数返回值为记录总数+1。如果再执行SKIP命令,系统将显示出错信息:已到文件尾。此时,记录指针仍然指向记录结束标志。
③如果表有一个主控索引或索引文件,SKIP命令将使记录指针移动到索引顺序决定的记录上。
例如:xs表有104条记录。在1号记录前BOF()为.T.,其他为.F.在104号记录后EOF()为.T.,其他为.F.。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。