模块三 数据库设计
(6)DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示,并且在该命令中,如果省略范围仅显示当前记录。LIST不分屏,如果省略范围显示所有记录。
子任务六 添加、删除记录
任务描述创建t_book表的结构后,需要添加记录那么如何添加呢?某一版本的书不再出版,我们想删除,该怎么办呢?
案例展示1、添加记录
向表中输入记录的方法有两种情况:
用表设计器定义好表的结构后,立即输入记录。 随时向表中追加记录。
(1)创建表时立即输入数据
表结构的定义要通过表设计器完成,表中数据的输入要在表“浏览”窗口或表“编辑”窗口中进行。
在创建表时,首先通过表设计器完成表结构定义,按“确定”按钮保存表结构,同时打开“系统”窗口,显示“现在输入数据吗?”的对话框。选择“是”按钮,可以立即进入表“浏览”窗口,进行表中数据的输入。
(2)以追加方式输入数据 在建立表结构时,如果用户没有选择立即方式向表输入数据,可以用追加数据方式向表输入数据,有如下4种方式。
操作步骤是:打开要输入数据的表; A、打开“显示”菜单,选择“浏览”,然后选择“编辑”或“浏览”,可进入表“编辑” 或“浏览”窗口;在此窗口可以通过选择“显示”菜单下的“追加方式”选项向表输入数据。不仅可以进行数据的输入,同时也可以编辑修改表中的数据。
B、还可以从菜单栏上的“表”菜单中追加新记录,此方式一次只能追加一条记录。 C、从菜单栏上的“表”菜单中追加记录,可以追加来源于文件的数据。 D、命令方式
使用APPEND、INSERT命令可以向打开的数据表中添加记录。
使用APPEND BLANK命令可以在打开的数据表中添加一条空白记录。
APPEND FROM <表文件名> FOR <逻辑表达式>可以从其他表中追加数据。
边学边练 例如:将与“图书”表结构相同的“tstemp”表中的记录追加到“T_book”表中: 使用命令方式追加记录,在“命令”窗口键入下列命令: USE T_book
APPEND FROM tstemp &&将“tstemp”表中的记录追加到当前表中 BROWSE &&浏览“T_book”表记录
Page 21
Visual FoxPro 程序设计
Insert before|blank可以在指定位臵前(后)追加记录 2、编辑记录
t_book表中的的图书“C语言程序设计”的出版日期发现有错误,我们需要修改数据,如何修改呢?
(1)用编辑方式显示和修改数据
在表“编辑”窗口,可以采用“编辑”方式,显示和修改表中的数据。在表“编辑”窗口,可以使用鼠标调整浏览窗口的大小,调整每个字段的显示顺序和改变成有“浏览”和“编辑”两种显示方式的窗口。
(2)用浏览方式显示和修改数据
在表“浏览”窗口,可以采用“浏览”方式,显示和修改表中的数据。在表“浏览”窗口,同样可以使用鼠标调整窗口的大小、调整每个字段的显示宽度和改变成有“浏览”和“编辑”两种方式显示的窗口以上两种方式只能一条一条修改。
(3)使用命令批量修改数据如果清华大学出版社的图书单价提高了10%,我们怎么办呢?如果一条一条的修改,那是很麻烦的,我们可以使用批处理命令,对字段内容成批自动地进行修改<替换>,而不必在编辑状态下逐条修改,可以使用批处理命令REPLACE。
REPLACE格式:
REPLACE [<范围>] <字段名1> WITH <表达式1>[,<字段名2> WITH <表达式2> …][FOR |WHILE <条件> ]
对指定范围内满足条件的各条记录,以<表达式1>的值替换<字段名1>的内容,以<表达式2>的值替换<字段名2>的内容…备注型字段除外。
用“表”下拉菜单中“替换字段”选项的作用也可以完成该操作。
边学边练 所以清华大学出版社的图书单价提高10%,可以用下列命令实现。 replace 单价 with 单价*1.1 for 出版社=\清华大学出版社\某一版本的书不再出版,我们想删除怎么办呢? 3、删除记录
删除分为:逻辑删除和物理删除
逻辑删除是对数据表中指定范围内满足条件的记录加注标记,删除后,记录仍能被修改、复制、显示等。可以撤销标记恢复数据表中指定范围内满足条件的删除记录。
物理删除是将数据表中所有具有删除标记的记录正式从表文件中彻底删除,不能恢复。 (1)用菜单方式删除
删除表中的记录共有两个步骤。首先是单击每个要删除记录左边的小方框,标记要删除的记录。如图3-24所示:
22 Page 模块三 数据库设计
删除标记 图3-24 删除记录
标记记录并不等于删除记录。要想真正地删除记录,还应从“表”菜单中选择“彻底删除”。
当出现提示,问您是否想从表中移去已删除的记录,选择“是”。 这个过程将删除所有标记过的记录,并重新构造表中余下的记录。删除做过删除标记的记录时会将表关掉,因此若要继续工作,必须重新打开该表。
除了通过鼠标单击做删除标记外,还可以通过在“删除”对话框中设臵条件,有选择地删除一组记录。 步骤:
第1步:从“表”菜单中选择“删除记录”,出现如图3-25所示的“删除”对话框:
图3-25 删除满足条件的记录
在其中输入删除条件。这和上节的查看信息对话框类似。
第2步:在输入完删除条件后,按“删除”按钮,就为符合条件的记录打上了删除标记。 第3步:从“表”中选择“彻底删除”。 (2)使用命令方式删除 ①逻辑删除
DELETE [<范围>] [FOR <条件>]
delete for 出版社=\清华大学出版社\结果如图3-26所示:
Page 23
Visual FoxPro 程序设计
图3-26 逻辑删除的结果
②物理删除 命令 PACK
注:PACK命令为物理删除命令,一旦执行,无法用恢复。 ③删除所有记录 zap ④恢复删除记录命令
RECALL [<范围>] [FOR <条件>] recall for出版社=\清华大学出版社\
注:DELETE命令的逆操作,取消标记,恢复为正常记录。
我们只想看清华大学出版社的图书,怎么办?我们可以在表中设臵一个过滤器来定制自己的表,有选择地显示某些记录。还可以通过设臵字段过滤器,对表中的某些字段的访问进行限制,这样可以有选择地显示需要的字段。我们可以定制表。
子任务七 定制表
可以在表中设臵一个数据过滤器来有选择地显示某些记录。 ——这就是关系的选择运算
还可以在表中设臵字段过滤器,有选择地显示需要的字段。 ——这就是关系的投影运算 1、限制记录的访问方法是
编辑?浏览 (菜单)表?属性:“工作区属性”窗口,选择“数据过滤器”对话框输入记录的筛选条件;或按对话框后面的按钮,进入“表达式生成器”窗口,在这一窗口输入记录的筛选条件,再确认限制访问的记录即可结束操作。 2、命令SET FILTER TO [(逻辑表达式)]
边学边练 只显示“清华大学出版社”的图书
set filter to出版社=\清华大学出版社\
子任务八 表记录的定位
24 Page 模块三 数据库设计
相关知识 1、使用命令定位的预备知识: 记录的三个控制标志
BOF ( ) 测试记录指针是否在表文件开头 RECNO ( ) 测试记录指针正指向的记录号 EOF ( ) 测试记录指针是否在表文件末尾 2、刚打开表时记录指针的情况如表3-4所示。
表3-4 刚打开表时记录指针的情况
表中记录情况 无记录 有记录 BOF()的值 .T. .F. RECNO()的值 1 1 EOF()的值 .T. .F. 注意:初始值总是1,不可能为0或负数,最大值是表中记录的总数+1。 3、定位方法: 绝对定位:go 相对定位:skip
Go top 第一个记录 go bottom 最后一个记录
Skip n N为正,向下移动;无,向下移动一个
边学边练 假设t_book表有848条记录,先后执行以下命令 RECN()
Use books 1 go 5 5 skip 2 7 skip -3 4
假设books表有848条记录,先后执行以下命令
bof() eof() recno() use books .f. .f. 1 skip -1 .t. .f. 1 skip -1 Error
go bott .f. .f. 848 skip .f. .t. 849 skip Error
Page 25