1VisualFoxPro6.0程序设计2学习要点•表的操作表结构、字段的数据类型、创建/打开/关闭表,工作区、数据工作期;•表的修改修改表结构•记录的浏览显示与修改•记录的定位、插入、删除、成批修改第二章表的建立与操作31.VisualFoxPro的命令格式命令动词[表达式表][范围][FOR条件][WHILE条件][TOFILE文件名|TOPRINTER|TO内存变量]说明:(1)命令格式中各符号的含义:命令中的用户定义项[]:可选项,视具体使用要求由用户选择|:由它所分隔的各项中仅选择其一...:表示命令中的一部分可以类似方法重复多次VisualFoxPro命令的格式与书写规则4(2)命令格式中各部分功能①命令动词例如LIST,USE等。②表达式表,由一个或多个逗号分隔。③范围它指定命令可以操作的记录集合。范围可有下列四种选择:ALLNEXTnRECORDnREST5④FOR条件它规定只对满足条件的记录进行操作,如果使用FOR子句VisualFoxPro将记录指针重新指向表文件顶,并且用FOR条件与每条记录进行比较。上例中的FORYEAR(出生日期)=1986子句,表示只选择出生日期为1986年的学生记录进行操作。⑤TOFILE文件名|TOPRINTER|TO内存变量它控制操作结果的输出,TOFILE文件名命令允许结果向文件输出;TOPRINTER命令允许操作结果向打印机输出;TO内存变量命令允许操作结果向内存变量输出。62.VisualFoxPro命令的书写规则(1)命令动词必须写在命令的最前面,而各短语的前后顺序可以任意排列。(2)命令动词与短语之间、短语与短语之间、短语的各部分之间必须用空格分隔开。(3)命令动词、各短语中的保留字及函数名在不至于引起混淆的情况下可以简写为前4个字符,而且英文字母大小写等效。(4)一条命令的长度可达8192个字符。当一行写不下时,可在适当位置输入续行符;并按回车键换行,继续输入该命令。72.2表的建立与修改在VisualFoxPro中表的类型表分为:数据库表和自由表两种数据库表是从属于某个数据库的表自由表指的是不属于任何数据库的表.数据库表不仅具有自由表的所有特性,还具有数据库管理的其他特性82.2.1表的建立1、定义二维表名设计表时,首先要给表取名。学生情况表:XSQK.DBF(或学生情况.DBF)92、设计表结构定义表中的字段个数及其属性(字段名、字段类型、字段宽度、小数位数、索引(升序、降序)空值支持(NULL))。字段名学号姓名性别出生日期是否团员入学成绩简历照片字段类型CCCDCCMG宽度106/82103小数位数10利用表设计器创建自由表表设计器用来定义表的结构,操作方法有两种:菜单法和命令法。1、使用菜单打开表设计器‘文件’-‘新建’-‘表’-‘新建文件’-输入表名-‘保存’表设计器窗口,逐一定义字段的属性。完成后单击“确定”按钮,弹出“现在输入数据记录吗?”提示信息框,选择‘是’,可立即向表中输入数据,否则退出表结构的建立。输入完毕,也可按Ctrl+W或Ctrl+End保存,并关闭该窗口。2、使用命令打开表设计器CREATE[表文件名]注:在命令窗口输入命令后,将进入表设计器窗口,其它操作同上。此命令仅适用于新建表!113.用CREATETABLE-SQL命令格式:CREATETABLE|DBF表文件名(字段1字段类型(字段宽度[,小数位数]))[null|notnull][,字段2字段类型(字段宽度[,小数位数])[null|notnull]]]……)例:利用CREATETABLE-SQL命令创建如表2-3所示表文件:借阅.DBF。CREATETABLE借阅(借书证号C(3),总编号C(6),借书日期D)注意:字段名与字段类型之间有空格!12例:在E盘文件夹“MYVFP”中创建一个表文件XSCJ.DBF,表结构为:栏目学号姓名出生日期英语计算机总分备注字段名XHXMCSRQYYJSJZFBZ类型CCDNNNM宽度86556小数位数111Null支持√操作:CREATEdbfE:\MYVFP\xscj(xhc(8),xmc(6),;csrqd,yyn(5,1),jsjn(5,1),zfn(6,1),bzmnull)开始第3步:填写二维表的内容续行符;132.2.2向表中加入记录1、创建表时立即输入数据定义表结构中所有字段的属性后,按‘确定’按钮,弹出提示信息对话框,选择‘是’,可立即进入记录编辑窗口,进行表中数据的输入。输入完毕,按Ctrl+W或Ctrl+End保存。2、浏览方式下输入数据打开浏览窗口:打开要输入数据的表-BROWSE追加方式输入数据:进入‘浏览’或‘编辑’窗口,‘显示’-‘追加方式’向表中输入记录或修改表中的记录。或‘表’-‘追加新记录’(ctrl+Y)147、备注型数据的输入打开欲输入数据的表,进入表‘编辑’窗口或‘浏览’窗口,将鼠标指针移到备注型字段下双击,即可进入备注字段的编辑窗口,用户可在此窗口输入或修改备注型数据。8、通用型数据的输入打开表-进入‘编辑’或‘浏览’窗口-将鼠标指针移到通用型字段下双击,即可进入该字段的数据编辑窗口。再打开‘编辑’菜单,选择‘插入对象’,在它的窗口中,选择插入对象类型。弹出“插入对象”对话框。选择“新建”或“由文件创建”“新建”选择“对象类型”由文件创建时输入对象文件名注:备注型字段和通用型字段保存在*.FPT文件中。152.2.3表结构的修改利用表设计器修改表结构步骤(1)打开一个要修改其结构的表:‘文件’-‘打开’-在打开的对话框中选择要打开的表-单击‘确定’(2)打开“表设计器”:‘显示’-‘表设计器’(3)修改表结构:同创建表方法,修改字段属性,也可以通过‘插入’,‘删除’按钮,增加或删除字段来对表结构进行修改。(4)保存:Ctrl+W注:修改表结构的命令:modistru161.表的打开和关闭P46打开:方法1:“文件”-打开-选择“表”-选择要打开的表-单击“确定”方法2:单击工具栏“打开”按钮,以后同上。方法3:命令方式USE表文件名[IN工作区]关闭:方法1:使用“数据工作期”窗口“关闭”按钮。方法2:命令方式USE或CLOSEALL172.工作区P80工作区是用以标识一张打开的表的区域。工作区号VisualFoxPro提供了32767个工作区,区号从1~32767。前10个可以用字母A~J来表示工作区别名。注:一个工作区只能打开一张表。刚启动VFP后,系统默认当前工作区号为1。选择工作区SELECT工作区号|别名如:选择3号工作区,操作为SELECT3或SELECTC注:SELECT0选择未被使用的最小工作区183.数据工作期窗口数据工作期是当前数据动态工作环境的一种表示。打开:“窗口”-数据工作期关闭:单击右上角“关闭”按钮;双击左上角控制菜单按钮。Ctrl+F4194.表的独占与共享共享:网络上多个用户在同一时刻访问同一张表。一张表同时被多个用户访问称为共享使用。独占:一张表只能被一个用户打开称为独占使用。系统默认表以独占方式使用。独占与共享方式设置:方法1:工具—选项方法2:命令方式共享:SETEXCLUSIVEOFF或USE表文件SHARED独占:SETEXCLUSIVEON或USE表文件EXCLUSIVE202.2.4数据的显示与浏览一、显示记录命令:LIST|DISPLAY[范围][FIELDS字段表][FOR条件][OFF]各选项的作用如下:(1)范围--选择:确定所要显示记录的范围,缺省时,DISPLAY命令默认值为当前记录,LIST命令默认为ALL。21范围有四种情况:ALL:所有记录NEXTN:从当前记录起的N个记录RECORDN:第N个记录REST:从当前记录起到最后一个记录止的所有记录22(2)FIELDS字段名表--投影,显示指定的字段,缺省显示所有的字段的内容。注:对于备注型字段,则必须指明才能显示其内容,否则仅显示Memo/memo。(3)FOR|WHILE条件:确定显示记录的条件,只显示符合条件的记录。23(4)OFF:使显示输出的结果中不显示记录号列。DISPLAYALL与LIST作用相同,只是显示结果的方式有点区别:LIST命令滚屏显示;DISPLAYALL在显示满一屏幕时会暂停,等用户按任意键后再继续显示。(分屏显示)241、显示所有的记录。USEXSDALIST|dispall|LISTALL2、显示所有男生LIST|DISPALLFOR性别=‘男’3、显示所有77以后出生的人LISTFOR出生日期={^1978/01/01}4、显示住校的人LISTALLFOR住校否=.T.或LISTALLFOR住校否例:假若数据库XSDA.DBF中有30条记录255、显示住校的男生LISTALLFOR住校否=.T.AND性别=‘男’6、分屏显示所有人的学号,姓名和住校否DISPALLFIELDS学号,姓名,住校否7.显示从5号记录开始的连续的5条记录go5&&指针定位至5号记录listnext58.显示第7号记录listrecord7(提示:listrest&&显示从7号记录开始至最后的记录)26二、用浏览方式显示和修改数据进入浏览’方式窗口:1.菜单法打开表文件—‘显示’—‘浏览’2.命令方式打开表‘浏览’窗口:BROWSE例:(操作演示)272.3.1记录的定位与查找在每个表文件中都有一个记录指针,用来指示表文件的当前记录。表文件中的每个记录均有一个序号,这个序号叫作记录号。表刚打开时,记录指针指向1号记录。记录定位,就是移动记录指针,使它指向所需要的记录。2.3表的维护命令28记录定位的命令方式(1)绝对定位GOTOP|GOBOTTOM|GON指针分别指向:首记录末记录第N条记录(2)相对定位SKIP[±N]指针向前或向后移动N条记录。注:SKIP表示向后移动一条记录。例:(操作演示)29文件头(包含表结构等信息)首记录(TOP)..第n条记录(RECORDn)..末记录(BOTTOM)文件尾定位到首记录:GOTOP定位到第N号记录:GOn定位到末记录:GOBOTTOM定位到文件首:SKIP-1定位到文件尾:SKIP记录开始标志记录结束标志30表文件函数函数名格式记录号函数RECNO([数值表达式])测试文件头函数BOF([数值表达式])测试文件尾函数EOF([数值表达式])查询测试函数FOUND([数值表达式])统计记录数函数RECCOUNT()31当前记录号函数格式:RECNO([数值表达式])功能:返回指定工作区当前的记录指针的位置。结果是一个数值。工作区号由数值表达式的值指定,若省略,则指当前工作区。若指定工作区无表文件打开,则返回0;若记录指针在文件头,则返回1;若在文件尾,则返回“总记录个数+1”。32测试文件头函数格式:BOF([数值表达式])功能:测试指定工作区的记录指针是否在文件头。若在,返回.T.,否则返回.F.。测试文件尾函数格式:EOF([数值表达式])功能:测试指定工作区的记录指针是否在文件尾。若在,返回.T.,否则返回.F.。统计记录数函数格式:RECCOUNT()功能:返回表的记录数。33例:若XSDA.DBF中有10条记录。---返回值:1---返回值:.F.---返回值:.T.---返回值:1---返回值:.T.---返回值:1---返回值:.F.---返回值:.T.---返回值:11?BOF()?RECNO()SKIP-100?BOF()?RECNO()GOBOTTOM?EOF()SKIP100?EOF()?RECNO()SKIP-1?BOF()USEXSDA?RECNO()343.2.4修改表记录1.菜单法:操作步骤如下:(1)打开要修改数据的表。(2)‘表’-’替换字段’,此时显示替换字段对话框。(3)单击字段