《第2章 VFP表的基本操作.ppt》由会员分享,可在线阅读,更多相关《第2章 VFP表的基本操作.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 VFP表的基本操作表的基本操作2.1 VFP表的建立、修改与运行 自由表&数据库表第第2章章 VFP表的基本操作表的基本操作2.1.1 分析和设计表的结构o表是由行和列组成的二维表格,它是处理数据和建立关系数据库及其应用程序的基本单元。o表分为自由表和数据库表。自由表是独立于数据库而存在的一种表,而数据库表是包含在数据库中的表。o表主要由结构和记录两部分组成。结构可以理解为表的框架,记录即表中的数据。姓名姓名性性别别出生年月出生年月婚否婚否教研室教研室职职称称月收入月收入简历简历照片照片张张三三男男1957-8-12T语语文文教授教授1343.56略略略略李四李四女女1960-8-
2、23T数学数学副教授副教授1050.20略略略略景秀景秀丽丽女女1979-2-11T外外语语讲师讲师890.00略略略略王五王五男男1967-5-23T计计算机算机讲师讲师678.00略略略略赵赵六六男男1963-12-8F外外语语副教授副教授1040.40略略略略马识马识途途男男1975-4-21F计计算机算机讲师讲师860.00略略略略李李华华男男1988-8-15T数学数学讲师讲师880.00略略略略1.表结构的分析记录(行)属性(列)值字段名Teacher表关系名1.表结构的分析注:同一列数据必须使用相同的数据表示方法,也就是数据类型。要给字段值预留足够的存储空间,也就是定义字段的宽度
3、(1个汉字占用2个字节)。字段的名称、类型、宽度等构成表的框架,及结构。表的建立分两步,第一步定义表结构,第二步输入数据。定义表结构就是定义各个字段的属性,包括字段的个数以及每个字段的名称、类型、宽度等。宽度和小数位:字段的宽度规定了字段值可以容纳的最大字节数。数值型字段除需要定义字段的总宽度外,还需要定义小数位。2.表结构的设计 在VFP系统中,一张二维表对应一个数据表,称为表文件,扩展名为.DBF。一张二维表有表名、表头、表的内容三部分组成,一个数据表有表文件的文件名、结构、记录三个要素。定义表结构定义表结构的步骤:1.熟悉事务处理的工作流程2.明确事务处理的目的3.所需的原始数据和相关数
4、据4.确定所需要的数据表,每个表中所含字段、各个字段的类型、宽度等。2.1.2建立表的结构o菜单方式o命令方式o项目方式“表设计器”“字段”选项卡o字段名(Field Name),每一个字段必须取一个名字,称为“字段名”,用以在表中标志该字段。以字母或汉字开头,可包括字母、汉字、数字和下划线,长度不超过10。o字段的数据类型(Type),表中每个字段都有特定的数据类型。o字段宽度(Width),指该字段所能容纳数据的最大的字节数,字段的宽度必须能足够容纳可能的最长的数据信息。除字符型、数值型、浮动型字段由用户根据需要设定字段宽度外,其它类型均由系统规定宽度。字段的基本属性o小数位数(Decim
5、al),对于数值型、浮点型和双精度型的字段,还可以指定其小数的位数。小数位和正负号小数位和正负号都须在字段宽度中占一位。都须在字段宽度中占一位。o空值(NULL)支持,空值是用来指示记录中的一个字段“没有值”的标志。空值表示没有任何值或没有确定值,空值不同于数值0、空字符串或逻辑“假”。2.1.3 表数据的录入 表数据的输入要点:o如果输入的数据宽度等于字段宽度时,则光标自动跳到下一个字段;如果输入的数据宽度小于字段宽度时,则需按Enter键或Tab键跳到下一个字段。o对于有小数的数值型字段,如果输入整数部分宽度等于所定义的宽度时,则光标自动跳到小数部分;如果小于所定义的宽度,则按键盘右箭头跳
6、到小数部分。o输入记录的最后一个字段的值后,按Enter键,光标自动定位到下一个记录的第一个字段。2.1.3 表数据的录入o逻辑型字段只能接受.T.,.Y.,.F.,.N.四个字母之一(不区分大小写),如果在此字段中不输入值,则默认为.F.。o日期型数据必须与日期格式相符,默认按美国格式mm/dd/yy;o对于备注型和通用型字段,输入时将光标定位在memo或gen区,双击鼠标(或单击memo或gen区后按ctrl+pgdn组合键),打开相应的编辑窗口,输入完后,按ctrl+w存盘退出,按esc或ctrl+Q输入作废。2.2 表的打开与关闭n菜单方式n命令方式2.3 表的显示2.3.1表记录的显
7、示o菜单方式o命令方式BROWSELIST/DISPLAYBROWSE命令【命令格式】BROWSE FIELDSFORLAST【功能】在“浏览”窗口中显示或修改数据。【说明】使用FIELDS子句,对指定的字段进行操作。使用FOR子句,对满足条件的记录进行操作。LAST子句选用最后一次的显示配置(浏览方式或编辑方式)。BROWSE命令例题【例2.8】使用BROWSE命令浏览表teacher.dbf中的记录。USE teacher EXCLUSIVEBROWSE【例2.9】使用BROWSE命令浏览表teacher.dbf中职称是“讲师”的记录。USE teacher EXCLUSIVEBROWSE
8、 FOR 职称=讲师BROWSE命令例题【例2.10】使用BROWSE命令浏览表teacher.dbf中记录的“姓名”、“性别”、“出生年月”三个字段的内容。USE teacher EXCLUSIVEBROWSE FIELDS 姓名,性别,出生年月LIST/DISPLAY命令【命令格式】LIST/DISPLAY FIELDS FOR OFF TO PRINTTO FILE【功能】在工作区窗口显示当前表中符合条件的记录。LIST/DISPLAY命令【说明】oLIST命令的范围默认值为ALL,DISPLAY命令的默认值为当前记录。如省略范围,使用FOR子句,默认范围为ALL。o若省略FIELDS子
9、句,默认所有字段。o若省略OFF子句,显示记录号,否则不显示记录号。o若使用TO PRINT子句,输出记录到打印机。默认输出到屏幕。o若使用TO FILE 子句,将输出内容写入指定表文件。LIST/DISPLAY命令例题【例2.11】在工作区窗口显示表teacher.dbf中记录。USE teacher EXCLUSIVELIST?RECNO()?EOF()GO 3DISPLAY?RECNO()?EOF()LIST/DISPLAY命令例题【例2.12】在工作区窗口显示表teacher.dbf中计算机教研室老师的记录。USE teacher EXCLUSIVELIST FOR 教研室=计算机LI
10、ST/DISPLAY命令例题【例2.13】在工作区窗口显示表teacher.dbf中70年以前出生的老师记录。USE teacher EXCLUSIVELIST FOR 出生年月1000 FIELDS 姓名,月收入 LIST/DISPLAY命令例题【例2.15】在工作区窗口显示表teacher.dbf中已婚老师记录。USE teacherLIST FOR 婚否 OFF2.3.2表结构的显示【命令格式】LIST/DISPLAY STRUCTURE【功能】在工作区窗口显示当前表的结构。【例2.16】显示表teacher.dbf的结构。USE teacherLIST STRUCTURE2.4 目录操
11、作2.5文件的复制和删除文件的复制和删除 2.5.1表文件的复制【命令格式】COPY TO FIELDSFOR【功能】将当前表的结构和记录全部或部分复制到新表中。【说明】若没有任何子句,则将复制一个与当前表结构和内容完全相同的新表。新表的结构由FIELDS子句的决定,新表的记录个数由FOR子句的决定。【例2.18】复制完全相同的表teacher.dbf到teacher2.dbf和teacher2.fpt。USE teacherCOPY TO teacher2USE teacher2LIST【例2.19】从表teacher.dbf复制到teacher3.dbf,新表中含有女教师的“姓名”、“性别
12、”、“教研室”3个字段。USE teacherCOPY TO teacher3 FOR 性别=女 FIELDS 姓名,性别,教研室USE teacher3LIST2.5文件的复制和删除文件的复制和删除 2.5.1表文件的复制2.5.2表结构的复制【命令格式】COPY STRUCTURE TO FIELDS【功能】将当前表的结构全部或部分复制到新表中。【说明】产生的新表是一个只有表结构而没有记录的空表。若使用FIELDS子句,则新表只包含FIELDS子句指定的字段。2.5.3任意类型文件的复制【命令格式】COPY FILE TO【功能】将源文件内容拷贝到目标文件中去。【说明】o该命令可复制任何类
13、型的文件。o源文件和目标文件若有扩展名,必须写上。o源文件和目标文件不能使用通配符“*”、“?”。o使用该命令前,源文件必须是关闭的。o若源文件是一个带有备注型字段的数据表文件,则需要另外复制.FPT文件。2.5.4文件的删除【命令格式】ERASE/DELETE FIEL/?【功能】删除磁盘文件。【说明】o要删除的文件中若有扩展名,必须写上。o要删除的文件中可以使用通配符“*”、“?”。o文件名前可带盘符和路径,若省略盘符和路径,则指当前盘当前路径。o使用该命令前,被删除的文件必须是关闭的。o若要删除的文件是带有备注型字段的数据表文件,则需要另外删除.FPT文件。2.6记录指针的定位o表中的每
14、个记录都有一个编号,称为记录号。对于打开的表,会被分配一个记录指针。记录指针指向的记录称为当前记录。o定位记录就是移动记录指针,使指针指向符合条件的记录过程。使用记录号测试函数RECNO()可以获得当前记录的记录号。o表文件有两个特殊的位置:文件头(表起始标记)和文件尾(表结束标记)。文件头在表的第1个记录之前,当记录指针指向文件头时,BOF()函数的值为.T.;文件尾在表的最后1个记录之后,当记录指针指向文件尾时,EOF()函数的值为.T.,表的结构2.6.1 绝对定位将记录指针直接定位到某条记录,称记录的绝对定位记录的绝对定位。【命令格式】GO/GOTO TOP/BOTTOM/【功能】将记
15、录指针指向定位记录【例2.21】GO 命令定位示例。USE teacher?RECNO()&刚打开的表,指针指向第 1个记录GO BOTTOM&定位到末记录?RECNO()?EOF()GO 3?RECNO()GO TOP&定位到首记录?RECNO()2.6.2相对定位【命令格式】SKIP+/-【功能】从当前记录开始向前或向后移动记录指针。【说明】oSKIP 向表尾方向移动1个记录。oSKIP +n 向表尾方向移动n个记录。oSKIP -n 向表头方向移动n个记录。2.7记录的追加与插入记录的追加与插入2.7.1记录的追加【命令格式】APPEND BLANK【功能】在已打开的当前表的尾部追加一个
16、或多个记录。【说明】当命令使用BLANK子句时,在表的尾部追加一个空白记录,并且不进入编辑窗口。2.7.2记录的插入【格式】INSERT BEFOREBLANK【功能】在当前表中某个记录的之前或之后插入记录。【说明】oINSERT 表示在当前记录的之后插入一条记录。oINSERT BEFORE表示在当前记录的之前插入一条记录。oINSERT BLANK 或INSERT BEFORE BLANK表示在当前记录之后或之前插入一条空记录。o插入空记录后,其后所有记录的记录号加1,空记录只有记录号而无内容。2.8记录的删除和恢复记录的删除和恢复2.8.1记录的逻辑删除【命令格式】DELETE FOR
17、【功能】逻辑删除指定范围内符合条件的记录。删除标记用“*”表示。【例2.25】逻辑删除表teacher.dbf中的第3个和第5个记录。USE teacher EXCLUSIVEGO 3DELETEGO 5DELETELIST2.8.2记录的恢复【命令格式】RECALL FOR 【功能】恢复指定范围内符合条件的被逻辑删除的记录为正常记录。【说明】oRECALL 仅恢复当前记录指针指向的带有删除标记一个记录。oRECALL ALL恢复所有带删除标记的记录。o若使用FOR 子句,则恢复指定范围内所有符合条件的带有删除标记的记录。2.8.3记录的物理删除【命令格式】PACK【功能】物理删除所有带删除标
18、记的记录。【说明】PACK命令不受SET DELETE ON/OFF状态的影响。【例2.27】物理删除表teacher.dbf中的第3个记录。USE teacher EXCLUSIVERECALL ALLGO 3DELETEPACKBROWSE2.8.4记录的清空【命令格式】ZAP【功能】物理删除表中的全部记录,删除后,表中只保留结构,没有记录。2.9 VFP表的修改表的修改2.9.1表结构的修改【命令格式】MODIFY STRUCTURE【功能】打开“表设计器”对话框,修改当前表的结构。【例2.28】用命令修改表teacher.dbf的结构。USE teacher EXCLUSIVEMODI
19、FY STRUCTURE 2.9.2表记录的修改1在“浏览”窗口中修改记录2EDIT/CHANG命令3REPLACE命令【命令格式】REPLACE WITH,WITH WITH FOR【功能】用表达式的值替换指定字段的值,即用表达式1的值替换字段名1原来的值;用表达式2的值替换字段名2原来的值;。【例2.30】将表teacher.dbf中所有教师的工资增加500元。USE teacher EXCLUSIVEREPLACE ALL 月收入 WITH 月收入+500BROWSE【例2.31】将表teacher.dbf教师景秀丽的职称由“讲师”改为“副教授”。USE teacher EXCLUSIV
20、EREPLACE 职称 WITH 副教授 FOR 姓名=景秀丽BROWSE 2.9.2表记录的修改【例2.32】给表teacher.dbf增加一个记录,各个字段的值依次是:“石磊”、“男”、“10/30/63”、“已婚”、“计算机”、“教授”、“1800元”。USE teacher EXCLUSIVEAPPEND BLANKREPLACE 姓名 WITH 石磊,性别 WITH 男,出生年月 WITH 1963/10/30,婚否 WITH.t.;教研室 WITH 计算机,职称 WITH 教授,月收入 WITH 1800BROWSE LAST 2.9.2表记录的修改2.9.3记录与数组间的数据传送
21、1将当前记录复制到数组或内存变量中【命令格式】SCATTER FIELDSMEMO BLANKTO MEMVAR【功能】将当前记录的字段值按顺序依次送入数组元素中,或一组内存变量中。【说明】o若使用FIELDS子句,则只传送字段名表中的字段,否则将传送所有字段(备注型字段除外)。若传送备注型字段,还需使用MEMO选项。2.9.3记录与数组间的数据传送1将当前记录复制到数组或内存变量中o使用TO 子句能将数据复制到所示的数组元素中。o使用MEMVAR可将数据复制到一组变量名与字段名相同的内存变量中。o如果使用BLANK,则将创建一组与各字段相同数据类型的空内存变量。【例2.33】SCATTER命
22、令使用示例。USE teacher EXCLUSIVESCATTER BLANK TO AGO 4SCATTER TO BGO 5SCATTER TO MEMVARDISPLAY MEMORY2.9.3记录与数组间的数据传送1将当前记录复制到数组或内存变量中2数组或内存变量中的数据复制到当前记录【命令格式】GATHER FROM MEMVAR FIELDSMEMO【功能】将数组或内存变量中的数据依次复制到当前记录,以替换相应的字段值。2数组或内存变量中的数据复制到当前记录【说明】o修改记录前需确定记录指针的位置。o若使用FIELDS子句,则只有中的字段才会被数组元素值替代,若传送备注型字段,还
23、需使用MEMO选项。o内存变量将传送给与它同名的内存变量,若某字段无同名的内存变量,则不对该字段进行数据替换。o若数组元素多于字段数,则多出的数组元素不传送;若数组元素少与于字段数,则多出的字段值不会改变。【例2.34】SCATTER命令使用示例。USE teacher EXCLUSIVECOPY STRUCTURE TO teacher5USE teacher5APPEND BLANKGATHER FROM AAPPEND BLANKGATHER FROM BAPPEND BLANKGATHER FROM MEMVARBROWSE2数组或内存变量中的数据复制到当前记录2.10 表的筛选 在实际应用中,表的记录较多或字段数目较大,处理数据就显得不大方便。Visual FoxPro提供了表的筛选功能,可以只对满足条件的部分记录或部分字段进行操作。挑选出满足条件记录的操作称记录的筛选,挑选出部分字段的操作称字段的筛选。2.10.1 记录的筛选o命令中使用FOR短语例如:LIST FOR LEFT(姓名,2)=张o工作区属性窗口中使用数据筛选功能2.10.2 字段的筛选o命令中使用FIELDS短语例如:LIST FIELDS 姓名,教研室 FOR 性别o工作区属性窗口中使用字段筛选功能一定不要忘记
限制150内