数据库软件Visual4课件_第1页
数据库软件Visual4课件_第2页
数据库软件Visual4课件_第3页
数据库软件Visual4课件_第4页
数据库软件Visual4课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

第8章

数据库软件VisualFoxpro8.1数据库的基本概念8.2VFP的基本知识8.3VFP的用户界面及工作方式8.4VFP自由表的基本操作8.5表的查询与统计命令8.6工作区数据工作期及关联8.7创建数据库8.8项目管理器8.98.10视图8.11程序设计初步8.12VFP的报表、标签、表单和菜单设计初步8.1数据库的基本概念8.1.1数据库间史8.1.2信息数据和数据处理8.1.3数据库和数据库系统8.1.4数据库管理系统8.1.5数据库模型8.1.6关系与三种关系运算8.1.1数据库简史1969年诞生了世界上的第一个商品化的数据库系统——美国IBM公司的IMS系统。1984年DavidMaier写出了《关于数据库理论》,标志着数据库在理论上的成熟。在我国数据库技术起步较晚。从20世纪70年代后期才开始引进数据库系统但发展十分迅速,特别是关系数据库管理系统在我国最为流行,如FoxBASE、FoxPro及VisualFoxPro就是典型代表。8.1.2信息、数据和数据处理数据是数据库系统研究和处理的对象。但数据和信息是分不开的,它们既有联系又有区别,因此应先搞清楚数据和信息在概念上的区别。1.信息泛指通过各种方式传播的、可被感受的声音、文字、图象、符号等所表征的某一特定事物的消息、情报或知识。换句话说,信息是对客观事物的反映,是为某一特定目的而提供的决策依据。8.1.4数据库管理系统数据库管理系统是一个在数据库系统中起核心作用的大型软件。它由许多程序、子程序组成,对数据库的一切管理、使用和控制操作都是通过它来进行的。一个数据库系统的优点和水平主要通过它来体现。数据库管理系统的功能主要表现在数据定义、数据操作、控制和管理及数据字典四个方面。8.1.5数据模型目前经常采用的数据模型有关系模型、网状模型和层次模型三种。从当前状况及发展趋势来看,关系模型将占主导地位。层次模型是用树状结构来表示数据之间联系的模型。网状模型是用网络图结构来表示数据之间联系的模型。关系模型是用二维表格来表示数据之间联系的模型。采用上述三种数据模型,可分别构成层次数据库、网状数据库和关系数据库。与此相应地形成了三种数据库系统。在实际中,应用广泛的是关系数据库系统。8.1.6关系与三种关系运算1.关系一个由若干行和若干列组成的规范化的二维表称为关系。例如表8.1就是一个关系,但并不是说任何一个二维表都是一个关系。我们说这个二维表是一个关系,是因为它有以下几个特征:1)表中每一列都是不可再分的。2)表中每一列的所有数据都属于同一种类型。3)表中各列都指定了一个不同的名字。4)表中没有数据完全相同的行。5)表中行之间顺序位置的调换和列之间位置的调换不影响它们所表示的信息内容。只有具有上述特征的二维表,才称为一个关系。这种二维表,称为规范化的二维表。表8.1所示关系的结构可以表示如下:教师情况表(编号,姓名,性别,婚否,出生日期,职称,工资,简历)。2.三种关系运算(1)选择(或称为筛选)从一个关系中,选出满足指定条件记录的操作称为选择。它是从行的角度对关系进行运算。例如,在教师情况表中,找出性别是女的所有记录,就可以使用这种运算。(2)投影从一个关系中,选出若干指定列的操作称为投影。它是从列的角度对关系进行运算。例如,在教师工资表中有八列,如果只选择姓名、性别和工资三列,组成一个新的关系,就可以使用投影运算。(3)连接把两个关系中的记录,按一定条件,连接成一个新关系记录的操作称为连接。例如,我们把教师情况表和教师工资表,按照姓名属性值相同的条件,将有关记录连接起来(去掉重复字段和简历字段),构成一个命名为教师明细表的新关系(如表8.3所示),就可以使用连接运算。

8.2.1VFP的主要特点1.强大的查询与管理功能,2.引入了数据库表的新概念,3.扩大了对SQL语言的支持,4.大量使用可视化的界面操作工具,5.支持面向对象的程序设计,6.通过OLE实现应用集成,7.支持网络应用。8.2.2VFP文件的类型下面给出VFP常用文件的扩展名及其类型名称:.PJX项目文件,.PJT项目备注文件,.DBF表文件,.FPT表备注文件,.DBC数据库文件,.DCT数据库备注文件,.IDX单索引文件,.CDX复合索引文件,.PRG程序文件,.FXP编译过的程序文件,.QPR查询文件,.QPX编译后的查询文件,.SCX表单文件,.SCT表单备注文件,.MNX菜单文件,.MNT菜单备注文件,.MPR菜单程序文件,.FRX报表格式文件,.FRT报表格式文件的备注文件,.LBX标签格式文件,.LBT标签格式文件的备注文件,.MEM内存变量文件,.VUE视图文件,.TXT文本文件等等。8.2.3VFP的安装、启动和退出1.VFP的安装(略)2.VFP的启动启动VFP与启动其他Windows应用程序一样有多种方法,最常用的两种方法如下:1)单击“开始”按钮,指向开始菜单中的“程序”,指向程序级联菜单中的MicrosoftVisualFoxPro6.0,单击相应级联菜单中带狐狸头图标的MicrosoftVisualFoxPro6.0。2)在Windows的桌面上建立MicroSoftVisualFoxPro的快捷方式,双击该快捷方式的图标。3.VFP的退出常用以下三种方法退出VFP,返回Windows环境:1)单击VFP窗口右上角的关闭按钮。2)在命令窗口键入QUIT命令后按回车。3)执行VFP窗口文件菜单中的“退出”命令。8.3VFP的用户界面及工作方式8.3.1VFP的用户界面8.3.2VFP的一些约定8.3.3VFP的工作方式8.3.4VFP的辅助设计工具8.3.2VFP的一些约定VFP有一些关于键盘、鼠标、窗口等使用的一些约定。在这些约定中,有许多是与Windows一致的,少数是VFP自己的。1.鼠标器的基本操作在VFP环境下,鼠标器的操作与Windows一致,都有指向、单击、双击及拖动四种基本操作。2.键盘的基本操作在VFP环境下,键盘基本操作与Windows一致。其中包括有些键盘操作方式和击键组合的规定。如用Alt+F组合键可打开“文件”菜单等。3.窗口基本操作VFP的窗口基本操作,主要包括窗口的打开、关闭、移动、改变大小、极大化、极小化、复原、切换、激活及滚动条的使用等。这些具体操作也与Windows的窗口一致。4.对话框的使用VFP环境下的对话框和Windows及其他Windows应用程序对话框的使用方法相同。

5.编辑器的基本操作VFP的编辑器是一种屏幕编辑器,所以,在Windows环境下的屏幕编辑基本操作,在VFP的编辑操作中均有效。例如,用Del键删除光标右侧一个字符,用退格(Backspace)键删除光标左侧一个字符,拖动鼠标可标记文件等。6.获取帮助帮助窗口常用以下三种方法打开它:1)执行帮助下拉菜单中的“MicrosoftVisualFoxPro帮助主题”命令。2)在VFP环境下,按F1键。3)在命令窗口键入HELP并按回车。帮助窗口和Windows的帮助窗口相类似,并且使用方法也基本相同。8.3.3VFP的工作方式1.交互操作方式该方式包括单命令方式和界面操作方式。其中单命令方式,是指用户在命令窗口中输入一条命令并按回车键。

交互操作方式虽然简单、方便,但速度较慢。而程序执行方式可克服速度慢的缺点。2.程序执行方式按VFP系统的约定,编写特定的命令序列,并将他们存储为程序文件。当用户需要时,通过特定的命令自动执行程序文件,这种工作方式称为程序执行方式。8.3.4VFP的辅助设计工具VFP提供了向导、设计器和生成器等辅助设计工具,使用它们可以简化操作、提高工作效率。(生成器本章不要求)1.向导向导是一种,通过交互对话,完成操作的VFP应用程序。例如,创建表、表单、设置报表和建立查询。我们只要在相应向导的一系列屏幕显示中,回答问题或选择选项,便可以让向导,建立一个文件。2.设计器设计器,比向导的功能强。在实际应用中,可先用向导,创建一个较为简单的表等的框架,然后用相应的设计器进行修改。

8.4VFP自由表的基本操作VFP将表分为自由表和数据库表两种。自由表即不包含在数据库中的表,可以单独使用。8.4.1表的建立表由结构和数据两部分组成。建立一个表,首先要设计表的结构,然后再输入数据。1.设计表的结构设计表的结构就是把表中各字段的字段名、类型、宽度及小数位数确定下来。字段名只能是以字母或汉字开头的字母、汉字、数字及下划线列,不允许含有空格,其长度不超过10个字符位置(一个汉字占两个字符位置)。例如,编号、出生日期、XM、备注等。字段类型、字段宽度及小数位数用于描述字段值。常见类型为数值型(N)的宽度≤20,字符型(C)的宽度≤254,日期型(D)的宽度默认是8,逻辑型(L)的宽度默认是1,备注型(M)和通用型(G)的宽度均默认是4。例如:教师情况表的结构可设计为JSJK(编号C(3),姓名C(6),性别C(2),婚否L(1),出生日期D(8),职称C(8),工资N(7,2),简历M(4))。2.建立表的结构⑴执行(单击)文件菜单中的“新建”命令,显示如图8.3所示的新建对话框。⑵在新建对话框中选择“表”单选钮并单击“新建文件”按钮,显示如图8.4所示的创建对话框。⑶在创建对话框中,选择表将要保存的盘符及文件夹(例如,D:\VFP),并输入表名“JSJK”,选定保存类型为“表/DBF”,单击“保存”按钮,显示如图8.5所示的表设计器对话框。⑷在表设计器对话框中,确认已选择“字段”选项卡,输入表结构的各字段定义内容。在操作过程中,若按了回车键、Ctrl+W键或单击对话框的“确定”按钮后,屏幕上显示如图8.6所示的确认输入对话框,这说明表JSJK.DBF结构定义已经结束,下面将要处理该表的数据记录输入。8.4.2表数据记录的输入在图8.6的对话框中,如果单击“是”按钮,则显示如图8.7所示的记录编辑窗口,用户可以向JSJK.DBF输入记录数据了。如果单击“否”按钮,则返回命令窗口,暂不输入数据(当返回命令窗口后,若又想输入数据时,可在命令窗口中直接键入APPEND命令并按回车或执行显示菜单的“浏览”命令后再执行显示菜单中的“追加方式”)。1.表数据记录的输入在记录编辑窗口,表的数据是以记录为输入单位。窗口内各字段的排列次序以及字段名右侧显示的光带宽度都与已定义的表结构相符。对各字段输入的数据类型要与定义的类型一致,否则系统拒绝接收。其中日期型字段的两个间隔符号已在相应的位置标出。备注型与通用型字段中分别显示memo和gen,表明这两个字段将用另外的方法来输入数据。当表数据记录输入结束时,可按Ctrl+W键或双击窗口的控制菜单图标,则关闭记录编辑窗口,数据自动存盘,返回命令窗口。若按Esc或Ctrl+Q键,则放弃本次数据的输入而关闭编辑窗口返回。2.备注型与通用型字段的数据编辑窗口将光标移到memo或gen位置;用鼠标双击或按Ctrl+PgDn、5.表的关闭通常采用以下关闭方法关闭当前表:1)在命令窗口中键入USE后按回车。2)单击窗口下拉菜单中的“数据工作期”,弹出数据工作期窗口,单击“关闭”按钮。3)执行文件菜单中的“退出”命令或在命令窗口键入QUIT命令,按回车均可退出VFP来关闭表。8.4.3表的显示与浏览要显示和浏览表的有关内容。为此需要先打开表。1.打开表1)执行文件菜单的“打开”命令,显示如图8.8所示的打开对话框2)在该对话框中,可以在“文件名”的文本框中直接输入将要打开的表所在的盘符路径及表文件名(如,D:\VFP\JSJK)。3)单击“确定”按钮,则打开所需的表(如,JSJK.DBF)。2.显示和浏览刚打开的表,其内容虽不出现在屏幕上,但它的打开已经有效,表名出现在窗口状态栏中,可以用显示菜单中的“浏览”命令显示其内容。8.4.4VFP的命令操作方式简介下面介绍有关的VFP命令和命令子句、常量、变量、表达式和函数的初步知识。1.VFP命令格式<命令动词>[范围][FIELDS<字段名表>][FOR<条件>]…其中,放在“<>”中的命令动词是必选项外、放在“[]”中的其他子句,均是可依据需要,而确定取舍的选择项。命令动词:一般是英文单词,决定了所要做的操作。范围:指出该命令对表中哪些记录起作用,有以下4种选择:ALL表示对表中的所有记录进行处理NEXTn表示对表中从当前记录开始的n个记录进行处理RECORDn表示只对表中第n个记录进行处理REST表示对表中从当前记录开始直到表尾的所有记录进行处理字段名表:是一组用逗号隔开的字段名FOR<条件>:是一个条件子句,表示对相应范围内,所有满足条件的记录,进行该语句所指定的操作处理。下面给出VFP命令的书写规则:1)命令动词必须是一条命令的第一项,命令行中,各子句的顺序可以任意排列。2)命令动词与子句、子句与子句、子句中各部分之间必须用一个或多个空格隔开。3)命令动词、各子句中的保留字及将要介绍的函数名,都可以简写为前4个字符,而且对其中出现的英文字母,大小写等效。4)一行只能写一条命令。当一行写不下时,可在适当位置输入续行符“;”,并按回车键换行,继续输入。例如,SETDEFAULTTOD:\VFP&&设置默认文件夹为D:\VFPUSEJSJK&&打开D:\VFP下的表JSJK.DBFLIST姓名,性别,简历FOR工资>1200&&显示当前表中,工资大于1200记录中的姓名、性别及简历3个字段值。说明:以后本章所有例子中的操作,均在当前目录D:\VFP下进行2.常量、变量、函数、表达式和数组1)常量在进行数据处理过程中,不变化的数据称为常量。常量有字符型、数值型、逻辑型、日期型、日期时间型及货币型六种。

⑴字段变量二维表中的每一个字段都是一个字段变量,它依附于表。字段变量一经定义,它的类型和宽度就不能随意改变。例如,在表JSJK.DBF中,编号、姓名、出生日期、工资、简历等。⑵内存变量内存变量与表无关。VFP内存变量分为系统内存变量(简称系统变量)和用户定义的内存变量(简称内存变量)。①系统变量是由系统自身提供的以下划线开头的内存变量。例如_CLIPTEXT可用于存取剪贴板的内容。这类变量不能被删除。②内存变量是用户定义的,用于保存数据处理过程中的有用信息。有C、N、L、D、T、Y与S(屏幕型不做要求)7种类型。内存变量的命名规则是:以字母或汉字开头,长度不超过128个字符的字母、数字、汉字及下划线列。例如:X1=“Hello”&&定义内存量X1其初值为"Hello”STORE8TOX2,X3,X4&&定义内存变量X2、X3、X4其值均为8DISPLAYMEMORYLIKEX?&&显示以X开头第2个字符任意的所有内存变量名称、类型、值及其属性。(可用LIST代替DISPLAY)

RELEASEX1,X2&&删除内存变量X1及X2RELEASEEXCEPTX*&&删除X开头以外的所有内存变量3)运算符按照运算的性质与运算结果的类型,运算划分为如下四类:⑴算术运算符:+(加)、-(减)、*(乘)、/(除)、**或^(乘方)、%(取模即取余数)。优先级(运算顺序)是:先乘方,再乘除与取模,后加减;同一级别的运算,要从左向右;有圆括号时,圆括号优先;若圆括号嵌套,则按先内后外的次序处理。⑵字符运算符:+(完全连接运算符。将两个或多个字符串,按顺序连接成一个新的字符串)及-(不完全连接运算符。连接两个字符串时,若该运算符前边的字符串尾部有空格,则先把空格移到该运算符后边的字符串尾部,再将两个字符串连接)。⑶关系运算符:<(小于),>(大于),=(等于),<=(小于等于),>=(大于等于),<>或#或!=(不等于),==(字符全同比较),$(字符串包含运算符)。优先级均相同,有圆括号时,圆括号内优先。5)函数VFP可提供280多个函数。除少数函数外,函数的一般格式为:函数名(<自变量>),表示自变量经过由函数名隐含指定的一种具体的处理运算后得到一个函数值(又称返回值或结果)。下面先介绍在命令窗口,可以显示函数值的一种输出命令。然后再介绍少数几个常用函数:⑴输出命令格式1:?[<表达式表>]功能:可从当前光标所在行的下一行开始位置,依次显示各表达式的值。格式2:??[<表达式表>]功能:可从当前光标所在行的位置开始,依次显示各表达式的值。例如:?"ab12"+"345",3+5&&显示结果为:ab123458⑵几个常用函数①数值计算函数(a)取整函数格式举例:?INT(6.8),INT(-4.5+0.8)&&结果为:6-3(b)四舍五入函数举例:?ROUN(2.718,2),ROUN(2.718,0),ROUN(162.5,-1)&&结果为:2.723160(c)平方根函数举例:?SQRT(4),SQRT(5+4)&&结果为:2.003.00(d)余数函数举例:?MOD(7,2),MOD(10+4,3)&&结果为:12(e)最大值函数举例:?MAX(18,68),MAX(-45,-3.14,-66)&&结果为:68-3.14②字符处理函数(a)字符串定位函数举例:?AT(“代表”,“人民代表”),AT(”ab“,”a12b“)&&结果为:50(b)大小写字母的转换函数举例:?LOWER("Abc"),UPPER(”Def")&&结果为:abcDEF(c)空格函数与压缩空格函数举例:?“姓”+SPACE(4)+“名”&&结果为:姓名?ALLTRIM(SPACE(4)+”姓名”+SPACE(2))&&结果为:姓名(d)字符串截取函数举例:?SUBS("abcde",1,3),SUBS("abcdef",3)&&结果:abccdef(e)字符转换成ASCII码函数举例:?ASC(“date”),ASC(“ABCD”)&&结果:10065③类型转换函数(a)数值变字符串函数举例:?STR(238.46,5,6),STR(2384.6,3,1)&&结果为:238.6***(b)日期与字符串转换函数举例:?CTOD(“07/10/02”)&&结果为:07/10/02?DTOC({^2001/07/22},1)&&结果为:20010722?DTOC({^2001/09/15})&&结果为:09/15/01(c)ASCII码转换成字符的函数举例:?CHR(65),CHR(90+7)&&结果为:Aa(d)字符串转换为数值的函数举例:?VAL(“12.56”),VAL(“B123”)&&结果为:12.560.00④测试函数(a)表记录指针测试函数举例:USEJSJK&&打开表JSJK.DBF,记录指针指向第一条记录?RECNO(),BOF(),EOF()&&结果为:1.F..F.(b)数据类型测试函数举例:?TYPE(“25”),TYPE(“{^1998/07/15}”)&&结果为:ND(c)查找结果测试函数格式:FOUND(工作区号)功能:在指定工作区(见8.6节)中,用命令SEEK、FIND、LOCATE查找记录时,若找到,则返回.T.,否则,返回.F.。(d)测试文件存在函数格式:FILE(“文件名”)功能:若由文件名指定的文件存在,则返回.T.,否则返回.F.。⑤日期时间函数?DATE(),YEAR({^2002/08/15})&&结果为:07/17/0220028.4.5更改表的结构通常修改表结构的操作如下:⑴打开待修改的表,例如,JSJK.DBF。⑵执行显示菜单中的“设计器”命令,弹出设计器”对话框。⑶在“设计器”对话框中,用户可同建立表结构时的操作一样,修改当前表的结构。修改表结构时,把表中的数据以文件的形式进行备份,完成修改后,再将表中原有数据复制到新结构的相应位置上。以.BAK为扩展名而文件主名同原表名的备份文件保留在磁盘上。若原表有备注字段,则备注(.FPT)文件的备份文件扩展名是.TBK。8.4.6表记录的增、删、改1.增加新记录1)在表尾追加记录USEJSJK&&打开表JSJK,也可执行文件菜单中的“打开”命令APPEND&&打开记录编辑窗口,等待用户在表尾追加记录当追加的记录数据输入结束时,按Ctrl+W键或执行该窗口控制菜单中的“关闭”命令,关闭记录编辑窗口返回。2)插入记录执行“INSERT”命令,可在当前记录之后插入;执行“INSERTBEFORE”,可在当前记录之前插入;执行“INSERTBLANK”,可在当前记录之后,插入一条空白记录;执行“INSERTBEFOREBLANK”,可在当前记录之前,插入一条空白记录。3)记录指针的绝对或相对移动命令举例:USEJSJK&&表刚打开时,记录指针自动指向最上一条记录GO3&&使指针指向第3条记录(该命令可省略GO)?RECNO()&&显示当前的记录号为3GOTOP&&使指针指向表的最上一条记录(不是文件头)?RECNO(),BOF()&&显示当前记录的记录号1及.F.SKIP–1&&从1号记录向后跳一条记录,指针指向文件头?RECNO(),BOF()&&显示当前记录的记录号仍是1及.T.GOBOTTOM&&使指针指向表的最后一条记录(不是文件尾)?RECNO(),EOF()&&显示最后一条记录的记录号及.F.SKIP&&从最后一条记录向前跳一条记录,指针指向文件尾?RECNO(),EOF()&&显示最后一条记录的记录号加1及.F.GO5&&将记录指针指向第5条记录INSERT&&在当前记录后插入新记录,新记录号为62.删除记录删除记录分成两步:首先逻辑删除要删除的记录(加删除标记),然后用PACK命令,把作过删除标记的记录从表中物理删除。USEJSJKGO3DELETENEXT2&&给第3、4两条记录加删除标记GO10DELETE&&给第10条记录加删除标记LIST&&在屏幕上可看到第3、4、10三条记录有删除标记“*”GO3RECALLNEXT2&&擦除第3、4两条记录的删除标记PACK&&物理删除有删除标记的第10条记录如果想快速地给记录作删除标记,可在浏览窗口,单击待删记录左端的矩形框,使该框变黑。如果想把当前表中的所有记录物理删除,可在命令窗口,执行ZAP清库命令。3.修改记录数据对记录中的数据内容进行编辑修改的操作方法如下:1)如果表没有打开,可先打开表(例如,打开表JSJK.DBF)2)执行显示菜单中的“浏览”命令,或在命令窗口执行BROWSE3)在浏览窗口,将光标移到待修改记录数据的位置4)在光标位置编辑修改相应的记录数据,当完成全部记录数据的修改后可按Ctrl+W或Ctrl+End键关闭浏览窗口。另外,在命令窗口,也可以执行EDIT或CHANGE编辑修改记录。8.4.7记录数据的替换用REPLACE命令则能把字段值用指定的表达式值进行替换,不必直接进行键盘操作。例如,在当前表JSJK.DBF中,对职称是教授的教师,每人工资增加150元并把增加工资的信息添加到他们的简历字段原有数据的尾部。操作如下:USEJSJKREPLACEALL工资WITH工资+150,简历WITH“从2002年7月;开始月工资增加150元”ADDITIVEFOR职称=″教授″说明:若缺少ALL及FOR子句,则仅替换当前记录的工资和简历。8.4.8表结构与记录数据的复制表的复制操作是针对一个已有的表进行复制,以得到它的一个副本。1.同时复制表结构与记录数据格式:COPYTO<表名>[范围][FIELDS<字段名表>][FOR<条件>]功能:在当前表的指定范围内,对满足条件的记录进行复制,产生一个由字段名表确定结构的新表。如果命令中各选择项缺省,则复制产生的新表是当前表的一个副本。例如:USEJSJKCOPYTOJSJK2&&对当前表,复制生成JSJK2.DBF及JSJK2.FPTCOPYTOJSJKBF2FIEL编号,姓名,工资&&JSJKBF2含3个字段COPYTOJSJKBF3FIEL姓名,工资,出生日期FOR职称=“教授”USEJSJKBF3&&在当前目录中,打开新表JSJKBF3.DBFLIST&&显示在表JSJKBF3中,只有教授的记录且仅3含个字段2.单独复制表结构格式:COPYSTRUCTURETO<新表名>[FIELDS<字段名表>]功能:把当前表的结构复制到新表中。如果命令中含有可选项FIELDS时,则新表的结构由字段名表指定的字段及顺序确定。例如,在命令窗口,对当前目录中的表JSJK进行以下操作:USEJSJKCOPYSTRUCETURETOJSJKJG2FIELDS编号,姓名,职称USEJSJKJG2&&在当前目录中打开新表JSJKJG2.DBFBROWSE&&显示JSJKJG2.DBF中没有记录,其结构仅含3个字段8.4.9表的排序与索引1.排序排序就是根据表的某字段值的大小重排记录,产生一个新的表,而原表不变。对于排序依据的字段值,按从小到大排列记录的称为升序(Ascend)排列,从大到小排列记录的称为降序(Descend)排列。格式:SORTTO<新表名>ON<字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…][范围][FOR|WHILE<条件>][FIELDS<字段名表>]功能:该命令可对当前表中的记录,按用户指定的字段值排序。说明:(1)若没有选择项/A、/C、/D,系统自动按升序排列。A示升序,D示降序,C示不区分大小写字母。若A和C合用可写为/AC。(2)若按多个字段来排序时,最主要的字段应写在字段表的最前面。排序时,首先按字段1的值排序,对于字段1的值相同的记录,又按字段2的值进行排序,依次类推。(3)排序时,按ASCII码的顺序排列字符;同级汉字按汉字的拼音字母来排序。USEJSJK&&打开表JSJKSORTTOJSXGPXON性别,工资/D&&同性别的记录,按工资降序USEJSXGPXLIST&&显示排序结果2.索引表中的记录在磁盘中的存储顺序称为物理顺序。索引不改变原表记录的物理顺序,而仅列出了按索引关键字(字段表达式)值的升序或降序排列的记录号与相应关键字值对应的索引表。把这个索引表存入磁盘就形成了索引文件。这样由索引确定的记录顺序称为逻辑顺序。索引文件比排序生成的表占用磁盘空间要少。按文件的扩展名,索引分为单索引文件(.IDX)及复合索引文件(.CDX)两类。单索引文件只包含一个索引,它是为了与FoxBASE兼容而设置的。复合索引文件可包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序,其扩展名为.CDX。这种类型的文件又分结构复合索引和非结构复合索引。结构复合索引文件的主名与表的主名相同,它随表的打开而打开,在VFP中用的最多。而非结构复合索引文件的主名由用户命名,它不与表的主名相同,打开这种索引文件需要先打开表再使用SETINDEX<索引文件名>命令或使用USE<库文件名>INDEX<索引文件名>命令。1)索引的建立格式:INDEXON<索引关键字>TO<单索引文件名>|TAG<索引标识名>[OF<复合索引文件名>][FOR<条件>][COMPACT][ASCENDING|DESCENDING][UNIQUE][ADDITIVE]功能:建立索引文件或增加索引标识。说明:⑴TO子句适用于建立单索引文件,COMPACT选项用于指定单索引文件为压缩文件(压缩文件不能被FoxBASE使用)。⑵TAG子句用于建立复合索引文件及索引标识,或增加索引标识。OF选项的复合索引文件名用于指定非结构复合索引文件的名字,缺省该选项时,表示建立结构复合索引文件。⑶选项ASCENDING表示升序,DESCENDING表示降序;两者都缺省时,表示升序;这两个选项不能用于建立单索引文件。⑷选项UNIQUE表示建立唯一索引文件(对于索引关键字值相同的记录,索引中只列出其中的第一个记录)。⑸选项ADDITIVE表示建立索引文件时,不关闭先前打开的索引文件。例如,建立单索引文件举例:USEJSJKINDEXON姓名TOXMSY&&按姓名建立XMSY.IDX文件LIST&&显示按姓名升序的索引结果INDEXON-工资TOGZSY&&建单索引文件,不能用DESCENDINGLIST&&显示按工资降序的索引结果例如,建立复合索引文件举例:USEJSJKINDEXON工资TAGGZDESCENDING&&建标识名GZ的JSJK.CDXLIST&&显示按工资降序的索引结果INDEXON性别+STR(工资,7,2)TAGXBGZ&&标识名XBGZ的索引LIST&&显示先按性别升序,同性别时按工资升序的索引结果2)打开与关闭索引文件利用索引快速查询指定数据时,必须同时打开表及基于该表的相应索引文件。虽然可以同时打开基于一个表的多个索引文件,但任何时刻只有一个索引文件起作用,当前起作用的索引文件称为主控索引文件;同一个复合索引文件,又可以包含多个索引标识,但任何时刻只有一个索引标识起作用,当前起作用的索引标识称为主控索引标识。刚刚建立的索引文件,自动处于打开状态并为主控索引文件。(1)打开索引文件格式:SETINDEXTO<索引文件表>[ADDITIVE]功能:打开基于当前表的,由索引文件表指定的多个索引文件,并确定索引文件表中序号为1的索引文件为主控索引文件。若缺省选项ADDITIVE,则在打开指定索引文件的同时,关闭除了结构复合索引文件以外的所有索引文件。还可以用命令“USE<表名>INDEX<索引文件表>”,在打开表的同时,打开索引文件。⑵确定主控索引格式:SETORDERTO[数值表达式|单索引文件名|[TAG]索引标识[ASCEVDING|DESCENDING]]功能:在打开的索引文件中,确定主控索引和主控索引文件。说明:选项数值表达式,表示已打开索引的序号,该序号用来指定主控索引文件或主控索引,系统先为各单索引文件编号,所以结构复合索引文件的序号大于单索引文件的序号;选项单索引文件名,表示指定该单索引文件为主控索引文件;选项索引标识,表示指定该索引标识为主控索引;糁葱小SETORDERTO”或“SETORDERTO0”命令,则取消主控索引文件及主控索引,表中记录将按物理顺序输出。⑶关闭索引文件格式:SETINDEXTO功能:关闭除了结构复合索引以外的所有索引文件。另外,在关闭表的同时,也就自动关闭了基于该表的所有索引文件。例如,根据上面建立索引文件的例子,指定主控索引文件及改变主控索引。USEJSJKSETINDEXTOXMSY,GZSY&&打开XMSY.IDX及GZSY.IDXLIST&&显示主控索引XMSY.IDX的索引结果SETORDERTO2&&指定序号为2的GZSY.IDX是主控索引文件LIST&&显示GZSY.IDX的索引结果SETORDERTOTAGXBGZ&&指定JSJK.CDX的XBGZ为主控索引LIST&&显示索引标识为XBGZ的索引结果SETORDERTO&&取消主控索引文件及主控索引LIST&&记录按物理顺序显示SETINDEXTO&&关闭所有单索引文件,取消主控索引3)索引的更新当表中的数据发生变化时,所有已打开的索引文件都会自动改变记录的逻辑顺序,实现索引文件的自动更新。若表中数据变化时,而索引文件没有打开,则没打开的索引文件的数据不会自动更新。这样就会产生表中数据和基于该表的索引文件中的数据不一致。为了使两者一致,可以先打开表及基于该表需重新索引的索引文件,然后执行重新索引命令REINDEX或者用INDEXON命令重新建立索引。4)删除索引删除索引的操作有,删除索引文件和删除索引标识两种。⑴删除索引文件格式:ERASE|DELETEFILE<文件名>功能:从磁盘上删除当前目录下的指定文件(包括索引文件在内的没有打开的所有类型文件,若需要,可在文件名前添加盘符和文件夹信息)。例如:USEJSJK&&打开默认目录下的表JSJK.DBFINDEXON职称TOZC&&建立职称升序的ZC.IDXLIST&&显示该索引结果USE&&关闭JSJK.DBF及基于该表的索引文件ERASEZC.IDX&&在状态栏显示,文件已删除⑵删除索引标识格式:DELETETAGALL|<索引标识1>[,索引标识2…]功能:删除当前结构复合索引文件的索引标识。说明:若执行DELETETAGALL命令,则可删除当前结构复合索引文件的所有索引标识,也即删除了当前的结构复合索引文件。例如,USEJSJKDELETETAGXBZC&&删除JSJK.CDX中的索引标识XBZC8.5表的查询与统计命令8.5.1表的查询命令8.5.2表的统计命令说明:利用表设计器也可建立或修改索引。单击显示下拉菜单中的“表设计器”命令,弹出“表设计器”对话框。选择“索引”选项卡,即可进行有关索引的操作。8.5表的查询与统计命令下面介绍使用命令方式进行查询和统计的操作。8.5.1表的查询命令1.顺序查询命令格式:LOCATE[范围]FOR<条件>功能:在当前表的指定范围内,查找满足条件的第一条记录。说明:1)若缺省范围,则默认为ALL。2)查找到记录后,可使用CONTINUE命令继续查找满足条件的下一条记录。例如:USEJSJKLOCATEFOR职称=“讲师”&&指针定位第一位讲师的记录DISPLAY&&显示职称是讲师的第一条记录CONTINUE&&指针定位第二位讲师的记录DISPLAY&&显示职称是讲师的第二条记录2.索引查询命令格式:SEEK<表达式>功能:在已确定主控索引标识的表中,按索引关键字搜索满足表达式值的第一条记录。若找到、记录指针就定位到该记录,否则,在屏幕下方的状态条中显示“未找到”。例如:USEJSJKINDEXON性别TAGXB&&按性别字段值升序建立索引SEEK“女”&&指针定位第一位女士记录DISPLAY&&显示第一位女士记录信息SKIP&&继续索引查找,指针定位第二位女士记录DISPLAY&&显示第二位女士记录信息说明:查找字符串表达式,系统默认是模糊查找。若想精确查询、可先执行SETEXACTON命令;还可用FIND命令索引查找。8.5.2表的统计命令统计命令有计数、求和、求平均值、计算及汇总数据。1.计数命令格式:COUNT[<范围>][TO<内存变量>][FOR<条件>]功能:在当前表的指定范围内,对满足条件的记录条数进行统计并把统计结果存储于指定的内存变量中。说明:若缺省TO<内存变量>,则统计结果只在主窗口的状态条上显示。例如:USEJSJKCOUNTTOJSFOR职称=“教授”?“教授人数:”,JS2.求和命令格式:SUM[<范围>][<数值型字段名表>][FOR<条件>][TO<内存变量表>]功能:在当前表的指定范围内,对满足条件记录中的指定数值型字段值按列分别求和并把求和结果依次存储于由内存变量表指定的内存变量中。说明:若缺省<数值型字段名表>,则对当前库文件中的所有数值型字段分别求和。例如:USEJSJKSUM工资TOGZFOR性别=“男”?“男士工资总和为:”,GZ3.求平均值命令格式:AVERAGE[<范围>][<数值型字段表>][FOR<条件>][TO<内存变量表>]功能:在当前表的指定范围内,对满足条件记录中的指定数值字段值按列分别求平均值并把结果依次存储于由内存变量表指定的变量中。(该命令的用法与SUM命令相同,故略去)4.计算命令格式:CALCULATE<表达式表>[<范围>][FOR<条件>][TO<内存变量表>]功能:在当前表的指定范围内,对满足条件记录中的指定表达式分别计算其值,并把计算结果依次存储于指定的变量中。说明:该命令用于对表中的字段进行财经统计,其计算工作主要由以下函数来完成:求平均值AVG(<数值表达式>),求和SUM(<数值表达式>),求记录条数CNT(),求最大值MAX(<表达式>),求最小值MIN(<表达式>)。例如:USEJSJKCALCULATESUM(工资),AVG(工资)TOGZH,GZPJ?“工资总和:”,GZH,“工资平均值:”,GZPJ5.汇总命令格式:TOTALON<关键字>TO<新表名>[FIELDS<数值型字段表>][<范围>][FOR<条件>]功能:在当前表的指定范围内,将满足条件的记录按<关键字>值相同的原则,对<数值型字段表>指定的字段值分类求和,并将结果存储于一个新的表中。说明:1)当前表必须在汇总之前按<关键字>排序或索引。2)若缺省<数值型字段表>,则对表中的所有数值型字段汇总。3)新表的结构与原表相同,但记录个数比原表的记录少。例如:USEJSJKINDEXON性别TAGXB&&按“性别”建立索引TOTALON性别TOJSHZFIELDS工资&&按性别汇总工资USEJSHZ&&打开汇总表JSHZ.DBFLIST&&显示汇总结果只有男、女各一条记录8.6工作区、数据工作期及关联8.6.1工作区8.6.2数据工作期8.6.3表之间的关联8.6工作区、数据工作期及关联本节介绍工作区、数据工作期及多表操作时表与表之间的关联的基本知识。8.6.1工作区实际上打开表就是把它从磁盘调入内存中的一个区域,以便进一步的访问。内存中的这个区域称为一个工作区。每个工作区同一时刻只允许打开一个表。1.工作区的区号与别名VFP允许使用32767个工作区,区号分别为1,2,3,…,32767。对前10个工作区,还有别名,系统为这十个区规定的别名为单个字母A、B、C、…、J。使用USE命令打开一个表时,可以在命令中用ALIAS子句指定一个临时的表别名。例如:USEJSJKALIASJS&&指定JS为表JSJK.DBF的别名2.当前工作区与当前表虽然VFP允许同时在多个工作区打开多个表,但在任何一个时刻,用户只能在一个区里对其中打开的那个表进行数据操作。这个工作区称为当前工作区,在当前工作区里被打开的表称为当前表。每次启动VFP,默认1区是当前工作区。3.选择工作区格式:SELECT<工作区号>|<别名>功能:选择某个工作区为当前工作区,以便打开一个表;当使用多个表时,可在各个工作区之间进行切换。说明:1)SELECT0表示选择当前尚未使用的最小区号工作区;2)当引用非当前工作区中的字段时,字段名前应冠以别名,格式为:<别名>.<字段名>。例如,设表JSGZ.DBF的结构如下:JSGZ(编号(C,3),岗位津贴(N,6,2),水电费(N,6,2),其他支出(N,6,2))。利用表JSJK.DBF和JSGZ.DBF,显示编号是“104”的姓名、工资、水电费及其他支出字段值。SELECTB&&选择2区为当前工作区USEJSJK&&在2区打开表JSJK.DBFLOCATEFOR编号=“104”&&在2区查找编号为104的记录SELECT3&&选择3区为当前工作区USEJSGZ&&在3区打开表JSGZ.DBFLOCATEFOR编号=“104”&&在3区查找编号为104的记录?B.姓名,B.工资,水电费,其他支出8.6.2数据工作期数据工作期是一个用于设置工作环境的交互操作窗口。所设置的环境可以包括打开的表及其索引等状态。这样设置的环境,可以使用数据工作期把它作为扩展名为.VUE的视图文件保存起来。在需要时,只要打开视图文件,就可以恢复原来的环境。1.数据工作期窗口1)命令方式SET&&打开数据工作期窗口SETVIEWON&&也打开数据工作期窗口2)界面操作方式单击菜单栏,窗口下拉菜单中的“数据工作期”命令,即可弹出数据工作期窗口。2.视图文件⑴命令方式格式:CREATEVIEW<视图文件名>[.VUE]功能:当数据工作期窗口打开时,可为当前数据工作环境建立一个视图文件。⑵界面操作方式当数据工作期窗口打开时,单击文件下拉菜单中的“另存为”命令,即可在弹出的另存为对话框中建立视图文件。2)视图文件的打开⑴命令方式格式:SETVIEWTO<视图文件名>功能:打开指定的视图文件。视图文件被打开后,再打开数据工作期窗口,便能看到相应该视图文件建立时的环境。⑵界面操作方式执行文件下拉菜单中的“打开”命令,在弹出的打开对话框中,选择“文件类型”列表框中的视图(*.VUE)后在“文件名”文本框中输入视图文件名,单击“确定”按钮。8.6.3表之间的关联表的关联是把当前工作区中打开的表(父表)与另一个工作区中打开的表(子表)进行逻辑连接,而不生成新的表。当两表建立起关联时,主表的记录指针移动时,从表的记录指针也跟着,同步移动。格式:SETRELATIONTO[<关联表达式>INTO<别名>][ADDITIVE]功能:在当前工作区内的表和别名工作区内的表之间,建立关联。说明:1)要求被关联的两个表必须有相同的关键字,并且子表必须用此关键字建立索引。2)建立关联后,若父表所在的工作区为当前工作区时,则执行“SETRELATIONTO”命令,可解除关联。3)建立关联的表中,如果父表的一条记录对应子表的多条记录,则这种关联称为“一对多”关系;如果父表的多条记录对应子表的一条记录,则这种关联称为“多对一”关系。系统默认建立“多对一”关系的关联。4)说明一对多关系的命令命令格式:SETSKIPTO[<别名1>,<别名2>,…,<别名n>]功能:用在SETRELATION命令之后,说明建立的关联为一对多的关系。说明:无选择项的命令SETSKIPTO,可取消一对多关系的关联,但SETRELATION命令建立的多对一关系的关联仍存在。例如,在父表JSGZ和子表JSJK之间以“编号”建立多对一的关联SELECT2USEJSJK&&在2区打开子表JSJK.DBFINDEXON编号TAGBH&&对子表按编号建立标识为BH的索引SELECT3USEJSGZ&&在3区打开父表JSGZ.DBFSETRELATIONTO编号INTOB&&建立父表与子表之间的关联LIST编号,B.姓名,岗位津贴SETRELATIONTO&&切断两表之间的关联LIST编号,B.姓名,岗位津贴&&此显示结果毫无意义8.7创建数据库创建数据库的两种方式向数据库中添加或移去表8.7创建数据库在VFP中,可以使用数据库,组织和关联表的视图。“数据库”和“表”不是同义词。“数据库”(.DBC文件)指的是关联的数据库,它是一个或多个表或视图信息的容器。创建数据库,通常是先建立一个空数据库,然后再向其中添加表、建立表之间的关系、设置字段属性及设置表的属性等。8.7.1创建数据库的两种方式1.命令方式格式:CREATEDATABASE<数据库名>[.DBC]功能:在当前目录下创建指定名称的数据库。例如,CREATEDATABASE教师&&在当前目录下创建数据库教师.DBC2.界面操作方式操作步骤如下:1)单击文件下拉菜单中的“新建”命令,弹出新建对话框。2)选择“数据库”按钮,单击“新建文件”按钮,打开创建对话框。3)选择保存数据库的文件夹(如,D:\VFP)并输入数据库名(如,教师工资管理),单击“保存”按钮。8.7.2向数据库中添加或移去表1.向数据库中添加表向数据库中添加的表,应该是某前不属于任何数据库的自由表。1)命令方式格式:OPENDATABASE<数据库名>|USE<数据库名>.DBCADDTABLE<表名>功能:首先打开当前目录下的数据库,然后向该数据库中添加当前目录下的一个表。例如,OPENDATABASE教师工资管理ADDTABLEJSGZ2)界面操作方式⑴执行文件下拉菜单中的“打开”命令,打开数据库(如,教师工资管理.DBC),弹出数据库设计器窗口。⑵用鼠标右键单击数据库设计器窗口的任一空白位置,在弹出快捷菜单中,单击“添加表”命令,弹出“打开”对话框。⑶打开表(如,JSJK.DBF)后,该表的窗口便出现在“数据库设计”器窗口中,表示该表已添加成功。2.从数据库中移去或删除表要从数据库中移去或删除表,可在数据库设置器窗口中选定要移去或删除的表(如,表JSJK2),并单击数据库下拉菜单中的“移去”(或按删除键Del),弹出移去或删除表对话框,单击“移去”或“删除”按钮即可。若单击“移去”,则被移去的表又成为自由表。3.数据库的打开、关闭与删除数据库文件,可以打开、关闭与删除。例如,USE教师工资管理.DBC&&不能省库文件的扩展名.DBCBROWSE&&浏览当前数据库USE教师.DBCCLOSEDATABASEALL&&关闭所有数据库DELETEDATABASE教师.DBC&&该删除命令执行时,弹出确认删除数据库对话框,单击“是”按钮,删除当前目录下的“教师.DBC”(删除数据库之前,必须关闭要删除的数据库,否则显示“文件在使用”提示信息)。8.8项目管理器8.8.1建立项目文件8.8.2打开项目文件8.8.3项目管理器的使用8.8项目管理器在VFP中,应用程序以项目为组成单位。项目是一种扩展名为.PJX文件,它是数据、文档、类库、代码及其他一些对象的集合。项目由项目管理器来维护。项目管理器以简易、可视化的方式组织处理各类文件,它既可以对项目中的数据、文档等进行集中的管理,还可以借助集成环境使项目的创建与维护更加方便。通过项目管理器可以启动相应的设计器、向导来快速的创建各类文件,并可修改、运行、添加和移去这些文件。8.8.1建立项目文件建立项目文件的操作步骤如下:1.单击文件下拉菜单中的“新建”,弹出新建对话框。2.确认选择“项目”单选框后,单击“新建文件”按钮,弹出“创建”对话框。3.在创建对话框中,选择项目文件保存的文件夹(如,D:\VFP)后在“项目文件”的文本框中输入项目文件名(如,教师管理.PJX)。4.单击“保存”按钮,弹出新建项目的项目管理器对话框,至此便完成了项目文件的建立。说明:1)项目管理器中有6个选项卡,其名称和功能如下:全部:用于显示与管理所有类型的文件。数据:包含项目中的所有数据,如,自由表、数据库、查询、视图等。文档:显示处理数据时的所有文档,如,表单、报表、标签等。类:显示与管理类库文件。代码:显示与管理各种程序代码文件。其他:显示与管理有关的菜单、文本文件、位图文件、图标文件和帮助文件。2)单击“其他”选项卡右侧的图钉按钮(有符号“”),可以折叠或展开项目管理器。折叠之后的项目管理器只有“标题栏”和“选项卡栏”。3)当打开项目管理器后,在菜单栏会出现一个“项目”菜单项。4)单击项目管理器对话框的“关闭”按钮,可关闭项目管理器。8.8.2打开项目文件1.命令方式举例:MODIFYPROJECT教师管理&&打开当前目录下的项目文件2.界面操作方式1)单击文件下拉菜单中的“打开”命令,弹出打开对话框。2)在该对话框中的“搜素”下拉列表框中选择项目文件所在的目录(如,D:\VFP),在“文件类型”的下拉列表框中选择“项目(*.pjx;*.fpc;*.cat)”“文件名”;单击项目文件列表中的项目文件名(如,教师管理.PJX),则在“文件名”文本框中显示所选的项目文件名(如,教师管理)。3)单击“确定”按钮,就打开项目文件了。8.8.3项目管理器的使用使用项目管理器,可以在项目文件中,创建或修改文件、向项目中添加或从项目中移去文件、设置项目之间的共享文件等。1.在项目文件中创建及修改文件的操作⑴打开项目文件(如,教师管理.pjx)弹出项目管理器对话框。⑵选择要创建文件的类型(如,单击数据选项卡后单击“自由表”)。⑶单击“新建”按钮(如果是修改项目中的文件,可单击“修改”按钮),弹出相应的设计器或向导(如,要新建自由表,会弹出新建表对话框,在该对话框中单击“新建表”按钮,弹出创建对话框,输入表名后单击“保存”,弹出表设计器对话框)。利用项目管理器创建的文件会自动包含在项目文件中。2.添加或移去文件1)向项目中添加文件操作⑴打开项目文件(如,教师管理.pjx),弹出项目管理器对话框。⑵选择要添加文件的类型(如,单击数据选项卡下的“数据库”),单击“添加”按钮。⑶在弹出的添加或打开对话框中,选定要添加文件名(如,在弹出的打开对话框中,选定“教师工资管理.dbc”)⑷单击“确定”按钮,即可。2)从项目文件中移去或删除文件操作⑴在打开的项目管理器(如,教师管理.pjx)对话框中,选择要移去的文件(如,单击“数据”选项卡下的“自由表”图标前的“+”在展开的数据库列表中,单击“njsjk.dbf”)。⑵单击“移去”按钮,弹出移去或删除确认对话框。⑶在确认对话框中,单击“移去”按钮,则从项目文件中移去所选择的文件;如果单击“删除”按钮,则从磁盘中删除所选择的文件。8.9查询1.利用查询设计器创建查询2.利用查询向导建立查询3.查询设计器界面

8.9查询在8.5.1中介绍了用查询命令进行查询,这里介绍使用查询向导和查询设计器两种查询工具进行查询。两种工具的查询结果,都将保存在扩展名为.QPR的文件中。1.利用查询设计器创建查询例如,利用查询设计器,在表JSJK.DBF和JSGZ.DBF中,查询教师的编号、姓名、职称、工资、岗位津贴并将查询结果保存在查询文件JSCHX.QPR中。操作步骤如下:1)打开查询设计器窗口执行文件菜单中的“打开”命令,打开“教师管理.pjx”文件;在项目管理器窗口选择“数据”选项卡,单击“新建”按钮,在弹出的新建查询对话框中单击“新建查询”按钮弹出查询设计器窗口和添加表或视图对话框。2)确定被查询的表在添加表或视图对话框中单击“其他”按钮弹出打开对话框,在该对话框中选择表“Jsjk”后单击“确定”按钮,立即将该表添加到查询设计器上部;再单击“其他”按钮,选择表“Jsgz”后单击“确定”按钮,又把表jagz添加到查询设计器上部。3)设置联接条件当把表Jsgz和Jsjk添加到查询设计器窗口后,立即弹出“联接条件”对话框,其中显示系统根据字段值自动配对的联接条件,即Jsgz.编号与Jsjk.编号进行内部联接。单击“确定”按钮,关闭添加表或视图对话框,查询设计器即成为当前窗口。(若只对单独的一个表,进行查询时,就不需要设置连接条件。但一般需要使用筛选选项卡,设置筛选条件。)4)选定输出字段在查询设计器窗口的“字段”选项卡下的“可用字段”列表框中,选择Jsjk.编号后单击“添加”按钮将其移到“选定字段”列表框中,用同样的方法将Jsjk.姓名、Jsjk.职称、Jsjk.工资、Jsgz.岗位津贴4个字段从“可用字段”列表框移到“选定字段”列表框。5)运行查询通常可单击查询菜单中的“运行查询”,弹出运行查询的结果。6)保存查询单击文件菜单中的“保存”,弹出另存为对话框,将查询以文件名jschx.qpr保存在D:\vfp下。

2.利用查询向导建立查询利用查询向导建立查询的方法比较简单,其一般操作为:进入项目管理器,选择“数据”选项卡,选定“查询”后单击“新建”按钮,在弹出的“新建查询”对话框中,单击“查询向导”按钮,按向导提示的步骤操作即可完成一个查询的创建。下面介绍利用查询设计器创建查询和查询设计器的界面。3.查询设计器的界面查询设计器窗口分为上下两个窗格。上部窗格显示已添加的表与其中的字段,还有“查询设计器”工具栏。两个表之间的连线表示他们之间设置了联接条件。如果两个表具有相同字段,则作为默认联接条件。若想修改联接条件,可双击连线。下部窗格,包括字段、联接、筛选、排序依据、分组依据及杂项6个选项卡,用来设定查询文件的各种条件。8.10视图1.建立视图2.视图的维护8.10视图视图(view)是在数据库表的基础上创建的一种虚拟表。所谓虚拟是指视图的数据是从已有的数据库表或其他视图中提取的,这些数据在数据库中并不实际存储。视图一经定义,就成为数据库的组成部分。视图与前面介绍的视图文件是截然不同的。主要是因为视图具有表的一般特性,而视图文件不具备表的一般特性。例如,查询文件的数据无法修改,不具备数据回存的性质,而视图中的数据可以修改,并且能回存到原数据表中;查询文件的的查询结果不存在于数据库中,而视图的查询结果存于数据库中。1.建立视图例如,从教师工资管理数据库所属的Jsjk和Jsgz两个表中抽取编号、姓名、工资、岗位津贴4个字段,建立名为“教师收入”的视图并浏览。操作如下:1)执行文件菜单中的“打开”命令,打开“教师管理.pjx”文件;在项目管理器窗口的“数据”选项卡下,选择“教师工资管理”数据库,单击其左侧的加号“+”,选择“本地视图”。2)单击“新建”按钮,弹出新建本地视图对话框。在该对话框中,单击“新建视图”按钮,弹出添加表或视图对话框。3)单击添加表或视图对话框中的“其他”按钮,弹出打开对话框,在该对话框中选择表Jsjk并单击“确定”按钮将其添加到视图设计器上部;再单击“其他”按钮,在打开对话框中选择表Jsgz并单击“确定”按钮,把其添加到视图设计器上部。4)当把两个表添加到视图设计器窗口后,弹出联接条件对话框。在该对话框中系统默认“内部联接”,单击“确定”按钮,返回添加表或视图对话框,单击“关闭”按钮返回视图设计器窗口。5)在视图设计器窗口选择“字段”选项卡。在“可用字段”列表框中,选择Jsjk.编号后单击“添加”按钮,将其添加到“选定字段”列表框中。用同样方法将Jsjk.姓名、Jsjk.工资、Jsgz.岗位津贴添加到“选定字段”列表框中。6)关闭视图设计器,弹出确认保存视图对话框,单击“是”按钮,弹出保存对话框,在“视图名称”文本框中,输入“教师收入”,单击“确定”按钮返回项目管理器窗口。7)单击本地视图左侧的加号“+”,选择“教师收入”后单击“浏览”按钮,弹出“教师收入”视图的浏览窗口。

2.视图的维护视图的维护主要包括对视图(如,教师收入)的重命名、修改及删除等操作。这些操作,均可在项目管理器窗口的数据选项卡下,选择数据库中相应视图后执行项目菜单中的“重命名文件”、“修改文件”及“移去”等命令,或右击项目管理器窗口的视图(如,教师收入),在弹出的快捷菜单中单击“重命名”及在选择视图后单击项目管理器窗口的“修改”、“移去”等按钮。另外,视图的维护,也有命令操作方式。8.11程序设计初步8.11.1程序文件8.11.2程序文件中的专用命令8.11.3程序的控制结构8.11.4子程序、过程和自定义函数8.11程序设计初步VFP支持传统的结构化程序设计和近年来时兴的面向对象程序设计。由于后者本章不作要求,故只围绕结构化程序设计的有关知识叙述。8.11.1程序文件在实际工作中,常常根据所要解决的问题,将VFP的命令编成特定的序列,并将它们存入扩展名为.PRG的程序文件(即命令文件或程序)。1.程序文件的建立与修改格式:MODIFYCOMMAND[盘符][路径]<文件名>[.PRG]功能:打开编辑窗口,建立或修改程序文件。说明:1)在文件名前可以指明盘符、路径,若未指明则默认为当前文件夹。如果在编辑结束时想改变程序存放的文件夹,可执行文件菜单的“另存为”命令。2)程序文件的建立,还有以下两种方法:(1)执行文件菜单中的“新建”命令,在弹出的“新建”对话框中,选择“程序”单选钮,再单击“新建文件”按钮;(2)打开某一项目管理文件,在项目管理器对话框中选择“代码”选项卡,选定“程序”项后单击“新建”按钮。3)在编辑程序文件时,应注意以下几点:⑴程序是命令行的序列,每条命令都必须以回车键结尾。一般一行只能写一条命令。若命令行太长,需要分行写时,要在分行处添加续行符“;”并按回车键换行。⑵在程序编写过程中,可以使用键盘编辑键及系统编辑菜单的“复制”、“剪贴”和“粘贴”等命令。⑶程序编辑完毕,可按Ctrl+W将文件立即存盘。⑷在程序中可插入注释,以提高程序的可读性。注释行以符号“*”开头,它是一条非执行命令,仅在程序中显示。在命令行尾部还可添加,以符号“&&”开头的注释。例如,在当前文件夹下建立计算半径为4的圆面积程序文件。在命令窗口执行命令MODIFYCOMMANDEX81并编辑下面程序。*本程序用于求圆的面积R=4&&给圆半径r赋值4S=3.14*R*R&&计算表达式的值,把结果赋给圆的面积S?“圆的面积为:”,S&&输出S的值按Ctrl+W,将程序文件EX81.PRG存盘并返回。2.程序的运行(即执行)格式:DO[盘符][路径]<文件名>[.prg]功能:运行由文件名指定的程序。该命令执行时,系统先将指定的程序文件编译成扩展名为.fxp的目标程序,然后运行该目标程序。例如,在命令窗口执行DOex81命令时,先编译生成ex81.fxp文件,然后执行目标文件并输出如下结果:圆的面积为:50.243.环境设置用SET命令来进行状态和环境的设置,SET命令有两种主要形式。1)SET<参数>ON|OFF该形式中,ON为接通参数所表示的状态,OFF为断开。例如,SETEXACTON|OFF命令,表示用“=”比较两个字符串时,是否进行精确比较,系统的默认状态为OFF。2)SET<参数>TO<参数值>该形式是将TO后面的参数值提供给SET后面的参数。例如,SETDEFAULTTOA:命令,表示指定软驱A:为当前默认驱动器。有关SET命令的功能,可参阅系统帮助。对于VFP的环境设置,除了用SET命令进行设置外,还可以执行工具菜单中的“选项”命令,在弹出的选项对话框中,进行设置。8.11.2程序文件中的专用命令在程序文件中,常常要用到一些在交互方式中不需要甚至不能执行的专用命令。1.文本输出命令格式:TEXT<文本序列>ENDTEXT功能:能把TEXT与ENDTEXT之间的文本序列内容显示出来。说明:此命令只能在程序中使用,且TEXT与ENDTEXT必须成对出现;文本序列中允许出现变量、函数和表达式,但必须先设置状态SETTEXTMERGEON,并且把它们放在符号“<<>>”之内。2.非格式化交互命令非格式化交互命令主要有INPUT、ACCEPT和WAIT3个。1)字符型数据接收命令格式:ACCEPT[提示信息]TO<内存变量>功能:暂停程序的执行,显示提示信息,等待用户输入不带定界符的字符串,按回车键结束输入。系统把用户输入的内容自动添加定界符后赋给内存变量,继续程序的执行。例如:ACCEPT"请输入查询姓名:"TOXM执行该命令,显示“请输入查询姓名:”,然后等待输入不带定界符的人名(如,吕瑞华),并按回车。2)任意类型数据接收命令格式:INPUT[提示信息]TO<内存变量>功能:暂停程序的执行,显示提示信息,等待用户输入一个表达式,按回车键结束输入。系统计算表达式的值,并把该值赋给内存变量,继续程序的执行。例如:INPUT“请输入查询姓名:”TOMC执行此命令,屏幕上显示“请输入查询姓名:”,然后等待输入带定界符的人名(如,“王景录”),并按回车。3)单字符接收命令格式:WAIT[提示信息][TO<内存变量>][WINDOW][TIMEOUT<数值表达式>]功能:暂停程序的执行,显示提示信息,等待用户按任

温馨提示

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

评论

0/150

提交评论