第四章自由表_第1页
第四章自由表_第2页
第四章自由表_第3页
第四章自由表_第4页
第四章自由表_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章自由表4.1表文件结构的创建和修改4.2输入表数据4.3表的基本操作4.4修改和删除记录数据4.5表的排序、索引和查寻4.6表的计算、汇总4.7多表间的基本操作4.1表文件结构的创建和修改4.1.1表结构1)字段名2)字段类型3)字段宽度确定字段宽度就是字段中能够存放的最大字符数或数值的最大位数4)小数位若字段的类型是数字型(N)和浮点(F),就须给出小数位数。若是整数,小数位是05)索引6)Null不等于零或空格,只表明是无明确的值。4.1.2建立表结构1、用命令1)created:\df.dbf2)create3)create?2、用菜单4.1.3修改表结构1)liststructure&&显示表结构2)modifystructure&&修改表结构备份时VFP自动备份当前表备份文件扩展名是.bak,备注备份文件是.tbk如果不想改了,则把.bak改成.dbf,.tbk改成.fpt4.2输入表数据4.2.1在create命令期间输入数据在创建好表后会提示你是否添加数据4.2.2表添加命令APPEND[BLANK]参数描述:[BLANK]:在当前表的末尾添加一条空记录。功能:在表的末尾添加一个或多个新记录。说明:■可以在只有表结构而没有记录的空表中添加记录,也可以在已经录入数据的表中的尾部追加记录;■它可以向当前表的尾部追加一条或多条新记录。省略可选项,则在当前表的尾部追加任意新记录,追加记录的方法及操作与用CREATE命令建立表时输入数据的方法相同;当发出APPEND或APPENDBLANK命令,并且在选定工作区中没有打开的表时,将显示一个“打开”对话框,我们可以在对话框中选择一个要添加记录的表。APPEND命令打开一个编辑窗口,我们可以在其中输入一个或多个新记录。增加新记录后,VFP将自动修改打开的所有索引。打开浏览窗口后通过追加方式添加记录方法:在项目管理器中选定一个要添加记录的表,然后单击【浏览】,然后在系统菜单中选择【显示】|【追加方式】。4.2.3在表中插入记录命令格式:INSERT[BEFORE][BLANK]功能:在当前表当前记录前面或后面插入一条新记录,并进入编辑状态。选择[BEFORE]子句,新记录插在当前记录之前选择[BLANK]子句,则插入一条空记录。也可以用insertinto表values(字段…)4.3表的基本操作4.3.1打开关闭表文件格式:USE[<表文件名>][EXCLUSIVE][SHARED]功能:打开指定的表文件。参数描述:<表文件名>:指定要打开的表的名称。[EXCLUSIVE]:在网络上以独占的方式打开表。[SHARED]:在网络上以共享的方式打开表。■打开表时若表含有备注型字段,则FPT文件也同时被打开。■每个表被打开时均赋于一个别名。若省略ALIAS<别名>,则其别名与主文件名相同。■若不选择任何参数,表示关闭当前工作区中已打开的表。■在任一时刻,每个工作区最多允许打开一个表。如果指定工作区已有表打开,在打开新的表时,系统总是先自动关闭原来打打开的表。■打开表时,记录指针指向第一条记录。4.3.2表的显示和列表1、显示表记录格式一:LIST[OFF][FIELDS<字段名列表>][<范围>][FOR<条件>][WHILE<条件>][TOPRINTER[PROMPT]/TOFILE<文本文件名>]

格式二:DISPLAY[OFF][FIELDS<字段名列表>][<范围>][FOR<条件>][WHILE<条件>][TOPRINTER[PROMPT]/TOFILE<文本文件名>]功能:显示当前表中的全部或部分记录和数据。参数描述:[OFF]:使用OFF时,不显示记录号,否则显示记录号。[<范围>]:范围为可选项,选择时为ALL、RECORD(N)、[NEXT(N)、REST中的一个参数,表示记录显示的范围。FIELDS<字段名列表>:若省略<字段名表列>,则显示当前表中的所有字段,否则显示指定的字段。如果备注字段名出现在<字段名表列>中,则它的内容按50个字符列宽显示[FOR<条件>/WHILE<条件>]:该子句用于有选择地显示某些记录,省略时则显示<范围>限定的全部记录。[TOPRINTER[PROMPT]/TOFILE<文本文件名>]:指定记录列表的输出方向。TOPRINTER[PROMPT]指定输出到打印机。[PROMPT]参数的使用方法同前。TOFILE<文本文件名>指定输出到所指定的文本文件中。2、LIST和DISPLAY的区别:(1)DISPLAY每显示一屏记录时暂停一次,按任意键后继续显示剩余的记录,而LIST没有周期性暂停,连续向下显示,直到记录显示完毕为止。(2)若省略所有可选项,则DISPLAY命令显示当前记录,即范围为NEXT1,而LIST命令显示全部记录,即范围为ALL。3、显示表结构格式一:LISTSTRUCTURE[TOPRINTER[PROMPT]/TOFILE<文本文件名>]格式二:DISPLAYSTRUCTURE[TOPRINTER[PROMPT]/TOFILE<文本文件名>]功能:显示当前表结构的有关信息。包括表文件名、记录个数、最后一次修改日期、各字段的字段号、字段名、类型、宽度和小数位,一条记录的字节总数。参数说明:[TOPRINTER]子句表示将操作结果送到打印机。后面可以接[PROMPT]参数,这一参数的在执行打印命令之前,先打开“打印设置”对话框,用以对打印机有关参数(如纸张大小、打印范围等)进行设置。[PROMPT]参数只能紧接TOPRINTER命令。[TOFILE]子句表示将操作结果输出到指定的磁盘文件中。LISTSTRUCTURE和DISPLAYSTRUCTURE命令的区别DISPLAYSTRUCTURE在每显示一屏信息后暂停,等待用户按任意一键后继续显示;LISTSTRUCTURE显示信息时没有周期性暂停,而是连续向下显示,直到显示完毕。4.3.3记录定位1、绝对定位格式一:GOTO[RECORD<数值表达式>]/TOP/BOTTOM

格式二:GO[RECORD<数值表达式>]/TOP/BOTTOM格式三:

<数值表达式>功能:将记录指针直接定位到指定的记录上。参数描述:<数值表达式>:指定一个物理记录号,记录指针移至该记录上。TOP:将记录指针定位在表的第一个记录上。[BOTTOM]:将记录指针定位在表的最后一个记录上。说明:RECORD可省略。<数值表达式>的值必须大于0,且不大于当前表文件的记录个数。2、相对定位把记录指针从当前位置作相对移动。格式:SKIP[<数值表达式>]功能:将记录指针向前或向后作相对若干条记录的移动。参数描述:<数值表达式>:指定记录指针作相对移动的记录数据。说明:1、移动的记录数等于<数值表达式>的值,其值为正数时,记录指针向下移动,当<数值表达式>是负数时,记录指针向上移动。2、省略选择项<数值表达式>,约定为向下移动一条记录,即SKIP等价于SKIP1。4.4修改和删除记录数据4.4.1修改表数据1、按记录的字段纵向排列显示修改格式:change[<范围>][fields<字段名表>][while<条件>][for<条件>]2、浏览修改命令格式:BROWSE[FIELDS<字段名表>][LOCK<数据型表达式>][LAST][FOR<逻辑型表达式>]功能:在屏幕上打开一个浏览窗口,在窗口中显示表的记录。参数描述:

[Fields<字段名表>]:指定在浏览窗口中显示的表的字段。LOCK<数据型表达式>:将浏览窗口一分为二,指定在左窗口中显示的字段数。LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。FOR<逻辑型表达式>:指定在浏览窗口中显示的记录所要求满足的条件。说明:1、BROWSE命令可以带有很多任选项,命令格式中只介绍了BROWSE命令的最基本的任选项。

2、在<字段名表>中,除了可以使用表所定义的字段以外,还可以使用计算字段。计算字段:就是由表中的字段组合成的合法的VFP的表达式。注意:计算字段的名称不能与当前表中的字段名同名,长度不能超过10个字符。计算字段是只读的,它的值随着组成计算字段的表中的字段值的变化而变化。计算字段的格式为:<计算字段名>=<表达式>BROWSEFIELDSNAME_BIRTH=姓名+":"+性别+":"+DTOC(出生日期)+"出生"当执行上述命令后屏幕显示结果3、表运算替代命令格式:REPLACE<字段名1>[ADDITIVE][,<字段名2>WITH<表达式2>[ADDITIVE]…][<范围>][FOR<条件>][WHILE<条件>]

功能:不进入全屏幕编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指定字段的内容。参数描述:<字段名1>:指定要替换值的字段。WITH<表达式1>:指定用来进行替换的表达式或值。<范围>:指定进行替换时的记录范围。FOR<条件>:指定要进行替换字段值的记录应满足的条件。WHILE<条件>:当记录的条件不满足时结束替换。用以按条件中的字段建立了索引的表。说明:WITH后面的表达式的类型必须与WITH前面的字段类型一致。4.4.2删除表记录1、逻辑删除(为记录做上删除标记)格式:DELETE[<范围>][FOR<条件>][WHILE<条件>]功能:对当前表文件中指定的记录做删除标记。GO7DELETEGO4DELETENEXT3LIST2、物理删除(清除带有删除标记的记录)格式:PACK[DBF][MEMO]功能:省略选择项,该命令将从当前表中删除所有带删除标记的记录。选择DBF,表示仅清除逻辑删除的记录而不压缩备注文件,选择MEMO表示仅压缩备注文件中无用的空间而不清除被逻辑删除的记录。不带任何选择项时,PACK命令既清除逻辑删除的记录,又压缩备注文件。说明:用PACK命令删除的记录是不可被恢复的。所以在使用PACK命令前一定要检查删除标记是否加的正确。PACKLIST3、恢复带删除标记的记录格式:RECALL[<范围>][FOR<条件>][WHILE<条件>]功能:恢复当前表中带删除标记的记录,即去掉删除标记“*”号。当省略所有的选项时,仅恢复当前记录。RECALLALLBROW4、清除所有记录格式:ZAP功能:从当前表中清除全部记录,仅保留表的结构。ZAP命令与DELETEALL和PACK两条命令执行的结果相同,区别在于ZAP执行的速度更快,当表中的记录很多时尤为明显。4.5表的排序、索引和查询4.5.1表的排序格式:SORTTO<表文件名>ON<字段名1>[/A|/D][/C][,<字段名2>[/A|/D][/C]...][ASCENDING|DESCENDING][<范围>][FOR<逻辑表达式>][WHILE<逻辑表达式>][FIELDS<字段名列表> |FIELDSLIKE<框架>|FIELDSEXCEPT<框架>]功能:对当前选定的表排序,并将排序后的记录输出到新表中。参数描述:<表文件名>:指定经过排序后所生成的新表的表文件名。ON<字段名1>:在当前选定的、要排序的表中指定关键字段,字段的内容和数据类型决定了记录在新表中的顺序。[/A|/D][/C]:指定排序顺序(升序或降序)。/A指定为按升序排序,/D指定按降序排序。如果在字符型字段名后面包含/C,则忽略大小写。可以把/C选项与/A或/D选项组合起来。[ASCENDING]:将所有不带/D的字段指定为升序排列。[DESCENDING]:将所有不带/A的字段指定为降序排列。如果省略ASCENDING和DESCENDING参数,则排序默认为升序。[<范围>]:指定需要排序记录的范围。默认范围为ALL。[FOR<逻辑表达式>]:在当前表中指定排序中只包含逻辑条件为“真”的记录。[WHILE<逻辑表达式>]:指定一个条件,在当前表中只要<逻辑表达式>的计算值为“真”,则依据此条件,排序中包含这条记录。[FIELDS<字段名列表>]:指定用SORT命令排序时所创建的新表中要包含的原表中的字段。如果省略FIELDS子句,新表中将包含原表中的所有字段。[FIELDSLIKE<框架>]:在新表中包含那些与字段梗概框架相匹配的原表字段。[FIELDSEXCEPT<框架>]:在新表中包含那些不与字段梗概框架相匹配的原表字段。4.5.2表的索引索引文件有二种,单索引文件和复合索引文件,而复合索引文件又可分为结构复合索引文件和非结构复合索引文件两种。VFP对结构复合索引文件提供了四种类型:主索引、候选索引、唯一索引和普通索引。主索引是指关键字段或索引表达式中不允许出现重复值的索引,主要用于主表或被引用的表,用来在一个永久关系中建立参照完整性。一个表而言,只能创建一个主索引。

候选索引是可以作主关键字的索引,因为它不包含Null值或重复值。在数据表和自由表中均可以为每个表建立多个候选索引。唯一索引不允许两个索引具有相同的索引值,这种要求与主索引相同。为了保持与早期版本的兼容性,可以建立一个唯一索引,以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。普通索引可以用来对记录排序和搜索记录,它不强迫记录中的数据具有唯一性。在一个表中可以有多个普通索引。选择合适的索引类型可以以下列准则作为依据:

1、如果需要排序记录,以便显示、查询或打印,可以使用普通索引、候选索引或主索引。2、如果要在字段中控制重复值的输入并对记录排序,则对数据表可以使用主索引或候选索引,对自由表可以使用候选索引。3、如果准备设置关系,则可以依据表在关系中所起的作用来分别使用普通索引、主索引或候选索引。建立索引1、单索引文件的建立

格式:INDEXON<索引关键表达式>TO<索引文件名>[UNIQUE]FOR<条件>[ADDITIVE]功能:对当前表中满足条件的记录,按<索引表达式>的值建立一个索引文件,并打开此索引文件,其缺省的文件扩展名为.IDX。参数描述:<索引关键表达式>:用以指定记录重新排序的字段或表达式。<索引关键表达式>可以是字段名,也可以是含有当前表中字段的合法表达式。表达式值的数据类型可以是字符型、数值型、日期型、逻辑型。若在表达式中包含有几种类型的字段名,常常需要使用类型转换函数将其转换为相同类型的数据。

[UNIQUE]:指定UNIPUE子句时,若有多条记录的<索引关键表达式>的值相同时,则只把第一次遇到的记录进行排序加入到索引文件中;省略该子句时,则把所有遇到的记录值都加入到索引文件中。[ADDITIVE]:若省略ADDITIVE子句,当为一个表建立新的索引文件时,除结构复合索引文件外,所有其它打开的索引文件都将会被关闭;若选择此选择项,则已打开的索引文件仍然保持打开状态。FOR<条件>:指定一个条件,只显示和访问满足这个条件的表达式<条件>的记录,索引文件只为那些满足条件的表达式的记录创建索引关键字。USESTUDENTINDEXON学号TOXHSYLIST当执行上述命令后屏幕显示结果2、复合索引文件的建立格式:INDEXON<索引关键表达式>TAG<标记名>[OF<复合索引文件名>][FOR<条件>] [ASCENDING|DESCENDING][UNIQUE] [ADDITIVE]功能:建立和修改复合索引文件,并打开此索引文件,其缺省的文件扩展名为.CDX。参数描述:<索引关键表达式>、[FOR<条件>]、[ADDITIVE]:与上相同。TAG<标记名>[OF<复合索引文件名>]:创建一个复合索引文件。在TAG<标记名>参数中不包含可选的[OF<复合索引文件名>]子句时,便可以创建结构复合索引文件。4.5.3表的查询1、检索命令find格式:FIND<字符型常量>/<数值型常量>2、检索命令seek格式:SEEK<表达式>[ORDER<索引号>/<单索引文件名>/[TAG]<索引标记>[OF<复合索引文件名>][ASCENDING/DESCENDING]]3、LOCATE命令

格式:LOCATE[<范围>][FOR<条件>][WHILE<条件>]功能:按顺序搜索表,从而找到满足指定逻辑表达式的第一个记录。参数描述:[<范围>]:指定要定位的记录范围。只有在范围内的记录才被定位。LOCATE命令的默认范围是ALL。[FOR<条件>]:LOCATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录。若逻辑表达式是可优化的表达式,则Rushmore优化由LOCATEFOR创建的查询。为了获得最佳执行效果,可在FOR子句中使用可优化的表达式。[WHILE<条件>]:指定一个条件,只要逻辑表达式计算值为真,就继续查找记录。说明:(1)被搜索的表不必有索引。(2)若LOCATE发现一个满足条件的记录,就将记录指针定位在该记录上。可以使用RECNO()返回该记录的记录号,同时FOUND()函数返回“真”,EOF()函数返回“假”。如果没有找到,则将记录指针指向范围的最后一个记录,同时将FOUND()函数值置为“假”,屏幕上显示“已到定位范围末尾”。(3)如果执行SETEXACTOFF命令后,再用LOCATE命令查找字符型数据时,不要求字符型数据精确匹配。(4)该命令只能查找第一条满足条件的记录。若表中有多条满足条件的记录,当已经找到一条满足条件的记录后,还想继续查找后面满足条件的记录时,可以使用CONTINUE命令继续向后查找满足条件的记录。4、CONTINUE命令

功能:它使LOCATE命令从当前记录开始继续查找下一条满足条件的记录。说明:CONTINUE是用在LOCATE之后继续查找满足同一条件的记录的命令,它继续LOCATE的操作。CONTINUE命令移动记录指针到下一个与<条件>逻辑表达式相匹配的记录上。CONTINUE命令能被重复执行直到记录指针到表的结尾或到指定范围的尾部。如果CONTINUE命令成功地查找到了一条记录,RECNO()函数将返回该记录的记录号,并且FOUND()函数返回逻辑“真”值和EOF()返回逻辑“假”值。如果CONTINUE命令没有查找到满足条件的记录,RECNO()函数返回在tableplusone中的记录数,FOUND()函数返回逻辑“假”值,并且EOF()函数返回逻辑“真”值。4.6表的计算和汇总1、计算命令COUNT格式:COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>]功能:统计当前表中指定范围内满足条件的记录个数,并存于<内存变量>中。参数描述:<范围>、<条件>子句的用法和前面所有命令的用法是一样的。若使用<范围>、<条件>子句,可统计出指定<范围>内满足<条件>的记录个数,否则统计表中的记录的总数。对COUNT命令,默认的范围是ALL。若使用任选项TO<内存变量>可选项,可将统计的结果送到内存变量中保存,否则将统计结果显示在屏幕上(SETTALKON)。例:USESTUDENTSETEXACTOFF&&置字符串是模糊比较COUNTFOR姓名="李".OR.姓名="王"TORS2、求和命令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论