2.8 记录的删除和恢复

在VFP中,删除记录的方法是:先逻辑删除记录,即给记录做上删除标记“*”,然后再物理删除记录。当删除有误时,可以恢复逻辑删除的记录。

2.8.1 记录的逻辑删除

逻辑删除记录就是给记录做上删除标记,但这些记录并没有真正从表中删除。在对表进行操作时,如果执行SET DELETE ON命令,则有删除标记的记录不予显示,称逻辑删除有效。

1.用鼠标的方式逻辑删除记录

在浏览窗口,用鼠标单击记录前的白色小框,使其变为黑色,表示逻辑删除,如图2.22所示。

2.用菜单的方式逻辑删除记录

如果要同时删除多条记录,打开“表”菜单,选择“删除记录…”命令,弹出“删除”对话框,如图2.23所示。

图2.22 逻辑删除记录

图2.23 “删除”对话框

3.用命令方式逻辑删除记录

【命令格式】 DELETE [<范围>] [FOR <条件> ]

【功能】 逻辑删除指定范围内符合条件的记录,删除标记用“*”表示。

【例2.25】 逻辑删除表teacher.dbf中的第3条和第5条记录。

USE teacher
GO 3
DELETE
GO 5
DELETE
LIST

显示结果如下:

从结果可以看到,第3条和第5条记录的前面都有一个“*”,它就是删除标记。

【例2.26】 逻辑删除表teacher.dbf中姓“李”老师的记录。

USE teacher
RECALL ALL
DELETE FOR 姓名="李"
LIST

显示结果如下:

2.8.2 记录的恢复

恢复逻辑删除的记录,实际上就是去掉记录前面的删除标记。

1.用鼠标方式恢复记录

在记录的浏览窗口,单击记录前变为黑色删除标记,使其恢复白色,则该记录去掉删除标记成为正常记录。

2.用菜单方式恢复记录

如果要同时恢复多条记录,打开“表”菜单,选择“恢复记录…”命令,弹出“恢复记录”对话框进行设置即可。

3.用命令方式恢复记录

【命令格式】 RECALL [<范围>] [FOR <条件表达式> ]

【功能】 恢复指定范围内符合条件的被逻辑删除的记录为正常记录。

【说明】

(1)RECALL仅恢复当前记录指针指向的带有删除标记的一条记录。

(2)RECALL ALL恢复所有带删除标记的记录。

(3)若使用FOR<条件表达式>子句,则恢复指定范围内所有符合条件的带有删除标记的记录。

2.8.3 记录的物理删除与清空

物理删除记录就是把记录从表中彻底删除。

1.用菜单方式物理删除记录

打开表“浏览”窗口,单击“表”菜单,选择“彻底删除”命令,弹出提示信息对话框,单击“是”按钮即可。

2.用命令方式物理删除记录

【命令格式】 PACK

【功能】 物理删除所有带删除标记的记录。

【说明】 PACK命令不受SET DELETE ON/OFF状态的影响。

【例2.27】 物理删除表teacher.dbf中的第3条记录。

USE teacher
RECALL all
GO 3
DELETE
PACK
BROWSE

显示结果如图2.24所示。

图2.24 【例2.27】显示结果

3.记录的清空

【命令格式】 ZAP

【功能】 物理删除表中的全部记录,删除后,表中只保留结构,没有记录。