打印本文 打印本文  关闭窗口 关闭窗口  
VFP基础教程第三章表记录的处理
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:51:51  文章录入:杜斌  责任编辑:杜斌

3.3 表记录的处理

1. 记录的输入

(1) 立即输入方式

设计好表的结构后,系统会提示是否直接进入数据输入状态。若选是,则进入编辑窗口,输完后单击“X”按钮退出,系统自动存盘。需输入备注型或通用型字段的数据时,双击“memo” 或“gen”,在新打开的编辑窗口中输入所需内容,输完后单击“X”按钮系统自动存盘,退回到原窗口 ,此时字段中的“memo” 或“gen”变成“Memo” 或“Gen”。

(2) 追加方式

若设计好表的结构后并没有及时输入数据,则可以用追加方式:

文件菜单中(或从命令窗口中输入:USE 表文件名) 打开所需表文件 → 从显示菜单中选择浏览 → 再从显示菜单中选择追加方式 → 在浏览窗口中输入所需记录。

不同追加方式适用的场合

追加记录的方式

适用的场合

显示菜单中的追加方式 在现有数据表的尾部添加一个或多个新记录 菜单中的追加新记录 在现有数据表的尾部添加一个新记录 菜单中的追加记录… 从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部 APPEND [BLANK] 在当前表的末尾自动添加一个或多个新记录。相当于显示菜单中的追加方式。有BLANK时添加一个空记录,相当于表菜单中的追加新记录。 APPEND FROM 表文件名 [FIELDS 字段名1,字段名2 …][FOR 条件 ] 从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部。相当于表菜单中的追加记录…。 APPEND FROM 文本文件名 SDF 将符合要求的文本文件全部追加在当前数据表的尾部。
注意:文本内容要与表中的字段结构相适应。 文件菜单中的导入 将其它类型的文件转换成一个完整的VFP数据表。

(3) 使用INSERT-SQL命令

该命令的一般格式为:

INSERT INTO <表名>[(字段名1[,字段名2 …])] VALUES (表达式1[,表达式2 …])

INSERT INTO xscj(xh,xm,cj) VALUES ("81991001", "张良", 85.5)

2. 记录的浏览

(1) 通过浏览窗口

(2) 通过BROWSE 命令

BROWSE命令用来打开表的浏览窗口,可通过不同的子句来实现对特定记录的浏览。

VFP命令中的常用子句

1) 范围子句

子句格式

功能

ALL 表示对表文件的全部记录进行操作 NEXT n 表示对从当前记录开始的共n个记录进行操作, n为正整数 RECORD n 指明操作对象是表文件的第n号记录 REST 对从当前记录起到文件结尾的全部记录进行操作

2) FOR子句

用于指明进行操作的条件。

格式: FOR <条件>

指明只对指定范围中那些符合给定条件的进行当前操作。

例如: list NEXT 6 FOR cj < 85

3) WHILE 子句

也用于指明进行操作的条件。

格式: WHILE <条件>

例如: list NEXT 6 WHILE cj < 85

4) FIELDS 子句

用于指明当前的操作涉及到表文件的哪些字段。

格式:BROWSE [ FIELDS 字段名1,字段名2……]

例如:BROWSE FIELDS xh,xm,cj

3. 记录的定位

(1) 系统对记录的三个控制标志

记录开始标志:位于第一个记录之前。其值用函数BOF()进行测试。

记录指针标志:指向当前记录。其值用函数RECNO()进行测试。

记录结束标志:位于最后一个记录之后。其值用函数EOF()进行测试。

记录指针可以理解为保存当前记录号的变量,它的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。

刚打开表时记录指针的情况

表中记录情况

BOF()的值

RECNO()的值

EOF()的值

无记录

.T.

1

.T.

有记录

.F.

1

.F.

(2)记录的定位方式

绝对定位:是指把指针移到指定的位置。

相对定位:

是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。

条件定位:

    是指按一定的条件在整张表或表的某个指定范围中查找符合该条件的记录。

    通过菜单进行定位

菜单中选择转到记录:记录号——实现绝对定位

定位… ——实现条件定位

    通过命令进行定位

记录的定位

命令格式

功能

备注

绝对定位 GO TOP 将记录指针定位到表文件之首 或 GOTO TOP GO BOTTOM 将记录指针定位到表文件之尾 或GOTO BOTTOM GO <n> 将记录指针定位到指定的n号记录   相对定位 SKIP <n> 将记录指针从当前记录向上或向下移动n个 n为正值则向下移动

n为负值则向上移动

无n向下移动 1个

条件定位 LOCATE FOR <条件> [ 范围 ] 按顺序搜索表, 直到找到满足指定条件的第一个记录 默认范围是所有记录

 

4. 记录的修改和删除

一张表用非只读方式打开后,即可通过菜单在浏览窗口(或编辑窗口)中或从命令窗口中用命令直接对其记录进行编辑、修改和删除。

(1) 菜单方式

修改记录:

菜单中选择替换字段… → 在替换字段对话框中选择待替换的字段并构造出替换表达式及替换条件 → 替换。

删除记录:

菜单中选择删除记录 → 在删除对话框中选择删除范围和删除条件 → 单击删除按钮 → 从菜单中选择彻底删除 → 在消息框中单击

删除记录包括两步: 标记要删除的记录 和 彻底删除带删除标记的记录

恢复带删除标记的记录

菜单中选择恢复记录 → 在恢复记录对话框中选择作用范围和条件 → 单击恢复记录按钮。

(2) SQL命令方式 (表事先可以不打开,适用于编程工作方式)

修改记录:UPDATE-SQL 命令。

命令格式: UPDATE <表名> SET 字段1 = 表达式1 [,字段2 = 表达式2 …];

WHERE 条件表达式

例: UPDATE xscj SET cj = cj*1.05 WHERE cj>80

删除记录: DELETE-SQL 命令。

命令格式: DELETE FROM <表名> [WHERE 条件表达式]

例: DELETE FROM xscj WHERE cj<60

(3) 在命令窗口中用VFP命令:

命令格式

功能

备注

插入 INSERT [BLANK][BEFORE] 在当前表的指定位置上插入一个空记录或若干新记录 BLANK :在当前记录后插入一个空记录

BEFORE :在当前记录之前插入若干新记录

修改 CHANGE [FIELDS 字段名1,…][FOR 条件] [LEDIT] [REDIT] 在编辑窗口显示要修改的字段 LEDIT:调出编辑窗口

REDIT:调出浏览窗口

替换 REPLACE 字段名1 WITH 表达式1 [ADDITIVE][, 字段名2 WITH 表达式2[ADDITIVE] …] [范围] [FOR 条件] 把字段值用指定的表达式进行替换。如: 工资单中给某些人长工资 默认范围是当前记录

ADDITIVE:把备注字段的替换内容添加在原备注内容的后面

删除 DELETE [ 范围 ][FOR 条件] 对当前表中指定范围内满足条件的记录加上删除标记 * 默认范围是当前记录 PACK [MEMO][DBF] 将所有带删除标记的记录从表中抹去(不能再恢复) DBF:不影响备注文件

MEMO:从备注文件中删除未使用空间

ZAP 删除当前表中所有记录,只留下表的结构

相当于

DELETE ALL + PACK

恢复 RECALL [ 范围] [FOR 条件] 取消当前表中指定记录上的删除标记 默认范围是当前记录

 5. 筛选记录和字段

(1) 用菜单方式

菜单中选择属性 → 在工作区属性对话框中单击数据过滤器框后的按钮 → 在表达式生成器对话框中构造所需的条件表达式并确定 → 单击字段筛选…按钮 →在字段筛选器中选择所需字段并确定 → 单击选项按钮:字段筛选指定的字段 → 确定。

(2)用命令方式

命令格式SET FILTER TO 条件表达式

例: SET FILTER TO xb ='男'

注意:SQL命令对记录的访问不受此筛选命令的限制。

打印本文 打印本文  关闭窗口 关闭窗口