Visual FoxPro程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 记录指针的定位

表中的每个记录都有一个编号,称为记录号。对于打开的表,会被分配一个记录指针,记录指针指向的记录称为当前记录。定位记录就是移动记录指针,使指针指向符合条件的记录的过程。使用记录号测试函数RECNO()可以获得当前记录的记录号。

表文件有两个特殊的位置:文件头(表起始标记)和文件尾(表结束标记)。文件头在表的第一条记录之前,当记录指针指向文件头时,BOF()函数的值为.T.;文件尾在表的最后一条记录之后,当记录指针指向文件尾时,EOF()函数的值为.T.,如图2.18所示。

图2.18 记录指针的定位

1.绝对定位

将记录指针直接定位到某条记录,称为记录的绝对定位。

(1)使用鼠标在浏览方式下直接定位。在如图2.9所示的记录的浏览窗口,记录最左边的小方框里,黑色向右的三角所指的记录就是当前记录,用户可以通过单击鼠标的方式直接定位记录。

(2)命令方式绝对定位。

【命令格式】 GO/GOTO [TOP/BOTTOM]/<n>]

【功能】 将记录指针指向定位记录。

【例2.21】 GO 命令定位示例。

USE teacher
?RECNO()         && 刚打开的表,指针指向第1条记录
GO bottom         && 定位到末记录
?RECNO()
?EOF()
GO 3
?RECNO()
GO top          && 定位到首记录
?RECNO()

显示结果如下:

2.相对定位

【命令格式】 SKIP[+//] [<数值表达式>]

【功能】 从当前记录开始向前或向后移动记录指针。

【说明】

(1)SKIP:向表尾方向移动1条记录。

(2)SKIP+n:向表尾方向移动n条记录。

(3)SKIPSn:向表头方向移动n条记录。

【例2.22】 SKIP命令定位记录示例。

USE teacher
?RECNO(),BOF()
SKIP -1           &&指向文件头
?RECNO(),BOF()
GO bottom
?RECNO(),EOF()
SKIP             &&指向文件尾
?RECNO(),EOF()

显示结果如下:

另外也可使用菜单方式定位或移动记录指针。在记录的浏览、编辑、追加等方式下,打开“表”菜单,选择“转到记录”命令,选择如图2.19所示的某个命令。

图2.19 “转到记录”菜单及子菜单