VFP第3章数据库和数据表的基本操作_第1页
VFP第3章数据库和数据表的基本操作_第2页
VFP第3章数据库和数据表的基本操作_第3页
VFP第3章数据库和数据表的基本操作_第4页
VFP第3章数据库和数据表的基本操作_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

VisualFoxPro程序设计(第三版)第3章数据库和数据表的基本操作VisualFoxPro的基本操作3.1VisualFoxPro中的数据库3.2VisualFoxPro中的数据表3.3数据表的基本操作3.4表记录的高级操作3.5多工作区操作3.63.1VisualFoxPro的基本操作操作VisualFoxPro与前期的数据库产品一样,都可以支持两类不同的基本操作方式,即交互式操作方式和程序操作方式。1.交互式方式

VisualFoxPro的交互式操作方式有命令执行与界面操作两种类型。命令执行方式与界面操作方式是一致的。许多的命令功能都可以通过相应的菜单选择来实现。事实上,当用户选择了某一菜单命令并执行它时,在命令窗口中便会自动显示与其对应的键盘命令,就好像用户通过键盘输入了该命令一样,所以在VisualFoxPro中,用户可以任意选用或交替使用这两种方法。3.1.1VisualFoxPro的基本操作方式2.程序操作方式程序执行方式就是将一系列的语句或命令存储在一个文件中而成为一个程序文件(.PRG),通过运行该程序文件,完成某些特殊的功能。程序操作方式不仅运行效率高,而且可重复执行。

可见,交互式操作方法虽然方便、灵活,但是当用户需要反复执行某些相同的命令序列,或处理较复杂的问题时就不能发挥计算机高速度、自动化运行的优势。为此,VisualFoxPro提供了程序执行方式来解决该问题。3.1.2命令操作的基本要求1.命令的一般格式为了熟练掌握各种命令的使用方法,首先要了解命令的语法规则,以便读者正确地使用命令。命令的一般格式如下所示:<命令关键字>[<范围>][<表达式表>];[FOR<条件>][WHILE<条件>]2.命令书写规则(1)文件命名方法文件名由主文件名和扩展名两部分组成。主文件名由字符组成,字符可以包括字母、数字、下划线、连字符等。扩展名由“.”加3个字母组成,表示文件类型。(2)本书命令、函数符号的约定VisualFoxPro的命令在书写时,为了便于叙述,常引入下列几个符号,其约定如下。l

[]:其中的内容是可选项,不选时系统自动取默认值。但在程序输入时或在命令窗口中输入时均不书写这对“[]”,而只写其中参数的内容。l

<>:其中的内容是用户的选择项,通常有多种可能供用户选择一种。若<>不在[]内,则为必选项,即用户必须选择多种可能中的一种;若<>在[]内时,当不选“[]”中的内容时,其“<>”中的内容也不能选,而当选择“[]”中的内容时,其“[]”中的“<>”内的内容就为必选项。但在程序输入时或在命令窗口中输入时均不书写这对“[<>]”,而只写其中的参数的内容。l

/:为二选一表示符。要求用户从本符号的左右两项中选择一顶。同样,在命令或函数的输入中,“/”线也不要写。l

...:省略符。它表示在一个命令或函数表达式中,某一部分可以按同一方式重复。从上述命令格式可以看到,VisualFoxPro命令主要由5个部分组成,各部分功能如下。(1)

命令关键字:是一个英文动词,是VisualFoxPro的命令名,用来指定计算机要完成的操作。例如STORE、LIST、COPYTO等都是命令关键字,分别表示定义内存变量、显示表的记录、复制表的内。(2)表达式表:表达式表子句是由数据和运算符一起构成的有意义的式子,各表达式表是一个或多个由逗号分隔开的表达式。该表达式在一般情况下由表中字段名构成。表达式除了可以是字段、字段名表外,还可以加进运算符,如“单价*1.05”也是一个表达式。3.命令格式的说明(3)范围子句:范围子句用来指定命令可以操作的有效记录范围。范围可有下列四种选择:lALL:指当前表中的全部记录;l

NEXT<n>:指从当前记录开始的连续N条记录;l

RECORD<n>:指当前表中的第N号记录;l

REST:指从当前记录开始到最后一条记录为止的所有记录;(4)FOR<条件>子句:对满足条件的记录进行操作,如果使用FOR子句,VPF6.0将记录指针重新指向表文件顶部,系统会用FOR条件与每条记录进行比较。(5)

WHILE<条件>子句:在表文件中,从当前记录开始,按记录顺序从上向下处理,一旦遇到不满足条件的记录,就停止搜索并结束该命令的执行。

FOR和WHILE都是条件子句,但在默认范围选择项条件下主要有两点不同:

FOR子句是从首记录开始判断逻辑表达式是真还是假,而WHILE子句则从当前记录起判断条件是否成立;

FOR子句对逻辑表达式取真值的所有记录进行规则操作,不管这些记录是呈连续排列或是间断排列。而WHILE子句是从当前记录开始,只要遇到其逻辑表达式取假值就停止操作,不管其后是否有满足条件的记录。3.1.3命令的输入与编辑1.命令的输入在VisualFoxPro命令窗口中按命令的语法规则键入需要操作的命令,最后按下Enter键,就可以执行该命令了。2.命令的编辑命令窗口是一个可以编辑的窗口,可以在命令窗口中进行各种编辑操作,如插入、删除、拷贝、剪切等,或者用光标和滚动条在整个命令窗口中上下移动。这些特性对命令输入起了很大的帮助作用。比如要键入一个和上一次命令相似的命令,那么只需将光标移动到上一条命令上,然后输入或删除命令的不同部分,最后按下Enter键,就可以执行这条新命令了。3.输入命令时的注意事项

(1)命令关键字不能省略,必须是命令行的第一个英文动词,其它子句可以以任意顺序跟在其后,命令动词与各子句之间用一个或多个空格隔开,如:

EDITFIELDS学号,姓名,班级ALLFOR高等数学>=85EDITALLFIELDS学号,姓名,班级FOR高等数学>=85EDITFOR高等数学>=85ALLFIELDS学号,姓名,班级(2)命令动词和VISUALFOXPRO保留字一般可用前4个或4个以上字母简写。如:

DISPLAYMEMORYDISPLMEMODISPMEMO(3)当表达式中,由FIELDS引导字段名表时,字段名表中的各字段间必须用逗号分割,但逗号“,”必须是在英文状态下输入的西文逗号“,”。

(4)命令、关键字、变量名和文件名中的字母既可以大写也可以小写,还可以大写、小写混合,三者等效。(5)虽然命令窗口可以上下左右滚动,也可以在一行把命令输完,但屏幕的左右滚动会很不方便,这时不妨尝试一下续行操作。输入命令时可以在命令的关键字或子句之间加分号(;),然后按回车键,再在下一行输入命令的剩余部分,这样就可以把一条长命令分成好多行来写。进行续行操作,应注意以下几点:

命令的最后一行不能以分号结尾。如:

REPLACEALL实发工资WITH(基本工资+职务津贴+奖金-养老保险)*1.03FOR工龄>20

当一条命令被分成多行输入时,如果想同时使用&&命令加入一些注释,此时注释不能出现在分号之后,而只能将注释放在命令的最后一行的后面。

当准备执行一个被分成多行的命令时,可将光标放在该命令的任意一行上,然后按下Enter键。4.设置命令格式(1)设置字体在进行命令输入的过程中,可以通过改变命令窗口中的字体大小、行间距等清晰地显示每一条命令。用户可以使用“格式”菜单中的“字体”选项改变字体的大小。(2)设置行缩进行缩进可以极大地改善被分成多行的命令的可读性。在命令窗口中为产生缩进效果,在输入命令前先按Tab键,当然也有可能需要多按几次TAB键,以产生更多的行缩进,这样接下来的行就自动产生相同的缩进。一旦在命令窗口中加入一个行缩进,那么接下来的行就可自动产生相同的缩进,不过此时需要按Ctrl+Enter将光标移到下一行,而不能用Enter键。(3)出错处理在命令窗口输入命令时,会出现一些输入错误,在没发现之前按下回车键之后,系统会给出一个简单的提示。3.2VisualFoxPro中的数据库如果想把多个表联系起来,就一定要建立数据库。只有把这些有关系的表存放在同一个数据库中,确定它们的关联关系,数据库中的数据才能被更充分地利用。数据库文件扩展名为:.dbc利用“数据库设计器”建立数据库,操作方法是:在VisualFoxPro系统主菜单下,进入“数据库设计”窗口,然后打开“数据库”菜单,对数据库进行各种操作或单击鼠标右键,弹出“数据库”快捷菜单,对数据库进行各种操作。还可以通过在“项目管理器”中创建数据库;由文件菜单创建数据库;通过命令建立数据库。3.2.1创建数据库3.2.2数据库的维护1.数据库的打开和关闭

(1)

由文件菜单打开和关闭数据库打开一个已存在的数据库,操作方法是:打开“文件”菜单,选择“打开”,在“打开”窗口,在文件类型下拉框内,选择数据库类型,然后输入要打开的数据库名,再按“确定”按钮,进入“数据库设计器”窗口。

(2)

通过命令对数据库进行操作

l

打开一个数据库

【格式】OPENDATABASE<数据库文件名>|?【功能】打开一个数据库。

【举例】在当前目录下打开“教职工”数据库。

opendatabaseD:\LIULI\教职工

修改一个数据库【格式】MODIFYDATABASE<数据库文件名>|?【功能】修改编辑一个数据库。【举例】修改并编辑“教职工”数据库。

MODIdataD:\LIULI\教职工

删除一个数据库【格式】DELETEDATABASE<数据库文件名>|?【功能】删除一个数据库。【举例】删除指定路径D:\LIULI下的“教职工”数据库。

DELEdataD:\LIULI\教职工2.在数据库中添加表有了数据库文件,就可以向数据库添加表了。通常数据表只能属于一个数据库文件,如果你想向当前数据库中添加的表已被添加到了别的数据库中,在加入你所建立的数据库之前,必须要从其它数据库中移去后才能添加到你的数据库中。向数据库添加数据表,操作方法是:打开数据库在“数据库设计器”窗口,单击鼠标右键,弹出“数据库”快捷菜单,选择添加表;在“打开”窗口,选择要添加的表,返回“数据库设计器”窗口;重复操作可以将多个表添加到数据库中。从数据库中移去或删除表,主要有以下两种方式:在“项目管理器”的“数据”选项卡中,选择“数据库”下方“表”中的“教师基本情况表”,然后单击“移去”按钮,在弹出的对话框中,选择“移去”或“删除”。在“数据库设计器”中的预删除的表上单击鼠标右键,在弹出的快捷菜单中选择“删除”选项,或单击“数据库设计器”工具栏上的“移去表”按钮。也可将预添加的表文件从数据库中“移去”或“删除”。3.在数据库中移去/删除表1.数据库与表的关系数据表是存储记录数据的文件,是关系型数据库管理系统中处理数据的基本单元数据表是由一组相关的数据按行和列排列的二维表格。表文件扩展名为.DBF。类型:自由表:不包含于任何数据库数据库表:包含于某个数据库(两者关系)相关概念:字段,字段名,记录,数据库(.DBC)2.字段的命名(P57)3.字段的数据类型(P57)3.3VisualFoxPro中的数据表3.3.1数据表的概念数据库表包含许多自由表没有的属性数据库表和自由表可以相互转换自由表添加到数据库中成为数据库表数据库表移出数据库成为自由表一个表只能属于一个数据库如果要将表从一个数据库转到另一个数据库中,必须先将它移出前一个数据库,才能加入后一个数据库。※自由表和数据库表的关系教师档案表示例10个字段,字段名分别为:编号,姓名等n条记录12个字段值编号姓名性别民族出生日期职称工作部门工资照片备注25祁月红女满族1980-2-18教授民政系2243.56GenMemo26杨晓明男汉族1959-8-25助教民政系4423.65GenMemo27江林华女汉族1980-11-12副教授民政系2134.32GenMemo28成燕燕女汉族1962-1-6讲师民政系3354.45GenMemo………………………3.3.2创建表结构“项目管理器/数据”“文件/新建/表/表向导”“文件/新建/表/新建文件”命令:CREATE[<表名>]可任意定义为数据库表或自由表若当前某数据库为打开状态,则创建的为数据库表,否则为自由表1.创建表的结构创建表结构的几点说明字段名以字母或汉字开头,由字母,数字,下划线和汉字组成字段类型根据具体情况而定,字段值与字段类型要匹配若为字段添加索引,在索引列中选择一种排序方式字段的NULL列有一个钩,表示该字段可以接受NULL值在项目管理器的“数据”选项卡中,打开数据库选择数据库下的表,单击“添加”,添加为数据库表选择自由表,单击“添加”,添加为自由表要添加的表必须具备下列条件该表是一个有效的.DBF文件表不允许与打开的数据库中已有的表同名表不能同时放在另一个数据库中要加入表的数据库必须具备下列条件必须以独占方式打开。要想独占地打开一个数据库,在使用OPENDATABASE命令时加入EXCLUSIVE子句2.添加数据表到项目中3.修改表结构

当建立了数据表结构之后,如果发现表结构有问题,可以利用表设计器来修改。

(1)修改字段(P59)

(2)添加/删除字段(P59)(3)调整字段顺序(P59)4.设置字段属性(有补充)对字段加以注释,以提醒自己或其它用户,清楚地掌握字段的属性、意义及特殊用途等对字段加以注释(1)为字段输入注释(2)设置字段的有效性规则有效性规则和有效性说明点击“字段有效性”中“规则”框的三点按钮…,可在表达式生成器中设置字段的格式对工资字段设置规则违反规则的出错信息(3)设置字段显示设置字段标题系统默认,表的标题显示的是字段名。字段名的最大长度只有10个字符长,在进行浏览时,如果用户不进行字段标题的设置,有时难以概括清楚该名下数据的属性;为了在显示表中数据时浏览的清晰、方便,用户可以自定义字段标题。标题的长度可达128个字符例,打开学生选课数据库|打开学生表|打开“显示”菜单|选择“表设计器”,选定需要指定标题的字段,在标题框中对标题进行设置对学号字段设置标题(4)设置字段的数据输入设置默认字段值为了提高表中数据输入的速度和准确性,设置字段数据的默认值时,注意字段的类型;字符型数据要加定界符“”,日期型数据要用到字符日期转换函数等对日期时间设置默认值为提高表中数据输入的速度和准确性,除了定义字段的默认值外,还可以定义字段格式和掩码。如,学号字段只接受数字字符对学号字段设置输入掩码(5)设置字段的格式和掩码格式掩码中可用的功能符和格式符符号功能功能符A只能输入字母D日期型,只能使用系统设定格式L将数值前导的零显示出来M允许多项设置R显示文本框的掩码格式T禁止在字符串的前后输入空格!小写字母转换为大写字母格式符X可输入任何字符9可输入数字和正负号#可输入数字、空格和正负号$在某一固定位置显示当前货币符号$$显示的货币符号与数值连在一起*值的左侧显示“*”号.指定小数点的位置,小数点左部的整数部分按每三位用“,”分隔开1.记录的输入界面立即输入:创建完表结构后,在输入数据记录对话框中选择“是”,如下图示之后输入:打开表,选择“显示/浏览”,选择“显示/追加方式”选择“是”,立即输入记录3.3.3输入数据记录2.输入记录(1)各种类型字段记录的输入①输入字符型字段数据时,可按其字段属性的要求,输入字符或汉字即可。②输入数值型、货币型、浮点型、双精度型和整型字段数据时,应采用十进制日常表示法输入。如果输入数据太大或太小,超出了定义的字段宽度所能表示的范围,则显示为若干个“*”号。③输入备注型字段数据时,双击memo字段(或按【Ctrl+PgDn】组合键),弹出编辑窗口,在该窗口输入相应的数据,数据输入完毕后单击编辑窗口右上角的关闭按钮(或按【Ctrl+W】组合键),结束对备注型字段的编辑。此时可以看到memo已经变成了Memo了。当在编辑过程中想放弃输入的内容,可以按【Esc】键,撤销刚才的操作。④输入通用型字段数据时。双击gen字段(或按【Ctrl+PgDn】组合键),弹出编辑窗口,选择“编辑”|“插入对象”命令,在弹出的对话框中选择预插入的文件,单击“确定”按钮。单击通用型字段编辑窗口的关闭按钮,结束对通用型字段的编辑。此时可以看到gen已经变成了Gen。⑤日期型字段以及日期时间型字段中,日期的输入格式可用SETDATE命令进行设置,默认为美国日期格式(月/日/年,即MM/DD/YY)。⑥如果某字段允许空值(NULL值),就可以使用【Ctrl+0】组合键向字段中输入NULL值。编辑状态下的功能键及其作用如表3-3所示。(2)输入记录数据时应注意以下几点:①若输入的数据已填满高亮区域,光标将自动移到下一字段;若输入的数据长度不足字段宽度,须按【Entet】键将光标移到下一字段。特别地,输入的数据必须与字段类型一致,否则系统将拒绝接收。②逻辑型字段,输入T或Y表示逻辑“真”,输入F或N表示逻辑“假”。③日期型字段,该数据须与系统的日期格式相一致。默认时,系统定义为美国日期格式:“MM/DD/YY”,即为“月/日/年”格式。日期格式可由SETDATE命令进行设置或在工具菜单中的“选项”项目中设置。④备注型字段和通用型字段,它们的值将在一个专门的编辑窗口中输入并编辑。处理结束后,关闭此窗口,系统自动将其内容存入与表文件名相同的.fpt的备注文件中。(3)编辑备注、通用型字段时,编辑窗口的操作方法如下:①光标定位memo字段处,双击鼠标(或光标定位memo处,按【Ctrl+PgDn】组合键,或【Ctrl+Home】组合键),进入备注型字段文本编辑状态,如图3-8所示。通用型字段的操作相同。②输入、编辑结束后,按【Ctrl+W】组合键,将输入的数据保存并退出该编辑窗口,(或者单击编辑窗口的“关闭”按钮,VisualFoxPro会自动将修改后的数据保存)返回到数据输入的正常状态;按【Ctrl+Q】组合键或【Esc】键则清除当前输入的信息,返回到数据输入的正常状态。③通用型字段存储的是多媒体数据,无法由VisualFoxPro系统本身建立,必须依靠Windows的其他应用程序提供(如画笔、Word和Excel等应用程序)。因此,通用型字段数据的输入,要在应用程序中建立好后,通过VisualFoxPro的“编辑”菜单中的“粘贴”或“插入”命令来完成。(4)通过OLE实现数据的嵌入或链接:下面简单介绍通过OLE实现数据的嵌入或链接,进行通用型字段数据的输入操作方法。①进入通用型字段的编辑窗口后,选择“编辑”|“插入对象”命令,弹出如图3-12所示的“插入对象”对话框。②在该对话框中选择一种类型(类型的多少要根据用户使用的当前计算机系统中安装的应用程序的多少决定,但有些类型是Windows操作系统所共有的),在随后打开的图片编辑框内打开所需的图片,并将此图片复制到剪贴板上。③退出图片编辑框,返回到通用字段的编辑框。选择“编辑”|“选择性粘贴”命令,并在随之出现的对话框中单击“粘贴”按钮(实现链接)。。1.打开表的菜单方式单击“文件”菜单中的“打开”选项,打开“打开”对话框。选择将要打开的文件类型、文件名及其路径,然后单击“确定”按钮。也可以用以下几种方式打开数据库即相关表1)打开包含表的数据库,启动数据库设计器2)双击要打开的表3)选择显示模式(1)单击“显示”、“编辑”:编辑该表(edit)以分隔线将每一条记录分割开,字段按纵向排列。(2)单击“显示”、“浏览”:浏览该表(browse)以一行显示一条记录,每一列显示一个字段。3.4数据表的基本操作3.4.1打开和关闭表2.打开、关闭表的命令方式(1)

打开表【格式】USE<表文件名>|?【功能】在当前工作区打开一个表文件。(2)关闭表【格式1】USE【功能】关闭当前工作区中正打开的表文件及其索引文件。【格式2】CLOSE[ALL|DATABASES]【功能】关闭各种类型文件。3.退出VFP系统(1)菜单方式退出VFP系统的方式第2章介绍过,可选用以下任何一种方法退出VFP:

选择“文件”菜单中“退出”菜单项。

鼠标单击VisualFoxPro6.0窗口右上角的关闭按钮。

双击VisualFoxPro6.0主窗口左上角的“控制”菜单按钮。

直接按Alt+F4组合键。(2)命令方式【格式】QUIT【功能】关闭打开的所有文件,退出VFP系统返回到操作系统。3.4.2显示数据命令方式:USE<表名>MODIFYSTRUCTURE菜单方式:1.选定要打开的表:文件/打开

2.打开表设计器:显示/表设计器修改字段内容调整字段顺序添加字段删除字段1.表结构的修改2.表文件结构的显示命令方式【格式】DISPLAY|LISTSTRUCTURE[TOPRINTER|TOFILE<文件名>]【功能】显示表文件的字段结构。3.表文件记录数据的显示(1).最简单的命令形式<命令动词>[<范围>][<FIELDS子句>][<FOR子句>][<WHILE子句>]

描述:在命令窗口中键入一条VFP命令回车后,该命令立即被执行,并将命令结果显示在VFP主窗口中。范围:ALL:对表中全部记录进行操作;NEXT<N>:对从当前记录在内的以下连续N条记录进行操作;RECORD<N>:只对第N条记录进行操作;REST:对从当前记录到文件尾的所有记录进行操作。FIELDS子句:指明当前操作涉及表的哪些字段,字段名间用“,”隔开注意:FOR子句与WHILE子句均指明进行操作的记录的条件。其区别在于:1.范围缺省时,FOR子句默认为ALL;WHILE子句则只从当前记录开始按条件筛选2.当发现一个记录不满足条件时,FOR子句跳过该记录继续检查下去;WHILE子句则只操作到这个不满足条件的记录为止。若两者同时出现,则优先处理WHILE子句举例:LISTNEXT5FIELDS学号,入学成绩FOR入学成绩>=600说明:1.命令以命令动词开头,且命令动词可缺省写为前4个字母2.命令与子句,子句与子句,子句的各部分间须至少以一个空格隔开;且各子句的书写顺序任意(2).查看表数据命令BROWSE[LAST][FIELDS]<字段名表>[FOR<条件>][FREEZE<字段名>][LOCK<数值表达式>]功能:浏览或编辑表中数据参数描述:FREEZE<字段名>:定义唯一允许修改的字段LOCK<数值表达式>:当水平方向翻动屏幕时,屏幕左边连续出现不参加滚动的字段数举例:显示教师档案表中所有记录的编号,姓名和职称。

USE教师档案表

BROWFIELDS学号,姓名,职称举例:显示教师档案表中工资>=3000元的教师记录

USE教师档案表

LISTFOR工资>=3000LIST|DISPLAY[<范围>][FIELDS<字段名表>][FOR/WHILE<条件>][TOPRINT][OFF]

功能:选择输出表文件中记录数据.也可用于显示表达式的值说明:LIST与DISPLAY的区别<范围>与<条件>缺省时,LIST默认为ALL,DISPLAY为当前记录LIST为滚动方式输出,DISPLAY为分屏输出3.4.3追加记录菜单方式:在浏览或编辑窗口环境中选“显示/追加方式”,可自动在尾部追加N条记录选“表/追加新记录”,只允许添加一条记录选“表/追加记录”,从选定文件向当前表添加多条记录格式一:APPEND[BLANK]格式二:APPENDFROM<文件名>|?[FIELDS<字段名表];

[FOR<条件>][SDF]格式三:INSERTINTO<表名>[(字段1[,字段2,…])]VALUE[(表达式1[,表达式2,…])];格式四:INSERT[BLANK][BEFORE]命令方式:说明:APPEND相当于:菜单方式1;APPENDBLANK相当于:菜单方式2;命令方式的格式二相当于:菜单方式3;在APPENDFORM命令中,是否使用SDF子句,要根据文本文件中的数据格式来确定。命令方式的格式四:用于在当前记录之前/后插入一条新记录3.4.4记录的删除、恢复与修改可在“浏览”或“编辑”窗口中删除记录点击作删除标记选“表/彻底删除”对打了删除标记的记录作真正删除1.记录的逻辑删除删除标记当再次单击时,为取消标记删除记录分两步进行:第一步将要删除的记录做删除标记,第二步才将记录真正从表中删除。

若要有选择的删除一组记录,可单击“表/删除记录”,填写对话框。例如:可将教师档案表中“入学成绩<600分”的所有记录作删除标记;要作物理删除,再单击“表/彻底删除”。2.记录的恢复(P68)加上逻辑删除标记的记录是可以被恢复的。在数据表浏览窗口中,单击记录的删除标记,即可取消删除标记,黑色的方框此时已消失。要恢复删除的一组记录,或者恢复删除符合条件的多条记录时,可以在系统菜单利用“表”|“恢复记录”命令来实现。该对话框的设置方法与上述的“删除”对话框操作完全相同,输入设置条件后单击“恢复记录”按钮。

3.删除、恢复记录的命令方式格式:DELETE[<范围>][FOR<条件>][WHILE<条件>]

格式:PACK[DBF][MEMO]

格式:RECALL[<范围>][FOR<条件>][WHILE<条件>]

格式:ZAP

(1)逻辑删除命令(2).取消删除标记命令(3).物理删除命令(4).删除全部记录命令ZAP命令与DELETEALL和PACK两条命令执行的结果相同,区别在于ZAP直接执行物理删除。【例】Use教师档案表

Deletenext6&&教师档案表上1到6条记录加删除标记

ListRecallfor性别=‘男’

&&取消性别为男的记录的删除标记GOTO5Recall&&取消第5条记录的删除标记Pack&&将带有删除标记的记录从表中删除Zap&&将所有记录从表中删除4.修改记录(P69)(1)全屏幕编辑命令方式【格式1】CHANGE/EDIT[FIELDS<字段名表>][<范围>][FOR<条件>][WHILE<条件>]【格式2】BROWSE[FIELDS<字段名表>][FOR<条件>]【功能】进入全屏幕编辑窗口,显示并编辑当前表文件中指定记录和字段的内容。(2)自动替换命令方式【格式】REPLACE[<范围>]<字段名1>WITH<表达式1>[ADDITIVE][,<字段名2>WITH<表达式2>[ADDITIVE]…][FOR<条件>][WHILE<条件>]【功能】用指定<表达式>的值替换当前表中指定范围内满足条件的记录中指定<字段>的值。3.4.5表的复制【格式】COPYTO<文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]1.复制任何类型的文件【格式】COPYFILETO<文件名1>TO<文件名1>2.复制表文件【格式】COPYSTRUTO<文件名>[FIELDS<字段名表>]3.复制表的结构【例3.6】将“教师任课表”的全部内容复制成一个新表“教师任课表a”.USE教师任课.dbfcopyto教师任课a.dbfBROWSE

【例3.7】将“教师任课表a”的表结构复制成一个新表“教师任课表b”USE教师任课.dbfcopyto教师任课b.dbfstruUSE教师任课b.dbfBROWSE3.4.6记录的定位浏览窗口中:选择“表/转到记录”指针指向满足条件的第一条记录1.菜单方式格式1:GOTO[RECORD<数值表达式>]/TOP/BOTTOM

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

<数值表达式>命令功能:将记录指针直接定位到指定的记录上。绝对移动(GO)、相对移动(SKIP)、查找定位(LOCATE)(1)绝对移动命令2.命令方式:命令参数描述:<数值表达式>:指定一个物理记录号,记录指针移至该记录上。TOP:将记录指针定位在表的第一个记录上。[BOTTOM]:将记录指针定位在表的最后一个记录上。说明:RECORD可省略。<数值表达式>的值必须大于0,且不大于当前表文件的记录个数。格式:SKIP[<数值表达式>]

功能:将记录指针向前或向后作相对若干条记录的移动。参数描述:<数值表达式>:指定记录指针作相对移动的记录数据。说明:1、移动的记录数等于<数值表达式>的值,其值为正数时,记录指针向下移动,当<数值表达式>是负数时,记录指针向上移动。2、省略选择项<数值表达式>,约定为向下移动一条记录,即SKIP等价于SKIP1。(2)相对移动命令补充:记录指针的查找定位命令格式:LOCATE[范围]FOR<条件>[WHILE<条件>]

CONTINUE功能:将记录指针定位到满足条件的第一条记录上。说明:范围缺省时为all;

继续查找满足条件的记录用continue命令。

举例:显示教师档案表中入学成绩>600分的第二个同学记录

LOCATEFOR入学成绩>600CONTINUEDISPLAY

表当前记录与数组之间的数据传送(读、写)记录数组SCATTER[FIELDS<字段名表>][MEMO]TO<数组名>记录数组GATHERFROM<数组名>[FIELDS<字段名表>][MEMO]【例】USE教师档案表

GO2SCATTOA?A(2),A(7)GATHFROMADISP屏幕显示为“26张晓明”*数组与表之间的数据交换(补充)3.5.1记录的排序与索引功能:使数据记录按一定的顺序排列。方式:物理排序(排序)、逻辑排序(索引)。1排序2索引3.5表记录的高级操作

按“学号”排序图示

按“学号”索引图示排序:将表中的数据按一定的顺序重新排列,并将重新排列后的结果保存成为一个新的有序表关键字段:决定排列顺序的字段,可以是多个数据记录的排序命令SORTTO<表文件名>ON<字段名1>[/A][/D][/C][,ON<字段名2>[/A][/D][/C]…][ASCENDING|DESCINDING][<范围>][FOR|WHILE<表达式>][FIELDS<字段名表>|FIELDSLIKE<通配符>|FIELDSEXCEPT<通配符>]功能:根据当前数据表,建立一个经过排序的新数据表。1、记录的排序命令说明排序文件名:新表的表名(文件名)ON子句中<关键字段>:排序字段/A:按升序排列,/D:按降序排列,默认为升序/C:排序时忽略大小写,否则不忽略若选择多个字段,表示多重排序先按<字段1>排列,若字段值相同,再按<字段2>排列……ASCENDING将所有不带/D的字段指定为升序,DESCINDING将所有不带/A的字段指定为降序缺省<范围>、<条件>表示全部记录FIELDS子句:新表所包含的字段【例3.9】对教师薪金表,按实发工资降序排序,并将排序结果输出到SFGZ表中USE教师薪金表SORTON实发工资/DTOCJXHUSECJXHBROWSE【例3.10】对当前表中的奖金大于等于"300"的教师按实发工资降序排序,如果实发工资相同再按基本工资升序排序。并将排序结果输出到“奖金工资”表中,表中只显示:编号,姓名,基本工资,奖金,实发工资字段。SORTTO奖金工资ON实发工资/D,基本工资FOR奖金>=300;FIELDS编号,姓名,基本工资,奖金,实发工资应用举例2、记录的索引

记录的索引是一种逻辑排序方法,它不改变当前表文件记录的物理排序顺序,而是建立一个与该表文件相对应的索引文件。(1)索引文件的类型单索引文件:文件中只包含一个索引标识。扩展名为IDX复合索引文件:文件中包含多个索引标识。扩展名为CDX复合索引文件又分为结构复合索引和非结构复合索引:结构复合索引:索引文件名与相应的表名相同。随表的打开自动打开非结构复合索引:索引文件名与表文件名不相同。不能自动打开INDEXON<索引关键字表达式>TO<单索引文件名>|TAG<索引标识>[OF<复合索引文件名>][FOR<条件>][ASCENDING|DESCINDING][UNIQUE|CANDIDATE][ADDITIVE]对当前表中符合条件的记录进行索引<索引关键字表达式>是由表中的字段、内存变量、数组等构成的字符、数值、日期或逻辑表达式。[UNIQUE]选项建立惟一索引;CANDIDATE建立候选索引TAG<索引标识>建立复合索引文件和设置索引标识,若省略OF子句,为结构复合索引文件,否则为非结构复合索引文件(2)索引文件的建立(3)索引的类型主索引:指定的字段或表达式中索引关键字值绝对不允许有重复值。只能在数据库表中而不能在自由表中建立的索引主要用于在永久关系中的主表或被引用表里建立参照完整性一个表只能创建一个主索引候选索引:关键字值绝对不允许有重复值、有资格被选做主索引的索引。一个表可以有多个候选索引数据库表和自由表都可以建立候选索引。唯一索引:允许索引关键字有重复的值,当有重复值出现时,索引文件只保存重复值的第一次值数据库表和自由表都可以建立唯一索引为和早期版本兼容而设计,很少使用普通索引:是除了上面几种索引之外的一种索引,它允许索引关键字有重复的值①在建立索引的同时,该索引文件也同时打开,②若索引文件已经建立,可在打开表文件的同时打开索引文件。【格式】USE<表文件>INDEX<索引文件名表>③若索引文件已经建立,且表文件已经打开,需单独打开索引文件【格式】SETINDEXTO[<索引文件名表>][ADDITIVE]【功能】打开一个或多个与当前表文件相关的索引文件(.IDX、.CDX)【例3.12】USE教师薪金表

INDEXON基本工资TAGgzDESCENDINGINDEXON编号TAGbh(4)索引文件的打开【格式1】CLOSEINDEX【格式2】SETINDEXTO【功能】关闭当前工作区中所有已打开的单索引文件.IDX和非结构复合索引文件.CDX。注意:结构复合索引文件只随表文件的关闭而关闭。(5)索引文件的关闭(6)删除索引删除索引标识Deletetagall|<索引标识1>[of<复合索引文件名>][,<索引标识2>][of<复合索引文件名>]

从复合索引文件中移掉一个或多个标识;若选all删除所有的索引标识,相关的复合索引文件也被删除删除索引文件Erase<索引文件全名>Deletefile<索引文件全名>3.排序与索引的异同当排序的关键字只有单个字段名时,两条命令的关键字部分写法完全相同;若排序的关键字为多个字段名时,在sort命令中只需将这多个字段名依次列出,而在index命令中,则要将它们组合成一个字符型表达式。索引排序只能升序排列,如需降序则要自己设计表达式,而用sort命令则能方便地对排列的升、降序进行选择。sort命令中的fields和for等可选项可以在排序的同时实现选择和投影操作。而index命令不具备这些功能。执行sort命令将产生一个新的排序的表文件,而index命令只产生一个索引文件,不改变原来表文件的记录顺序。3.5.2记录的查询与统计

查找是按照某些条件在表中查找所需记录并将记录指针指向符合条件的第一条记录。1.记录的查询(1)条件查询无索引查找(顺序查找,速度较慢)LOCATEFOR<条件>命令CONTINUE命令有索引查找(速度较快,要求事先对表进行索引)SEEK命令FIND命令(2)查找常数【格式】find<常数>【功能】用于查找指定常数的记录。【说明】这里的常数是指要查找的关键字,可以是数值型和字符型。对数值型常数,必须直接写出或者通过宏替换函数替换;对字符型常数,当字符串左部是非空格常数时,是否用引号括起来都是等效的,但是,当字符串左部有空格时,必须用引号括起来。另外,执行此命令时,要求在当前工作区中打开查找关键字的主索引文件,并且查找关键字的数据类型必须与主索引表达式值的类型一致。使用此命令进行查找时,可以通过eof()或found()函数的值来判断是否找到相匹配的记录。(3)查找表达式的值【格式】seek<表达式>【功能】用于查找指定表达式的记录。【说明】这里的表达式是查找关键字,表达式的值可以是数值型、字符型和日期型。此命令也要求在当前工作区中打开查找关键字的主索引文件,并且查找关键字的数据类型必须与主索引表达式值的类型一致。(1)数值统计格式:COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>]功能:计算指定范围满足条件的记录数,并将结果存于指定的内存变量说明:TO<内存变量>:指定结果存放的内存变量名,若该变量不存在,系统会自动创建。若设置了命令setdeletedon,则作了删除标记的记录不被计数。2.记录的统计与求和应用举例[例]统计学生选课表中成绩超过85分的学生人数USE学生选课COUNTFOR成绩>85TOcjrs?cjrs(2)求和命令格式:SUM[<数值型字段表达式表>][<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>|ARRAY<数组>]功能:在打开的数据表中,对数值型字段表达式求和。<数值型字段表达式表>:对指定表达式求和,省略该选项,则对所有数值型字段求和。TO<内存变量表>|ARRAY<数组>:指定结果存放的内存变量名表或数组名,若变量或数组不存在,系统自动创建,数组存在且太小时,系统自动增加数组大小。应用举例[例]求学生选课表中成绩的总和。USE学生选课SUM成绩TOzcj?zcj(3)求平均值命令格式:AVERAGE[<数值型字段表达式表>][<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>|ARRAY<数组>]功能:在打开的数据表中,对数值型字段表达式求平均值。应用举例[例]求学生选课表中成绩的平均值。USE学生选课AVERAGE成绩TOpjcj?pjcj[例]求学生表中2000级同学的平均年龄USE学生AVERAGEYEAR(DATE())-YEAR(出生日期)FORLEFT(学号,4)="2000"TOpjnl?pjnl(4)计算命令格式:CALCULATE<表达式表>[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量>|ARRAY<数组>]功能:在打开的数据表中,计算表达式的值说明有NULL的记录不包含在内表达式中可以包含下列函数AVG(<数值表达式>):平均值CNT():表中的记录数MAX(<表达式>):最大值MIN(<表达式>):最小值SUM(<数值表达式>):求和应用举例[例]统计学生选课表中成绩超过85分的学生人数及平均成绩USE学生选课CALCULATECNT(),AVG(成绩)FOR成绩>85TOxsrs,pjcj?xsrs,pjcj(5)分类求和命令格式:TOTALTO<表文件名>ON<关键字>[FIELDS<数值型字段表>][<范围>][FOR<条件>][WHILE<条件>]功能:在打开的数据表中,按关键字分类,汇总计算,将结果存入新文件中说明数据表必须按关键字排序或索引<表文件名>:指定存放计算结果的新表文件名<关键字段>:指定作为分组总计依据的字段[FIELDS<数值型字段表>]:指定要总计的字段3.6多工作区操作1、工作区概念

VFP6.0提供了32767个工作区。每个工作区只能打开一个表文件,若在已有表文件的工作区打开新的表文件,以前打开的表文件就会自动关闭。各表在各自的工作区中被操作。2、工作区标识-别名(1).系统别名(1~10分别用A~J单个字母来命名)(2).表名或用户定义的别名USE<表名>[ALIAS<别名>][IN<工作区号>]

别名可以包含多达254个字母、数字或下划线,且必须以字母或下划线开头。3.6.1工作区选择3.工作区的选择命令选择工作区命令格式为:SELECT<工作区号>|<别名>VFP刚启动时默认1号工作区为当前工作区,SELECT()函数可以返回当前工作区的区号。SELECT0表示选定当前未使用的最小号工作区。多工作区中表字段的相互引用在当前工作区上使用其他工作区上的字段(跨工作区字段)时,必须用别名标识.格式为:别名.字段名或别名->字段名4.VisualFoxPro的工作区特点①每个工作区只允许打开一个表文件,一个表文件不能在两个及两个以上的工作区同时打开。②可以使用多个工作区,但只有一个为当前工作区。系统启动初始,默认当前工作区为1。③每个工作区分别为在其工作区中打开的表文件设置一个记录指针,一般各个指针相互独立移动,相互不干扰。5.VisualFoxPro的工作区特点【格式】<工作区别名>.<字段名>或<工作区别名>-><字段名>【功能】访问指定工作区(非当前工作区)中表的数据。【例3.20】P763.6.2表与表之间的联接与关联表与表之间的三种关系:一对一关系:在表A中的一条记录在表B中最多只能有一条记录与之对应,反之,在表B中的一条记录在表A中也最多只能有一条记录与之对应。例如:教师档案表和学生成绩表之间。一对多关系:在表A中的一条记录在表B中可以有多条记录与之对应,而在表B中的一条记录在表A中最多只能有一条记录与之对应。例如:教师档案表和学生选课表之间。多对多关系:在表A中的一条记录在表

温馨提示

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

评论

0/150

提交评论