版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
表的基本操作
3.1表文件结构3.2表记录编辑的常用命令3.3索引、查询和排序3.4数据统计3.1表文件结构 3.1.1定义表结构 一般情况下,人们在用手工绘制一张如表3.1所示的学生成绩表时都要了解这张学生成绩表有几栏?每栏的最大宽度是多少?这张表共有几行? 在确定了以上数据和绘制表格所用纸张的规格后,依据每栏的字符数与表格的行数就可以利用尺或其他工具画出这张表格。表3.1学生成绩表 计算机存储和处理这张表格时,实际上也采用了类似的描述方法。在VFP中,表的每一栏称为一个字段(Field),栏标题作为对应的字段名;表中的每一行称为一条记录(Record)。一个字段名对不同的记录而言可有不同的值,也可以说字段实际上是一个变量。因此,字段名又叫作字段变量名。由此,为了准确描述表,VFP对每一栏就应当有字段名、字段类型、字段宽度、小数位数等描述。 1.字段名 字段名与二维表中的栏名相对应,字段名的长度不超过10个字符,可以由字母、数字、下划线或汉字等组成,而且必须以字母开头。字段名中不能包含空格,在同一个表文件中,任意两个字段不允许重名。 2.字段类型 VFP字段变量可以是字符型(C)、数值型(N)、逻辑型(L)、日期型(D)、备注型(M)、通用型(G)、整型(N)、双精度型(N)、浮点型(N)、日期时间型(T)、货币型(Y)、二进制字符型(C)、二进制备注型(M)等数据类型中的一种。 3.字段宽度 字段宽度的意义类似于手绘表的栏宽,由每一栏的最大字符数决定。手工绘表时可通过换行来减少字符数太多的某栏的长度,但在计算机存储的表中,系统则对不同数据类型的字段宽度作了限定,如字符型字段的宽度为1~245,数值型字段的宽度为1~20。其中有的字段类型的宽度是固定的(见表3.2)。表3.2字段宽度表 4.小数位数 定义数值型和浮点型等字段时不仅需要指出字段的宽度,而且还要指明小数位数。以表3.1为例,其表结构描述为: 以上描述了表的每一栏,即定义了表结构。其中,字段名采用拼音以方便使用。注意,字段含义仅作注解之用,不是定义表结构所必需的。 3.1.2建立表文件 为了方便人机交流,VFP提供了一系列交互操作命令、菜单操作与项目操作。本节介绍利用上述操作建立表文件的过程。从知识的理解与掌握以及方便后续编程的目标出发,希望读者以命令的理解作为学习的重点。 文件是一组信息的有序结合,而表文件是二维表在计算机中的映射,二维表数据依据表结构存储于表文件中。表文件是VFP工作的基础。
1.命令方式建立表文件 命令格式:CREATE [驱动器][路径]<表文件名> 设对应于表3.1的文件名为xscj.dbf,且保存于c:\vfplx文件夹(c:\vfplx为本书练习文件夹,若无特别说明,本书中省略了[驱动器][路径]的所有文件,皆表示此文件夹中的文件)。在命令窗口中输入(见图3-1): CREAc:\vfplx\xscj 表文件的默认扩展名为 .dbf,若未输入其他扩展名,该扩展名会自动加入。依据系统约定,命令输入时取命令词前四个字母即可。 输入CREATE命令后,“表设计器”窗口打开,见图3-1所示。根据表3.1中的表结构描述,在“表设计器”窗口中输入每一行,完成图3-1所示的内容。图3-1“表设计器”窗口 输入完毕后,用鼠标单击“确定”按钮,打开图3-2所示信息框。在信息框中单击“是”按钮,即可在图3-3所示的记录录入框中输入记录数据。如果单击信息框中的“否”按钮,将结束表文件的建立而不输入记录数据,以后可用本书后面章节中介绍的记录追加APPEEND等命令输入记录数据。 读者可自行按表3.1所示,在图3-3所示的画面中输入记录数据,完成记录录入与表文件建立工作。图3-2信息框图3-3记录录入框 2.其他方式建立表文件 除了命令方式外,还可以用其他方法建立表文件,本小节介绍其中的几种。 1)利用菜单建立表文件 利用菜单建立表文件时,先单击“文件”菜单中的“新建”菜单项,并在随之出现的文件类型选择对话框(见图3-4)中选取“表”,然后单击“新建文件”按钮;在随之出现的“创建”对话框(见图3-5)中选取存盘位置并输入表名后,图3-1所示的界面出现;在此界面中重复前述命令方式下建立新表的步骤即可完成新表文件的建立。图3-4文件类型选择图3-5“创建”对话框
类似于以上的操作过程,本书以后将统一表示为:“文件”/“新建”/选取“表”/单击“新建文件”/输入表名。 2)利用向导建立表文件 采用向导创建新表的操作过程为:“文件”/“新建”/选取“表”/单击“向导”/选取“样表”与“可用字段”/……,并按对话框中的提示继续操作就可以完成新表的建立。 3)在项目管理器中建立新表 项目管理器将在后续的学习中详细介绍。若读者有兴趣,可先尝试用下面介绍的方法在项目管理器中建立新表。首先创建项目文件,其操作方法是:“文件”/“新建”/选取“项目”/单击“新建文件”/输入项目文件名。操作完成后,“项目管理器”窗口就会出现(见图3-6)。图3-6“项目管理器”窗口
“项目管理器”对话框打开后,执行如下操作:选取“数据”/选取“自由表”/单击“新建表”,打开图3-5所示的“创建”对话框。 在“创建”对话框(见图3-5)中选取存盘位置并输入表名后,就可以打开表设计器(见图3-1所示);在表设计器中重复前述命令方式下建立新表的步骤即可完成新表文件的建立。 4)从现存表文件中复制表结构 如果已经有了一个表文件,我们就可以用复制结构的方法迅速建立一个新的表文件。从现存表文件中复制表结构时需要先打开要复制的表文件。打开要复制的表文件后,执行以下命令即可: COPYSTRUCTURETO<新文件名>
例3-1从已有文件c:\vfplx\xscj.dbf复制一个文件表结构并保存为c:\vfplx\xscj2.dbf usec:\vfplx\xscj &&打开要复制的表文件 copystrutoc:\vfplx\xscj2 &&表结构复制 use &&养成良好习惯,及时关闭表文件
为了方便本书的后续学习并练习、巩固建立新表的各种方法,读者可按以下要求以练习建立三个新表: §
建立学生表(c:\vfplx\xs.dbf):表结构描述见表3.3。注意,表文件中有备注字段时,除了表文件外,还会自动建立一个扩展名为(.FPT)的备注文件。这个备注文件用于存放备注字段的内容。 §
建立课程代码表(c:\vfplx\kcdm.dbf):表结构描述见表3.4。 §
建立考试类别代码表(c:\vfplx\kslb.dbf):表结构描述见表3.5。表3.3学生表表3.4课程代码表表3.5考试类别代码表 3.1.3显示表结构 建立表文件后,为了检查其正确性或查看表结构内容,常需要显示表结构。显示表结构命令的格式如下(详细命令格式可查阅帮助说明): DISPLAYSTRUCTURE或LISTSTRUCTURE 例3-2显示学生成绩表xscj的结构。 usec:\vfplx\xscj liststru use
显示结果见图3-7所示。从图中可见,DISPLAYSTRUCTURE命令除了显示表结构一般描述外,还列出了表文件的存储位置、记录数、最近更新时间、所有字段总宽数、表的代码页、索引和排序等信息。图3-7成绩表结构
3.1.4表结构文件修改 表结构确定之后,如果通过显示表结构的内容发现有错误或表结构的设计想法发生了变化,都需要对表结构文件进行修改。修改表结构文件的命令如下: MODIFYSTRUCTURE 使用修改表结构命令时,必须首先打开要修改的表。MODIFYSTRUCTURE命令将会打开表设计器(见图3-1)对表结构进行修改。 修改表结构时,将创建一个扩展名为.BAK表备份文件,若有备注字段,系统将创建一个扩展名为.TBK备注备份文件。如果修改操作导致表中数据丢失,可删除修改后的文件,然后备份文件的扩展分别改为.DBF和.FBT以恢复原有的结构和数据。3.2表记录编辑的常用命令
3.2.1命令方式编辑表记录 事实上,我们在介绍有关表文件结构的一些命令时,已经学习了一些命令约定(命令格式)。VFP命令格式的一般形式为: 命令动词[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>] [TOPRINTER[PROMPT]/TOFILE<文件名>][NOOPTIMIZE][OFF] 其中,命令动词常为英文动词,“[]”内为可选项,“<>”内为必选项。注意,在输入语句时,不要输入选项外的方括号和尖括号。 从VFP命令格式的一般形式中可以看出,VFP命令通常由命令动词、“范围”子句、“条件”子句和其他的一些选项构成。 “范围”子句用于确定要操作记录的范围,即指定在表中要操作哪一行。在“范围”子句中共有四种选择: ·RECORDn 指定第n条记录; ·NEXTn 指定当前记录开始的共n条连续记录; ·REST 指定当前记录开始到表文件尾的所有记录; ·ALL 指定所有记录(可省略)。 FIELDS子句实际上也是一种范围子句,用于确定记录中要操作的字段,也就是表中的列。要操作字段的字段名在字段名列表中逐个列出,字段名间用逗号分隔。注意,使用英文的逗号“,”,不要用中文的逗号“,”。如果省略“FIELDS<字段名表>”子句,则表示对所有字段进行操作。 “条件”子句根据条件确定要操作的记录。该子句有两种形式,“FOR<条件>”和“WHILE<条件>”。“FOR〈条件〉”子句表示对给定的范围内满足条件的所有记录进行操作,“WHILE〈条件〉”子句表示从当前记录开始操作,只要碰到不满足条件的记录就停止操作。如果同时存在FOR和WHILE子句,则WHILE子句优先。 “条件”子句中的“条件”是一个逻辑型的表达式。 1.打开表文件 命令格式:USE<文件名> USE命令打开指定的表文件并将记录指针指向第一条记录,表中若有备注字段,相关的备注文件自动打开(.FPT)。 2.关闭表文件 命令格式:USE或CLOSETABELS
3.记录指针定位 在表文件中,计算机采用记录指针来确定要操作的记录的位置。记录指针指向的记录称为当前记录。若记录指针指向第5条记录,则当前记录号为5。移动记录指针的方法有绝对移动和相对移动两种,使用不同的命令来实现。 1)绝对移动 命令格式1:GO/GOTO[RECORD]<记录号> 命令格式2:GO/GOTOTOP/BOTTOM 命令中的“记录号”应小于表中的总记录数,如果记录号大于表中的总记录数,系统将提示“记录超出范围”;命令中的TOP表示表中第一条记录,BOTTOM表示表中最后一条记录。 2)相对移动 命令格式:SKIP<±n> SKIP命令相对于当前记录的位置把记录指针移动指定的记录个数。若n为正,则相对于当前记录把记录指针向文件尾移动n条记录;若n超过记录总数,则记录指针移到文件尾,同时,系统的当前记录号为记录总数加1;若n为负,则相对于当前记录把记录指针向文件头移动n条记录。若每次向文件尾移动一条记录,则可省略<±记录数n>。
例3-3设xscj.dbf共有9条记录,记录指针移动命令的示例如下: usexscj &&打开学生成绩表文件,记录指针指向第一条记录 ?recno() &&显示打开文件时的记录号 skip3 &&记录指针指向第4条记录,相对第一条记录移动3条 skip &&记录指针指向第5条记录,相对第4条记录移动1条 ?recno() &&显示记录号,结果为5 skip7 &&超过记录总数 ?recno() &&显示记录号,结果为10 skip–2 &&记录指针指向第8条记录 ?recno() &&显示记录号 skip–10 &&记录指针指向第1条记录 ?recno() &&显示记录号 gotop &&记录指针指向第1条记录,TOP记录头(第1条) go5 &&记录指针指向第5条记录 gobottom &&记录指针指向第9条记录 use &&关闭表文件 注意,在VFP程序中“*”和“&&”后的内容是对程序的注解。一般“*”用于以整行注解,“&&”用以语句后注解。 4.显示、浏览表文件 命令格式:LIST[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>] 命令格式:DISPLAY[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>] LIST与DISPLAY命令的作用除“[<范围>]”子句省略时相同外,其余均相同。当省略“[<范围>]”时,LIST命令显示所有记录;DISP命令则显示当前记录。 例3-4理解以下命令语句中“<范围>”子句的用法(“***”后为要求完成内容)。 usexscj &&打开表文件 ***显示第6条记录 LISTRECO6 ***显示第2条至第7条记录 GO2 &&先移记录指针至第2条记录 LISTNEXT6 &&第2条至第7条记录共为7-2+1=6条记录 ***显示第5条至文件尾的所有记录 GO5 &&先移记录指针至第5条记录 LISTREST &&按要求显示 ***显示所有记录 LISTALL USE &&关闭文件 例3-5理解以下命令语句中“FIELDS<字段名表>”子句的用法(“***”后为要求完成内容)。
usexscj &&打开表文件 ***显示xh,xm,cj字段的内容(即学号,姓名。成绩三列) LISTFIELDSXH,XM,CJ ***显示第2条至第7条记录的xm,cj字段(即:指定的行、列) GO2 &&先移记录指针至第2条记录 LISTNEXT6FIELDSXM,CJ &&第2条至第7条记录共为7-2+1=6条记录 ***显示第5条至文件尾的所有记录(省略“FIELDS<字段名表>”子句, GO5 &&先移记录指针至第5条记录LISTREST &&显示其余记录(第5条至文件尾的所有记录) 例3-6理解以下命令语句中“[FOR<条件>][WHILE<条件>]”子句的用法(“***”后为要求完成的操作及有关的注解)。 usexscj &&打开表文件 ***显示“大学英语”的学生姓名和成绩 LISTFIELDSXM,CJFORKCM="大学英语" ***显示“李小伟”个人内容 LISTFORXM="李小伟" ***显示第5条至文件尾课程为“计算机基础”、所有记录的姓名与成绩 GO5 &&先移记录指针至第5条记录 LISTRESTFIELDSXM,CJFORKCM="计算机基础" ***显示第4条至文件尾姓名为“王勇”的连续记录 GO4 LISTWHILEXM="王勇" &&显示二条连续记录 ***如用“FORXM="王勇"”则显示三条不连续记录,不符合题意 5.追加与修改记录 在建立了表结构,并打开该表文件的前提下,可以用APPEND命令追加与修改记录。 命令格式:APPEND[BLANK] 例3-7据表3.3建立学生表结构前提下,打开学生情况表xs.dbf,按下表输入数据。 usexs append &&输入及修改数据(见图3-8) list &&显示结果 use ***APPENDBLANK为添加一条空记录 ***数据输入后,可显示检查。 ***鼠标双击备注字段(如:jl),可输入文本 ***鼠标双击通用字段(如:zp),可编辑该字段图3-8记录录入 6.插入记录 使用APPEND命令添加的记录都位于表的尾部。如果要在现有记录的中间插入新的记录,应使用插入命令INSERT。命令格式:INSERT[BEFORE][BLANK] 当我们需要插入记录使其成为第三条记录时,如果当前记录为正是第三条记录,可在当前记录前插入新记录(称为前插记录),这时使用的命令为INSERTBEFORE。 如果当前记录为第二条记录,可在当前记录后插入新记录(称为后插记录),这时使用的命令为INSERT 命令INSERTBLANK则在记录指针的当前位置插入一条空记录。 例3-8在学生情况表xs.dbf中,按下表规定插入一条记录并使其为第三条记录。 方法一: usexs &&先打开表 go3 &&使指针指向第三条记录 insebefo &&第三条记录前插入记录,新记录成为第三条,原记录后移 ***完成输入 list &&显示结果 use 方法二: usexs &&编辑表,必须先打开表 go2 &&使指针指向第二条记录 inse &&第二条记录后插入记录,新记录成为第三条,原记录后移 ***完成输入 list &&显示结果 use
7.删除记录 一个表建立后,除了添加数据和插入数据操作外,也会进行删除某些记录的操作。在VFP中,记录的删除有逻辑删除和物理删除两种方式。 逻辑删除操作仅对记录作删除标记,记录仍保存于表中并可通过去除删除标记来恢复。 物理删除操作则删除是作过删除标记的所有记录,将记录从表中彻底去除。物理删除后的记录不可再恢复。 1)逻辑删除 命令格式:DELETE[<范围>][FOR<条件>] 若命令中省略<范围>,且不包含<条件>子句,则表示只对当前记录作删除标记。 例3-9对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj ***逻辑删除第五条记录 go5 dele &&删除当前记录 ***以上二条语句可合并为:delereco5 ***逻辑删除第三条记录至文件尾的所有“大学英语”的课程记录 go3 delerestforkcm="大学英语" list &&显示结果(见图3-9),图中,左边的黑色块为删除标记 use图3-9逻辑删除结果 如果不想显示已被逻辑删除记录,可以用SETDELEON命令对显示结果进行控制。 2)恢复逻辑删除标记 恢复逻辑删除标记命令用于恢复当前表文件中有删除标记的记录。 命令格式:RECALL[<范围>][FOR<条件>] RECALL命令的功能是对用DELETE命令的删除过的记录进行恢复,它不能恢复用PACK和ZAP命令删除掉的记录。RECALL命令中的选项的意义与DELETE命令中选项的意义相同。
例3-10对学生成绩表完成下列操作内容(“***”后为要求完成操作的内容)。 usexscj ***恢复逻辑删除的记录 recaall list&&显示结果为图3-9左边黑色块消失(删除标记消失) use 3)物理删除 PACK是物理删除命令,可以把有删除标记的记录从表中清除掉并且重新组织原表中剩余的记录。 命令格式:PACK 例3-11对学生成绩表完成下列操作内容(“***”后为要求完成操作的内容)。 usexscj go3 delerestforkcm="大学英语" list &&显示结果如图3-9(左边黑色块为删除标记) pack list &&显示结果为图3-9黑色块的记录消失 use ***采用所学的追加记录或插入记录命令恢复原先所有记录 4)物理删除当前表中的所有记录 命令格式:ZAP 5)DELETE、PACK和RECALL命令的使用 为安全起见,要删除一个表文件的某些记录时可先用DELETE命令对其作删除标记,若发现删除了不该删除的记录,可用RECALL命令将其恢复;在确认所有用DELETE命令删除的记录无误后,再用PACK命令将其余有删除标记记录除掉。
8.修改记录 表建立后,除对记录作追加、插入、删除等操作外,还可以对记录的内容进行修改。可以用于修改记录内容的命令有APPEND、EDIT、BROWSE和REPLACE等。 1)APPEND命令 打开文件并在命令窗口输入APPEND后,可将光标移动到需修改处直接进行修改。修改后按Ctrl+W键保存修改结果。(读者可自行试用该命令)。 2)EDIT命令 命令格式:EDIT[<范围>][FOR<条件>] 打开文件并在命令窗口输入EDIT后,可将光标移动到需修改处直接进行修改。修改后按Ctrl+W键保存修改结果。EDIT与APPEND不同,它仅能改变记录中内容,不能追加新的记录。 3)BROWSE命令 BROWSE命令是VFP中最有效的命令之一。通过BROWSE命令可打开浏览窗口显示表,并对记录进行修改与追加。 命令格式:BROWSE[FIELDS<字段名表>][FOR<条件>][[NOAPPEND][NODELETE][NOEDIT] 例3-12完成下列操作内容(“***”后为要求完成操作的内容)。 usekcdm &&打开课程代码表 brow &&出现图3-10所示的浏览窗口
***按下Ctrl+Y键,按图3-10所示的数据逐个追加新记录。 brownoappend ***noappend选项禁止追加记录 brownoedit &&noedit禁止修改原有记录, &&但可以追加记录 brownodelete ***nodelete选项禁止删除记录,即用使鼠标单击图3-10中 ***kcdm栏左边的白色小方块,也不会形成类似图3-9所示 ***黑色删除标记。 ***无nodelete选项时,可用鼠标单击白色小方块删除记录。 use
4)BROWSE命令中的[FIELDS<字段名表>]子句 利用<字段名表>可以改变浏览窗口中显示字段的顺序(见图3-11),如果不使用<字段名表>,BROWSE命令就按表结构中的字段顺序显示各字段。另外,在每个字段名后可以用一个或多个符号加以修饰以取得不同的显示效果。BROWSE命令<字段名表>项中的修饰字符比较多,下面只介绍[:R]和[:H]这两个修饰字符。 修饰字符的使用格式为: <字段名>[:R][:H=<字符串>] 如果在FIELDS选项中的字段名后用[:R]加以限制,则此字段只能读,不能修改。 如果字段名是英文,则可以用[:H=<字符串>]中的字符串代替英文字段名,从而显示中文提示信息(见图3-12)。图3-11改变字段显示位置图3-12字段名中文显示 例3-13对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj &&打开学生成绩表 ***交换图3-9中的姓名与课程名的显示位置 browfielxh,kcm,xm,cj,kslb &&出现图3-11浏览窗口 ***使字段名以中文显示 browfielxh:h="学号",xm:h="姓名",kcm:h="课程名",cj:h="成绩" ***显示结果如图3-12所示 use 5)REPLACE命令 除了使用前面介绍的几个命令修改记录以外,我们还可利用REPLACE命令对记录内容进行直接修改。 命令格式:REPLACE[<范围>]<字段名1>WITH<表达式1>] [,<字段名2>WITH<表达式2>][…][FOR<条件>] REPLACE命令用WITH后面表达式的值替换当前记录某些字段内容。若选项<范围>省略,表示只替换当前记录。 REPLACE命令具有同时对多个字段进行替换的功能,它要求WITH后面表达式的数据类型必须与WITH前面的字段数据类型保持一致。 例3-14对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj &&打开学生成绩表 list &&显示结果如下 ***将课程名“法律基础”的考试类别改为“口试” replallkslbwith“口试"forkcm="法律基础" list &&显示结果如下 ***将课程名“大学英语”改为“英语”,同时,将考试类别改为“面试”并将每人成绩加2分 replallkcmwith“英语",kslbwith“面试",cjwithcj+2forkcm="大学英语" list&&显示结果如下use
9.记录的寻找定位 除了可以采用前面介绍过的GO与SKIP语句定位记录外,还可采用类似于文字处理的方式进行记录定位,即通过LOCATE命令寻找特定的内容,从而直接完成记录的定位。命令格式:LOCATE[<范围>]FOR<表达式1> 例3-15对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj &&打开学生成绩表 ***找姓名为“周天成",所学课程为“计算机基础”的记录 locaforxm="周天成"ANDkcm="计算机基础" disp &&省略范围时,disp显示当前记录 use
当完成特定记录的定位后,如果还需要查找下一个同条件记录,可利用CONTINUE命令继续查找。 命令格式:CONTINUE 例3-16对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj &&打开学生成绩表 ***找姓名为“李小伟”的记录 locaforxm="李小伟" disp &&省略范围时,disp显示当前一条记录 continue &&找姓名为“李小伟”的下一条记录 disp ***以上为单条记录查找与显示 10.表文件复制 整个表文件的复制可以通过操作系统的资源管理器完成,但如果要按照按一定的条件复制VFP表文件中的部分记录、部分字段,一般就需通过VFP的COPYTO命令来完成。 命令格式:COPYTO<文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>] 例3-17对学生成绩表完成下列操作(“***”后为要求完成操作的内容)。 usexscj &&打开学生成绩表 ***将姓名为“李小伟”的记录复制到另一表文件xw.dbf ***xw.dbf字段包括:姓名、课程名、成绩、考试类别 copytoxwfieldsxm,kcm,cj,kslbforxm="李小伟" usexw &&打开“李小伟”的成绩表,并关闭学生成绩表 list &&显示结果如下
use 11.从文件中追加记录 实际应用中,经常需要将不同表中的记录合并到同一个表,比如将不同用户输入的数据进行合并。这时可以使用APPENDFROM命令。 命令格式:APPENDFROM<文件名>[FOR<条件>][FIELDS<字段表名>] 这条命令把指定表文件中的记录追加到当前表文件的末尾。在复制记录时只复制两个文件中字段名和字段类型相同的那些字段。若有FOR<条件>子句,则只将满足条件的记录追加到目标文件中。如果省略FIELDS<字段名表>选项表示复制所有的字段,否则只复制在<字段名表>中指出的字段。 例3-18对学生成绩表完成下列操作(“***”后为要求完成操作的内容),并进一步理解各命令的作用。 usexscj &&打开学生成绩表 ***将姓名为“李小伟”的记录复制到另一表文件xw.dbf copytoxwforxm="李小伟" ***查看新表文件 usexw &&打开“李小伟”的成绩表,并关闭学生成绩表 l ist &&显示结果如下usexscj &&打开学生成绩表,并关闭“李小伟”的成绩表***逻辑删除姓名为“李小伟”的记录;防止练习追加记录时数据重复deleforxm="李小伟"list &&显示结果如下,记录号中的“*”为逻辑删除标记 Pack &&物理删除姓名为“李小伟”的记录 List&&显示结果如下,标有“*”的记录已经被删除 ***以上操作使学生成绩表中缺少了“李小伟”成绩 ***从xw.dbf表中追加“李小伟”的成绩(注意记录位置的变化) appefromxw list &&显示追加后结果如下 3.2.2菜单方式编辑表记录 1.打开表文件 在前一节中,我们学习了表的创建。创建表后,如果要对表作进一步的操作,首先要打开表文件。用菜单方式打开文件的方法为选择“文件”/“打开”,然后,在“打开”对话框(见图3-13)中选择需要打开的表文件。
除了菜单方式外,也可以可合理地运用“数据工作期”窗口来选择并打开表文件。具体方法为: (1)
用鼠标单击工具栏的“数据工作期”按钮,使图3-14所示的“数据工作期”窗口出现。 (2)
在“数据工作期”窗口中,用鼠标单击“打开”按钮,一个如图3-13所示的“打开”对话框就会出现。这个操作相当于执行了use<表文件>命令。 (3)
从“打开”对话框中选择需打开的表文件。 (4)
在图3-14的“别名”列表框中,选择相应的表文件,然后,单击“浏览”按钮即可查阅或修改表。 在进行菜单操作的同时,系统执行的相应命令会都会在“命令”窗口中出现,读者可留意“命令”窗口中出现的这些命令。图3-13打开表文件图3-14“数据工作期”窗口 2.关闭表文件 在图3-14所示的对话框中选择需关闭的表文件,然后用鼠标单击“关闭”按钮。 3.浏览及记录指针的定位 以菜单方式浏览表文件的方法为选择“显示”/“浏览”(必须先打开要浏览的表)。 利用“数据工作期”窗口(见图3-14)也可以浏览表文件,只要在“数据工作期”窗口中打开并选择要浏览的表文件,然后,单击“浏览”按钮即可进行浏览。若对成绩表进行以上操作,即可见到如图3-15所示的结果。在浏览状态下,菜单中将新增加一个菜单栏“表”(见图3-16)。 在浏览表文件时,可利用新增的“表”菜单完成GO,SKIP,LOCATE等操作。其中,“表”菜单栏中的“第一个”菜单项等同于GOTOP命令;“最后一个”菜单项等同于GOBOTTOM命令;“下一个”菜单项等同于SKIP命令;“上一个”菜单项等同于SKIP–1命令;“记录号”菜单项等同于GO<记录号>命令;“定位”菜单项等同于LOCATE命令。读者可自行尝试以上菜单操作,操作时请注意图3-15中最左边黑三角箭头的位置变化。图3-15浏览表文件图3-16记录定位 注意,如果选择了新增菜单的“转到记录”/“记录号”菜单项,就会出现图3-17所示的“转到记录”对话框,要求输入记录号;当选择“转到记录”/“定位”菜单项,就会出现图3-18所示的“定位记录”对话框,要求输入作用范围(即LOCATE命令的[范围]子句)及查询条件(即LOCATE命令的FOR<条件>子句)。图3-17转到指定记录号图3-18转到定位记录 在进行以上菜单操作的同时,同样请留意命令窗口出现的相应命令,以便加深对命令及菜单操作的相互关系的理解。 4.追加与修改记录 在表文件的浏览状态下,可以通过移动光标来定位要修改的表记录的内容,但是不能通过移动光标来增加新的记录。在VFP浏览状态下,增加新记录的操作必须通过菜单或键盘操作方式来完成。 菜单方式:选择“表”/“追加新记录”(相当于执行APPENDBLANK命令),每作一次操作可在表中增加一条空记录。增加空记录后,可进行记录内容的修改。
§
键盘操作:按下CTRL+Y键,每按一次CTRL+Y键可增加一条空记录。 如果忘记了增加一条空记录的键盘操作要按下哪些键,可用鼠标单击菜单栏“表”,在“追加新记录”菜单项的右边就可以看到该键盘操作命令。VFP中的其他键盘操作也可以采用这种方式进行查阅。 以上操作方式可以在表中增加新的空记录。除此之外,利用菜单方式还可以由另一个文件中追加记录,具体可按下面的方法操作: (1)
选择“表”/“追加记录”,打开图3-19所示的“追加来源”对话框。 (2)
用鼠标单击“类型”框后的向下箭头以选择文件的类型,然后用鼠标单击“类型”框后的按钮选择要追加的数据所在的表。 (3)
单击“确定”按钮。 用鼠标单击图3-19中的“选项”按钮后,可以进一步选择要追加的“字段”及指定追加的“条件”,读者可自行尝试使用。图3-19“追加来源”对话框 5.记录的其他操作 在打开表文件与浏览表文件时,还可以进行以下操作: (1)
单个记录的逻辑删除与恢复:选择“表”/“切换删除标记”,通过此操作可对当前记录的逻辑删除状态进行,记录左边有黑色方块者表示已逻辑删除(见图3-20)。 (2)
删除单个或多个记录:选择“表”/“删除记录”,在随之出现的“删除”对话框中(与图3-18所示的对话框类似)输入或选择范围及删除条件,然后,单击“删除”按钮。 (3)
恢复单个或多个记录:选择“表”/“恢复记录”,在随之出现的对话框中(与图3-18所示的对话框类似)输入或选择范围及恢复条件,然后,单击“恢复记录”按钮。 (4)
物理删除记录:选择“表”/“彻底删除”。这项操作相当于执行了命令PACK。 (5)
调整字段显示的大小:选择“表”/“调整字段大小”或将鼠标指向两字段间的分界位置(见图3-20),当出现两边分开鼠标箭头时,按住鼠标左键拖动至适当位置并放开鼠标左键即可。 (6)
改变字段显示顺序:选择“表”/“移动字段”或将鼠标指向某字段,当出现向下的鼠标箭头时,按住鼠标左键拖动至适当位置放开即可。 (7)
分区显示:将鼠标指向图3-20所示的分区块,出现两边分开鼠标箭头时,按住鼠标左键拖动即可。图3-20浏览状态下的记录操作 7.替换字段 通过“表”/“替换字段”操作,可利用菜单完成REPLACE命令,具体方法是: (1)
选择“表”/“替换字段”,打开图3-21所示的“替换字段”对话框。 (2)
在“替换字段”对话框的“字段”框中选取字段,在“替换为”框中输入替换内容,同时,输入作用范围及条件,然后,单击“替换”按钮完成替换操作。图3-21“替换字段”对话框 3.2.3备注与通用字段的简单编辑 1.表文件浏览状态下编辑 打开表,在浏览方式下将光标置于某记录的备注或通用字段(见图3-22)上,然后,按Crtl+PageDown键或用鼠标双击该字段就可以打开备注或通用字段的编辑窗口。在编辑窗口中,可利用通常的文本编辑或图片粘贴等技术进行编辑,编辑完成后存盘(按Ctrl+W或关闭窗口)或按Esc键放弃存盘。若记录的备注或通用字段中存有内容,则图3-22中备注或通用字段显示方式为“Gen”、“Memo”;若记录的备注或通用字段显示为“gen”、“memo”,则表示字段内容为空。图3-22光标置于通用字段 2.命令方式下编辑 打开表文件后,若表文件有备注或通用字段,可用如下命令编辑: (1)
编辑备注字段:使用命令MODIFYMEMO<备注字段名表> (2)
从文本文件中添加:使用命令
APPENDMEMOFROM<文本文件名>[OVERWRITE]
该命令中若是使用了[OVERWRITE]选项,则用文本文件的内容替换当前备注字段内容;若无[OVERWRITE]选项,则将文本文件的内容追加到原备注字段内容之后。 (3)
编辑通用字段:使用命令MODIFYGENERAL<通用字段名表>3.3索引、查询和排序 3.3.1索引 1.单项索引文件 1)建立单项索引文件 命令格式:INDEXON<索引表达式>TO<索引文件名> 该命令根据“索引表达式”的值从小到大地对打开的表文件进行排序,并建立相应的单项索引文件。单项索引文件只能以升序排列。
2)打开单项索引文件 新建的单项索引文件在建立后即处于打开状态。如果关闭表文件后,再次打开该表文件,那么就应当使用专门的单项索引文件打开命令打开索引文件,或者在打开表文件时使用命令要求索引文件随着表文件一起打开。具体方法是: (1)
同时打开单项索引文件与表文件,可使用命令:
USE<表文件名>INDEX<索引文件名>
(2)
表文件打开后,再单独打开单项索引文件,可使用命令:
SETINDEXTO<索引文件名> 3)关闭单项索引文件 单项索引文件随着表文件的关闭自动关闭,也可以采用下列命令单独关闭: SETINDEXTO 例3-19理解以下“单项索引文件”的应用(“***”后为要求完成的操作或说明)。 Clear &&清空VFP窗口内容命令 setdefaulttoc:\vfplx &&设置VFP缺省路径 ***设置VFP缺省路径,以保证使在不指明路径时,打开与建立的文件都处于此路径下 usexscj &&打开c:\vfplx\xscj表文件 list &&显示以记录号排列(即,按输入次序排列) ***使记录显示等按学号的升序排列 indeonxhtoxhsy &&据xh字段,新建单项索引文件xhsy list &&显示结果如下:注意记录号为输入的物理顺序记录号XHXMKCMCJKSLB799041101李小伟英语80.0面试899041101李小伟计算机基础82.0正常考试999041101李小伟法律基础85.0口试199041102王勇计算机基础87.0正常考试299041102王勇英语70.0面试 699041102王勇英语67.0面试399041105吴国颖英语90.0面试499041105吴国颖法律基础67.0口试599041107周天成计算机基础92.0正常考试 ***单项索引文件的建立使记录依据学号由小到大排列而不按物理顺序排列 setindeto&&单独关闭单项索引文件 list &&显示结果恢复输入的物理顺序(自己查看) setindetoxhsy &&打开已建立的单项索引文件
list &&显示结果依据学号排列 use &&关闭表文件,单项索引文件同时关闭 usexscjindexhsy &&同时打开表文件与已建立的单项索引文件 list &&显示结果依据学号排列 use 2.复合索引文件 1)建立复合索引文件 命令格式:INDEXON<索引表达式>TAG<索引标识名>[OF<索引文件名>] [ASCENDING|DESCENDING] 该命令为复合索引文件建立一个索引标识。如省略“[OF<索引文件名>]”子句,则索引文件名与表文件名相同,索引标识被写到结构复合索引文件中;如使用了“[OF<索引文件名>]”子句,则索引文件名有该子句确定,索引标识被写到独立复合索引文件中。 2)打开复合索引文件 结构复合索引文件自动随表文件一起打开,无需特别命令。如需打开独立复合索引文件,则需专门说明。 命令格式:USE<表文件名>INDEX<索引文件名> 由于复合索引文件可包含多个索引表达式,因此除打开索引文件外,还需说明采用哪一个索引标识排序(即确定主控索引标识)。确定主控索引标识应使用以下命令: SETORDERTOTAG<索引标识> 3)关闭索引文件 命令格式1:CLOSEINDEXES 命令格式2:SETINDEXTO 4)在复合索引文件中删除索引标识 命令格式:DELETETAG<标记名表> 该命令删除当前打开的复合索引文件的索引标识。如果执行DELETAGALL命令,则表示删除所有的索引标识并将复合索引文件从磁盘上删掉。 例3-20理解以下“复合索引文件”的应用(“***”后为要求完成的操作或说明)。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&设置VFP缺省路径 usexscj &&打开c:\vfplx\xscj表文件 list &&以输入顺序显示记录 ***建立学号升序,姓名降序的结构复合索引文件 indeonxhtagxh &&据xh字段,建立复合索引文件xscj.cdx。 ***因为省略了“[OF<索引文件名>]”子句,所以,结构复合索引文件的文件
***名默认为xscj.cdx,索引标识为xh字段 indeonxmtagxmdescending &&复合索引文件中增加xm索引标识,降序 setordertoxm &&确定以索引标识xm(姓名)排序 list &&按xm降序显示记录 setordertoxh &&确定以索引标识xh排序 list &&显示结果按xh升序排列 setindeto &&单独关闭索引文件
list &&显示结果恢复输入的物理顺序(自己查看) use &&关闭表文件 usexscj &&表文件与已建立xscj.cdx一起打开,无需其他说明 use ***若没有建立以上结构复合索引文件,采用以下独立复合索引文件完成 usexscj &&打开c:\vfplx\xscj表文件 list &&以输入顺序显示记录 ***建立学号升序,姓名降序的独立复合索引文件 indeonxhtagxhofcjsy &&据xh字段建立独立复合索引文件cjsy.cdx。
indeonxmtagxmofcjsydescending&&增加xm索引标识,降序 setordertoxm &&确定以索引标识xm(姓名)排序 list &&显示结果为按xm降序排列 setordertoxh &&确定以索引标识xh排序 list &&显示结果为按xh升序排列 setindeto &&单独关闭索引文件 list &&显示结果恢复输入的物理顺序(自己查看) use &&关闭表文件 usexscj &&表文件打开时,cjsy.cdx没有一起打开。 use
***若要求cjsy.cdx与表文件一起打开,应输入 usexscjindecjsy &&使表文件与索引文件一起打开 use ***也可以单独打开独立复合索引文件 usexscj setindetocjsy &&单独打开独立复合索引文件 deletagxm &&从cjsy.cdx删除索引标识xm deletagall &&删除所有索引标识,并删除复合索引文件cjsy.cdx use 除了利用索引使表记录在不改变表文件的物理顺序的情况下,按指定的次序排列外,也可以改变表记录的物理顺序使表文件中的记录按照某个关键字值的大小重新排列。 3.3.2索引查询 1.FIND命令 命令格式:FIND<表达式> FIND命令在当前表文件的主索引文件中查找索引关键字段与指定的<表达式>相匹配的第一条记录,若检索到匹配的记录,则将记录指针指向该记录,同时使函数FOUND()的返回值为“真”;否则使FOUND()函数的返回值为“假”,EOF()函数的返回值为“真”。FIND只能查找字符型或数值型关键字。 例3-21利用FIND命令查找姓名为“吴国颖”与姓“李”的人。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&设置VFP缺省路径usexscj &&打开c:\vfplx\xscj表文件 indeonxmtagxmofcjsy&&据xh字段,建立独立复合索引文件cjsy.cdx find“吴国颖” &&据姓名索引查找“吴国颖”(可加定界符""查找)
disp &&显示当前记录 find李 &&查找姓“李”的人(可不加定界符查找) disp deletagall &&删除复合索引文件 use 2.SEEK命令 命令格式:SEEK<表达式> SEEK命令在当前表文件的主索引文件中检索索引关键字段与指定<表达式>相匹配的第一条记录。 SEEK命令功能比FIND命令强,它不仅可以检索字符型或数值型数据,而且还能检索数值型和日期型数据。该命令要求字符型数据必须用定界符括起来,数值型数据则不用定界符,字符型日期数据则要用CTOD函数将其转换成日期型数据。此外,在SEEK命令中如果<表达式>为变量名,则无需用宏替换函数。SEEK命令在检索到相匹配的记录后,记录指针指向该记录,并使函数FOUND()的返回值为“真”;否则使FOUND()函数的返回值为“假”,EOF()函数的返回值为“真”。 注意:逻辑型定界符为“.”,字符型定界符为“”(双引号),日期型定界符为{^}。 例3-22利用SEEK命令查找xs.dbf中日期为1973年11月16日的记录。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&设置VFP缺省路径 usexs &&打开c:\vfplx\xs表文件 indeoncsnytagcsnyofcsnysy &&据csny字段建立独立复合索引文件 seek{^1973-11-16} &&{^1973-11-16}是VFP6.0中的年月日格式 disp &&显示当前记录 deletagall use 3.3.3排序 所谓排序就是把表文件中的记录按照关键字值的大小重新排列并生成一个新的表文件。排序有时又称为分类。排序时,使用SORT命令。 命令格式:SORTTO<文件名>ON<字段名>[/A][/D][<范围>][FOR<条件>][FIELDS<字段名表>] 其中,/A表示按升序排序,/D表示按降序排序,如果省略此项则按升序排序。
例3-23按升序对xscj表中的xh字段进行排序并建立一个xhxscj表文件。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&设置VFP缺省路径 usexscj &&打开c:\vfplx\xscj表文件 sorttoxhxscjonxh use 例3-24按降序对xscj表中的xm字段进行排序并建立一个xmxscj表文件。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&设置VFP缺省路径 usexscj &&打开c:\vfplx\xscj表文件 sorttoxhxscjonxm/d use3.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽阳职业技术学院《化工CAD制图》2023-2024学年第一学期期末试卷
- 五年级数学下册应用题-分数应用题
- 廊坊燕京职业技术学院《信息系统审计》2023-2024学年第一学期期末试卷
- 江西师范高等专科学校《新媒体网络营销划写作》2023-2024学年第一学期期末试卷
- 嘉应学院《奥尔夫音乐教学法》2023-2024学年第一学期期末试卷
- 湖州学院《传感器技术与应用》2023-2024学年第一学期期末试卷
- 湖南国防工业职业技术学院《电子学二》2023-2024学年第一学期期末试卷
- 红河卫生职业学院《传播学原理与技能》2023-2024学年第一学期期末试卷
- 淄博师范高等专科学校《现代数值仿真技术》2023-2024学年第一学期期末试卷
- 周口理工职业学院《热工材料基础》2023-2024学年第一学期期末试卷
- 保险公估作业指导书x
- 新人教版八年级数学下册 第18章平行四边形 导学案
- 《生理心理学实验实训》指导书-
- 教练技术三阶段讲义
- GB/T 23799-2021车用甲醇汽油(M85)
- 车工工艺课件(绪论、一章)
- 催收服务工作手册方案
- 信息化系统数据恢复应急演练方案
- 常用有机溶剂性质
- 公司没有出审计报告情况说明解释
- (完整word版)高考英语作文练习纸(标准答题卡)
评论
0/150
提交评论