资源描述
VisualFoxPro程序设计教程,计算机教研室,上机操作总结,命令窗口(交互工作方式)每行只能输入一条命令每输入一条命令,必须回车才能执行,且只执行当前行的命令,不执行以前行命令命令窗口中的命令可以重新执行或修改后再执行,方法是将光标放在命令行的任意位置并回车。,X=3.14?VARTYPE(X)X=3.14?VARTYPE(X)X=2008-01-01?VARTYPE(X),DIMNENSIONa(4)a(1)=2storewelltoa(2),a(3)?a(1)?a(2)?a(3)?a(4),第3章自由表的操作,VisualFoxpro中的表的分类:数据库表自由表表文件的扩展名主文件扩展名:.dbf(例如:学生管理.dbf)备注文件扩展名:.fpt,3.1表结构的建立,3.1.1表结构关系(二维)表的构成:表结构表中的数据(记录)建立表结构的五个步骤:1、定义字段名称2、选择数据类型3、确定字段宽度4、决定字段的索引顺序5、当前字段是否允许空(NULL)值,3.1.1表结构概述,1定义字段名称字段名的命名规则是:自由表字段名最长10个字符,数据库表字段名最长128个字符必须以字母或汉字开头、后跟字母、汉字、数字和下划线字段名中不能包含空格同一表内不同字段不能同名表中应有唯一标识各个记录的字段或字段组合(关键字),3.1.1表结构概述,2选择数据类型,C型:1-254位N型:宽度包括小数部分D、T、L、M、G型:固定长度,3.确定字段宽度,3.1.1表结构概述,4决定字段的索引顺序5当前字段是否允许NULL(空)值,3.1.2创建新表,1用表向导创建新表启动表向导的方法:“文件”“新建”“表”“向导”(工具栏)“新建”“表”“向导”“工具”“向导”“表”(项目管理器)“自由表”“新建”“表向导”2用表设计器创建新表启动表设计器的方法:“文件”“新建”“表”“向导”(工具栏)“新建”“表”“向导”(项目管理器)“自由表”“新建”“表向导”命令窗口中输入:CREAT,【例3.1】按表3-1的要求,设计“学生表”的表结构。,3.表设计器创建新表的几点说明在表设计器中进行字段设置时,不要按ENTER键;上下拖动字段左边双向箭头按钮,可改变字段顺序;表设计器的“表”选项卡用于显示该表的统计信息;记录总宽度为表中各字段宽度之和再加1(用于存放删除标记),但若有字段设置了允许空值,要再加1;表设计完成,单击“确定”按钮时,将弹出一个询问:“现在输入记录吗”对话框,可选择是或否。,3.2表操作,3.2.1常用的操作命令命令格式:toprint,3.2.2表的打开与关闭,1打开表打开表的含义:将表从计算机的外存调入内存,以便对表进行各种操作。打开表的方法:方法1:使用项目管理器方法2:使用菜单或工具栏方法3:用USE命令。格式如下:USEEXCLUSIVE|SHAREDEXCLUSIVE指定以独占方式打开表,SHARED指定以共享方式,3.2.2表的打开与关闭,2关闭表关闭表的含义:将表中数据保存到磁盘上,并将表数据从内存中清除。关闭表的方法方法1:新建或打开另一个新表同时,自动关闭旧表。方法2:选择文件菜单下的退出菜单项,通过退出VisualFoxPro系统关闭表。方法3:用命令USE关闭表。格式:USE,3.2.3表与表结构的复制,1结构与数据的同时复制格式:COPYTOFIELDSFOR|WHILE功能:将满足条件的记录按指定结构复制为新的表文件。例如:USE学生表COPYTO学生表1USE学生表1BROWSEcopyto学生表2for身高1.7fields姓名,学生证号,身高USE学生表2BROWSE,3.2.3表与表结构的复制,2只复制表文件结构格式:COPYSTRUCTURETOFIELDS功能:按指定的字段表复制表结构到一个新文件,若不指定字段表,则复制与当前表相同的结构。例如:USE学生表COPYSTRUCTURETO学生FIELDS姓名,学生证号,身高USE学生LISTSTRUCTURE,3.2.3表与表结构的复制,3只复制记录数据格式:COPYTOFIELDSFOR|WHILESDF|DELIMITED功能:按指定格式将表文件的记录复制到文本文件(.TXT),若省略范围、条件和字段名表,则复制所有的记录值。SDF指复制后文本文件中的数据格式为标准格式DELI指复制后文本文件中的数据格式为限定格式例如:USE学生表COPYTO学生3.TXTFIELDS姓名,身高FOR身高1.7deliTYPE学生记录.TXT,3.2.3表与表结构的复制,4复制任何类型的文件格式:COPYFILETO说明:可以是任何类型,指被复制的文件。和的扩展名不能省去。必须处于关闭状态例如:USECOPYFILE学生表.DBFTO学生表3.DBFCOPYFILE学生表.FPTTO学生表3.FPT,3.2.3表与表结构的复制,5记录数据复制生成数组格式:COPYTOARRAY数组名FIELDSFOR|WHILE功能:将记录数据传送到二维数组每个记录对应数组的一行备注和通用型数据不能存储到数组中,数组值为.F.数组不需要提前定义例如:USE学生表COPYTOARRAY学生数组DISPLAYMEMORY,3.2.3表与表结构的复制,6复制生成排序表文件格式:SORTTOON/A|/D/C,字段2/A|/D/C.FIELDSFOR|WHILE功能:按指定字段重新排列记录并生成新文件,原文件不变。说明:排序文件以排序字段值为序,优先按字段1排序,.;/A表示升序,/D表示降序,缺省为升序;/C不区分大小写字母;只允许C,N,D,L四种类型作排序关键字段;若缺省范围和条件,则对全部记录排序。例如:USE学生表SORTTO学生排序表ON身高dFOR性别=”男”,3.2.4向表中添加记录,1向表中添加数据的方法(1)方法1:在创建新表结构,结束退出时立即添加。(2)方法2:打开表后,通过浏览窗口添加。(显示浏览;显示追加方式;表-追加新记录)(3)方法3:打开要添加记录的表,通过命令添加。APPEND命令:可以在浏览或编辑窗口中手工连续添加多条记录。APPENDFROM命令:可将另一表(源表)、文本文件或数组中的数据添加当前表的后面。它有3种命令格式:,1向表中添加数据的方法,从其它表中添加记录命令:格式:APPENDFROMFIELDSFOR|WHILE功能:从源表中选择满足的记录,并从中选择所需字段值,添加到目前表中。例如:USE学生表APPENDFROMF:xsqk.dbfLIST注意:F盘中事先已经存在了一个xsqk.dbf表。,1向表中添加数据的方法,从文本格式文件中添加记录命令:格式:APPENDFROM文本文件SDF|DELIMITEDFIELDFOR|WHILE功能:将文本文件中满足要求的记录添加到当前表中SDF:要求文本文件中的数据为标准格式DELIMITED:要求源文件中的数据为限定格式例如:USE学生表COPYTOXS.TXTSDFFOR身高1.65COPYSTRUCTO学生表结构USE学生表结构APPENDFROMXS.TXTSDFLIST,1向表中添加数据的方法,从数据组中添加记录命令:格式:APPENDFROMARRAY数组名FIELDFOR|WHILE功能:将数组中每一行做为一个记录,将各项数据添加到当前表中。例如:USE学生表COPYTOARRAYARFOR身高=1.65COPYSTRUTO学生数组USE学生数组APPENDFROMARRAYARfield学生证号,姓名LIST,3.2.4向表中添加记录,2向表中输入数据时,应注意的问题(1)在输入新记录时,当输入内容填满一个字段的宽度时,光标会自动跳到下一个字段;内容不满一个字段的宽度时,可用Tab键或回车键将光标移到下一字段。(2)对于定义为日期型的字段,输入数据时,只需按月份、日期、年份各两位数字输入,其中的分隔符“/”不必输入。输入的年月日必须是有效数字,否则系统将提示日期无效。(3)定义为数值型并具有小数位的字段,在输入数据时,只要确定整数位数后,可不输入小数点。(4)定义为逻辑型的字段,输入数据时,只需输入“T”或“F”且不分大小写,不需要输入逻辑数据的点定界符。(5)空值的输入方法:CTRL+0,(6)备注型和通用型字段内容的输入:字段说明:这两个字段数据不能在浏览窗口中直接输入,因为记录数据是保存在另一个文件(.fpt)中,表中只有4字节,存储一个指向ftp文件的指针备注字段:双击浏览窗口的备注字段,或单击后按组合键ctrl+pageup、ctrl+pagedown、ctrl+home均进入文本编辑器,编辑后关闭编辑器(ctrl+w)通用字段:双击浏览窗口的通用字段,然后选择“编辑”菜单“插入对象”命令,插入或生成一个对象。要删除通用型字段的内容,按ctrl+X,3.2.4向表中添加记录,3.2.5浏览表中的数据,1浏览窗口和编辑窗口(显示-浏览/编辑)2调整浏览窗口(行高、列宽、移动列)3拆分浏览窗口4使用Browse命令浏览数据BROWSEEIELDS字段列表FOR5数据的选择显示LIST|DISPLAYFIELDSFORWHILETOPRINTERTOFILEOFF,3.2.6编辑表结构,1用表设计器修改表结构(1)打开表设计器打开表,在显示菜单中选择“表设计器”选项打开表,输入MODIFYSTRUCTURE命令(2)修改表的结构2修改表结构对表中数据的影响(1)若被删除字段是被索引的字段,则该索引也被删除。(2)若重命名字段是被索引的字段,则索引表达式也要修改。(3)修改字段的宽度和小数位数,可能导致数据的丢失。(4)修改字段的类型,可能导致丢失数据。,3.2.7在表中移动记录指针,记录指针的概念VF每打开一个表,系统自动为其设置一个记录指针,该指针总是指向其中的一个记录,称为当前记录。表刚打开时,指针指向第一个记录,记录指针可随着表的操作进行移动,也可用命令来移动记录指针。文件的逻辑结构指针的移动1.在浏览窗口中移动2.命令方法移动3.菜单方法移动指针4.与指针及表相关的测试函数,TOP,BOF,bottom,EOF,3.2.7在表中移动记录指针,1在浏览窗口中移动指针鼠标点击记录或用上下光标移动键、移动记录指针。2命令方法移动指针(1)GO命令(指针绝对定位命令)格式1:GOTOTOPGOTOBOTTOM格式2:GOTO(2)SKIP命令格式:SKIP功能:记录指针相对当前记录进行定位说明:的值可以是正或负的整数缺省时表示1,(3)以下命令执行后,记录指针也会移动:LISTLISTNEXTNLISTRESTLISTRECORDNDISPLAYLOCATEREPLACE,3.2.7在表中移动记录指针,3菜单方法移动指针打开“浏览”,选择“表”菜单下的转到记录菜单项,在子菜单中可选择:第一个最后一个下一个上一个记录号定位,3.2.7在表中移动记录指针,4与指针及表相关的测试函数(1)文件结束测试函数EOF格式:EOF()功能:测试指定的表文件记录指针是否指向文件结束位置(表文件尾),若是,函数值为(.T.),否则为(.F.)例如:USE学生表GOBOTTOM如果指针指向文件首,函数值为1。例如:USE学生表&假设表中有10个记录?RECNO()&主屏幕显示:1?SKIP-1?RECNO()&主屏幕显示:1GOBOTTOM?RECNO()&主屏幕显示:10SKIP?RECNO()&主屏幕显示:11,4与指针及表相关的测试函数,(4)记录数测试函数RECCOUNT格式:RECCOUNT()功能:测试指定工作区中数据表的记录个数,无参数时,测试当前工作区中数据表中的记录个数;若没有打开的数据表文件,则返回值为0。例如:USE学生表&假设表中有10个记录?RECCOUNT()&主屏幕显示:10,4与指针及表相关的测试函数,(5)记录大小测试函数RECSIZE格式:RECSIZE(|)功能:测试指定的工作区中数据表记录的长度。例如:USE学生表?RECSIZE(),3.2.8编辑表中的数据,1在编辑和浏览窗口中修改记录(BROWSE、EDIT)打开编辑窗口或浏览窗口,用光标定位即可修改数据。2通过命令方式成批替换字段的内容格式:REPLACE字段1WITHADDITIVE,字段2WITHADDITIVE.FOR|WHILE范围功能:用表达式的值成批替换满足条件记录中指定字段值说明:(1)若无范围和条件,则只替换当前记录;(2)表达式值的类型应与对应的字段类型一致;(3)ADDITIVE子句只用于备注型字段,表示在原来备注内容后面添加新的内容,否则替换原来内容。,例USE成绩表LISTREPLACE总分WITH0ALLLISTREPLACE总分WITH平时成绩*0.3+期末成绩*0.7ALLLIST,问题:如何将总分化为整数?答案:REPLACE总分WITHROUND(平时成绩*0.3+期末成绩*0.7,0)ALL,3.2.8编辑表中的数据,3删除记录(1)添加删除标记(逻辑删除):使用菜单方法使用逻辑删除命令DELETEFOR|WHILE(2)彻底删除记录(物理删除):从表菜单选择“彻底删除”,删除带删除标记记录。彻底删除带删除标记的记录:PACK物理删除表中的全部记录:ZAP,3.2.8编辑表中的数据,4.恢复记录恢复记录是指恢复已经被逻辑删除的记录。(1)用表的菜单中的“恢复记录”选项去掉记录的删除标记。(2)采用命令方式恢复记录。RECALLFOR|WHILE说明:没有参数的recall命令只恢复当前记录例如:USE学生表DELEFOR身高1.7LISTRECALLFOR身高1.7LIST,1设置过滤器(1)菜单方法:“表”菜单-“属性”-“数据过滤器”(2)命令方法:SETFILTERTO例如:USE学生表SETFILTERTO性别=女AND党员=.T.LISTSETFILTERTO&取消设置过滤器LIST,3.2.9定制表,3.2.9定制表,2设置字段表(1)菜单方法:“表”菜单-“属性”-“字段筛选”(2)命令方法格式:SETFIELDSTO,|ALL功能:在内存预设一个“字段表”,只能对预设表中字段操作,可多次使用该命令,向预设表中加入新字段,也可以加入或清除全部字段。举例:use学生表setfieldsto姓名,性别setfieldsto出生日期,身高setfieldsall&所有字段加入预设表setfieldsto&清空预设表说明:恢复对原表操作:SETFIELDSOFF(默认为ON),3.2.10有关表的其它操作命令,1计数命令格式:COUNTFORWHILETO功能:计算指定打开表中指定范围内满足条件的记录数。例如:USE学生表COUNTFOR性别=“男”TOLS?LS,2求和命令格式:SUMFORWHILETO|ARRAY功能:在打开的表中,对的各个表达式分别求和。显示在屏幕上、赋给变量或数组。例如:USE学生表SUM身高FOR性别=“男”TOSG?SG,3求平均值命令格式:AVERAGEFORWHILETO|ARRAY功能:在打开的表中,对中的各个表达式分别求平均值。省略各表达式对所有数值字段求平均值。例如:USE学生表AVERAGE身高FOR性别=”男”TOASG?ASG,4计算命令格式:CALCULATEFORWHILETO|ARRAY功能:在打开的表中,计算中表达式的值。说明:表达式中至少要包含系统规定的几个函数之一。这些函数有AVG(),SUM(),MAX(),MIN()等.例如:USE学生表CALCAVG(身高)TOASG?ASG,5汇总命令格式:TOTALTOONFIELDSFORWHILE功能:在当前表中,分别对值相同的记录的数值型字段值求和,并将结果存入一个新表。一组关键字值相同的记录在新表中产生一个记录,对于非指定字段只将关键字值相同的第一个记录的字段值放入新记录。关键字是指表按该字段做了排序或做了索引,举例:use学生表LISTsortto排序表on身高use排序表LISTtotalto汇总学生表on党员USE汇总学生表LIST,
展开阅读全文