《《VisualFoxpro程序设计》第3章表的基本操作.ppt》由会员分享,可在线阅读,更多相关《《VisualFoxpro程序设计》第3章表的基本操作.ppt(52页珍藏版)》请在三一办公上搜索。
1、第 3 章 表的基本操作,3.1表的建立和修改3.2表的维护命令3.3表数据的替换3.4表的设置,3.1表的建立和修改,表的建立和修改各分两部分进行,即分别是表结构与表数据。新建一张表不仅要有表的结构,且表中也要有具体数据。表的修改也是一样,不仅可对表的结构进行修改,也可对表中的数据进行修改。建立表1设计表的结构人们在工作、学习和生活中经常遇到二维的表格,表3-1所示的学生信息表就是一个二维表。,表3-1学生信息表,表由结构和数据两部分组成。建立表结构就是定义各个字段的属性,基本的字段属性由四部分组成,称为字段四要素。包括字段名、字段类型、字段宽度和小数位数。(1)字段名字段名用来标识字段,它
2、是一个以字母或汉字开头,长度不超过10的字母、汉字、数字和下划线序列。表名的命令规则随操作系统而定。(2)字段类型与宽度字段类型、宽度及小数和位数属性都用来描述字段值,表3-2列出了字段的数据类型与宽度。,(3)小数位数,表3-3学生成绩表,表3-4学生成绩表的结构,2建立与修改表结构的命令VFP中建立任何文件都可以通过3种方式:菜单方式、命令方式和项目设计器建立。,(1)表结构的建立命令格式:CREATE TABLE(,),)功能:建立一个由表示的表,表中含有指定的字段。例3-1建立学生成绩表stu_gra.dbf。CREATE TABLE stu_gra(学号C(8),姓名C(6),VFP
3、 N(5,1),高等数学N(5,1),英语N(5,1)LIST STRUCTURE&主屏幕显示stu_gra.dbf的结构 LIST&主屏幕显示所有记录,图3.1学生成绩表stu_gra.dbf,图3.2“新建”窗口,图3.3“项目管理器”窗口,图3.4“字段”选项卡,(2)表结构的修改命令格式:ALTER TABLE ADD|ALTER COLUMN,ALTER TABLE DROP COLUMN|RENAME COLUMNTO功能:修改 表示的表的结构。,3表数据的输入建立表结构后若要立即输入数据,就会出现记录编辑窗口,如图3.5所示。此时窗口中各字段的排列次序及字段名右侧的文本区宽度都与
4、表结构定义相符。,图3.5记录编辑,(1)数据输入要点(2)编辑窗口的打开和关闭4表的打开和关闭(1)打开表打开表有多种方法,可以用命令打开,也可由菜单和项目管理器打开。命令格式:USEEXCLUSIVE|SHARE功能:在当前工作区中打开或关闭表。表打开时,若该表有备注型或通用型字段,则自动打开同名的.FPT文件。,图3.6以菜单方式打开表,(2)关闭表可用以下命令来关闭表。,图3.7以项目管理器方式打开表,修改表数据表的修改和建立表大致相同,分为表结构的修改和表记录的修改。1表结构的修改命令方式:命令格式:MODIFY STRUCTURE功能:修改当前表的结构。2表数据的修改(1)命令格式
5、:EDIT(2)命令格式:BROWSE,图3.8BROWSE浏览式修改窗口,3.2表的维护命令,记录指针的移动VFP采用一个记录指针指向一条记录的方式。记录定位就是将记录指针指向某一条记录,指针所指向的这一条记录称为当前记录,用RECNO()函数可以取出当前表中当前记录的记录号。当表打开时,记录指针总是指向第一个记录。只有利用记录指针的移动才能对记录中的数据进行读取。,1记录绝对移动命令命令格式1:GO TO TOP|BOTTOM命令格式2:GOTO 2记录相对移动命令命令格式:SKIP 功能:从当前记录开始移动记录指针,表示移位记录的个数。,添加记录向表中添加记录有两种方式,它们分别是插入记
6、录和追加记录。插入记录就是在当前记录的前后插入一条新记录。追加记录就是在表的最后记录的后面追加一条新记录。1记录的插入命令格式:INSERT BLANKBEFORE,该命令有以下4种变化形式。INSERT功能:在当前记录的后面插入一条新的记录,并立即进入记录编辑窗口,等待用户输入记录数据。INSERT BEFORE功能:在当前记录的前面插入一条新的记录,并立即进入记录编辑窗口,等待用户输入记录数据。INSERT BLANK功能:在当前记录的后面插入一条空白记录,不进入记录编辑窗口。INSERT BEFORE BLANK 功能:在当前记录的前面插入一条空白记录,不进入记录编辑窗口。,2记录的追加
7、INSERT命令可以在表的任意位置插入新记录,但若要在表尾追加新记录则需先将记录指针移到末记录,下面的命令都可直接在表尾追加记录。(1)INSERT-SQL命令命令格式一:INSERT INTO 表名(字段名1,字段名2,)VALUES(表达式1,表达式,)功能:在表尾追加一个新记录,并直接输入记录数据。,(2)APPEND命令APPEND命令也可在表尾追加记录,但它只可追加空白记录或以交互方式填写记录数据。命令格式一:APPEND BLANK(3)APPEND FROM命令该命令用于追加成批记录。命令格式:APPEND FROMFIELDSFOR;TYPEDELIMITEDWITH|WITH
8、 TAB|SDF|XLS 功能:在当前表末尾追加一批记录,这些记录来自于另一文件。,例3-2设stu_gra.dbf是只有结构而无记录的表,现需将表stu_info.dbf中所有记录的学号和姓名字段的值追加到表stu_gra.dbf中。*stu_info.dbf中5个记录的2个字段值追加到stu_gra.dbf的末尾。APPEND FROM stu_info FIELDS 学号,姓名,例3-2设stu_gra.dbf是只有结构而无记录的表,现需将的文本文件stu_info.txt的记录添入stu_gra.dbf的末尾,如图3.9所示。USE stu_graAPPEND FROM STU_INF
9、O SDF&stu_info.txt是系统数据格式的文本文件,图3.9标准纯文本文件,记录的删除和恢复删除记录有两种形式。第一种是逻辑删除,分为两步:在要删除的记录上先加注删除标记,确定要删除时再用PACK命令将带有删除标记的记录在表中进行物理删除操作。如果带有删除标记的记录中有些记录还有用,还可以将这些有用记录的删除标记去除。无论界面操作还是命令方式都是一样的。,1逻辑删除记录命令命令格式:DELETEFORWHILE功能:对当前表在指定内满足的记录加上逻辑删除标记。若缺省,则默认为当前记录。,2物理删除记录命令命令格式:PACK功能:将带有逻辑删除标记的记录物理上进行删除操作。删除后不可恢
10、复。如需物理删除,可连用DELETE和PACK命令:USE stu_graDELETE ALL FOR 英语 60&为所有英语成绩不及格的记录加上逻辑删除标记PACK&物理上删除带有逻辑删除标记的记录LIST,3恢复记录命令记录的恢复是指去掉记录前的逻辑删除标记,但已被物理删除的记录是不可恢复的。命令格式:RECALLFORWHILE功能:对当前表在指定内满足的记录去掉逻辑删除标记。若缺省,只恢复当前记录。,4记录清除命令命令格式:ZAP功能:删除当前表中的所有记录。执行ZAP命令相当于执行DELETE ALL和PACK两条命令。,表的复制对已有的表进行复制可以得到它的一个副本,是保护数据安全
11、的措施之一。1复制任何文件命令格式:COPY FILE TO 文件功能:从文件复制得到文件。,2从表复制出表或其他类型的文件命令格式:COPY TO FORWHILE FIELDS|FIELDS LIKE|FIELDS EXCEPT TYPESDF|XLS|DELIMITEDWITH|WITH BLANK|WITH TAB功能:将当前表中选定的部分记录和部分字段复制成一个新表或其他类型的文件。,例3-3复制表示例。USE stu_gra*对stu_gra.dbf原样复制,同时生成stu_gra1.dbf与stu_gra1.fptCOPY TO stu_gra1*从stu_gra.dbf中抽出两
12、个字段,生成stu_gra2.dbfCOPY TO stu_gra2 FIELDS学号,姓名例3-4以系统数据格式将stu_gra.dbf的前2个记录复制到文本文件。USE stu_graCOPY TO stu_gra1 NEXT 3 SDF&以系统数据格式复制,产生文本文件stu_gra1.txtTYPE stu_gra1.txt&用TYPE 命令显示文本文件stu_gra1.txt的内容,从例3-4中可知,系统数据格式文件中的记录都是定长的且以回车符结尾;数据之间无分隔符,数据也无定界符;记录中每个字段的宽度固定,字段数据不足宽度时,数值型字段置前导空格,字符型字段则后补空格;日期型字段改
13、变为yyyymmdd的形式,逻辑型字段两侧的圆点被去除,备注型和通用型字段被舍弃。若例中COPY命令的SDF改为XLS,将产生文件stu_gra1.xls。该文件在Excel中打开后与VFP表显示形式一致。若例中COPY命令的SDF改为DELIMITED,将产生文件stu_gra2.txt,用TYPE命令显示如图3.10所示。,图3.10非标准纯文本文件,3复制表的结构命令格式:COPY STRUCTURE TO FIELDS 功能:仅复制当前表的结构,不复制其中的数据。若使用FIELDS选项,则新表的结构中只包含其指明的字段,同时也决定了这些字段在新表中的排列次序。例如:USE stu_gr
14、aCOPY STRUCTURE TO stu_gra2 FIELDS 学号,姓名,VFP,高等数学,英语,4其他文件操作命令VFP除能复制各类文件外,还提供文件改名、删除和显示等功能,有关命令如表3-6所示。,表3-6文件改名、删除和显示命令,3.3表数据的替换,成批修改数据在浏览窗口中修改数据必须由用户键入修改值,而REPLACE命令能直接将字段值用指定表达式的值来替换。因此在程序设计中常使用该命令。命令格式:REPLACEWITHADDITIVE,WITHADDITIVEFORWHILE功能:在当前表的指定记录中,将有关字段值用相应的表达式来替换。若与等选项都缺省,只对当前记录的有关字段进
15、行替换。,记录与数组间的数据传送在VFP中,数组元素值或内存变量值能传送到表内以替代记录中的数据,反之也能将记录中的数据送入数组或内存变量中。1记录传送到数组或内存变量命令格式:SCATTERFIELDS|FIELDS LIKE|FIELDS EXCEPT MEMOTOBLANK|MEMVARBLANK。功能:将当前记录的字段值按顺序依次送入数组元素中,或依次送入一组内存变量。,2数组或内存变量的数据传送到记录命令格式:GATHER FROM|MEMVARFIELDS|FIELDS LIKE|FIELDS EXCEPTMEMO功能:将数组或内存变量的数据依次传送到当前记录,以替换相应字段值。,
16、3成批记录与数组间的数据传送SCATTER与GATHER命令只能在表的单个记录与数组间进行数据传送。下面介绍表的成批记录与数组传送数据的两条命令。(1)将表的一批记录复制到数组命令格式:COPY TO ARRAY FIELDSFORWHILE功能:将当前表选定的数据复制到表示的数组之中,但不复制备注型字段。,例如:USE stu_gra DIMENSION jz(2,3)*显示:20030101,何兰,90,85,82,20030102,铁玲,86,76,74,(2)数组向数据表追加记录命令格式:APPEND FROM ARRAYFOR FIELDS功能:将满足条件的数组行数据按记录依次追加到
17、当前表中,但忽略备注型字段。接上例:USE clAPPEND FROM ARRAY jz&从数组jz追加记录到c1.dbfLIST*jz仅2行,故c1追加2个记录;jz仅3列,而c1有4个字段,故第4个字段留空,3.4表的设置,在表中选择数据是常见的操作,BROWSE、LIST等命令都可包含FOR和FIELDS子句,用来选择记录和字段。但是,使用命令子句来实现数据选择仅在执行该命令时生效一次。使用过滤器和字段表等逻辑表的好处是,一旦将表设置逻辑表后,则对该表执行任何操作时一直有效,直至撤消逻辑表为止。,记录过滤有时VFP中的若干命令都要求满足某种条件,若每一条命令都输入相同的条件,显然浪费了人
18、力和时间。这时可以使用过滤器将不满足条件的记录“隐蔽”起来,即让这些记录在逻辑上消失,当操作完以后,再去掉过滤器来恢复这些记录。命令格式:SET FILTER TO 功能:从当前表过滤出符合的记录,不符合的记录将被“遮蔽”,随后的操作仅限于满足过滤条件的记录。,例3-5为stu_gra.dbf设置过滤器,使其后的操作只对VFP成绩及格的记录起作用。USE stu_graSET FILTER TO VFP=60LIST&只显示VFP=60的记录SET FILTER TO&取消过滤器LIST&显示全部记录,字段过滤字段表用于限定命令操作能作用的字段。命令格式:SET FIELDS TO,|ALLLIKE|EXCEPT SET FIELDS ON|OFF,例3-6对stu_gra.dbf命令设置字段表,使用有效字段作为编号、名称和部门。USE stu_graSET FIELDS TO 学号,姓名&设备字段过滤LIST&显示2个字段的数据SET FIELDS OFF&取消字段表的作用LIST&显示所有字段的数据,