1、创建并管理项目(一一)、两个基本概念、两个基本概念1、项目:、项目:在VFP中应用系统所包含的文件、数据、文档和对象等组件,构成一个VFP项目。VFP中的项目以文件的形式存在指定的位置上,其扩展名其扩展名为为“.PJX”2、项目管理器:、项目管理器:是维护和管理项目所用的工具,帮助用户管理和组织每个应用系统所需要的所有程序、表单、库、报表、标签和一些其它类型的文件。二、创建项目的实现方法二、创建项目的实现方法1、VFP的文件菜单新建菜单项2、在新建的对话框中选择文件类型项目“向导”按钮3、在“工具-向导-应用程序”对话框进行4、可以将数据库应用系统编译成可独立运行的 EXE文件。(在项目管理器
2、中选连编)三、项目管理器介绍三、项目管理器介绍返回第7章 数据库及表的操作l数据库、表的设计l数据表的基本操作l数据库的基本操作第一节、数据库、表的设计1、创建和使用数据库2、数据表结构的设置3、表结构的基本操作返回一、创建和使用数据库一、创建和使用数据库l创建工作目录创建工作目录l创建数据库创建数据库 创建表创建表:创建自由表创建自由表 创建数据表创建数据表返回创建工作目录1、引入的原因:、引入的原因:VFP默认的工作目录位于VFP主目录,如果用户将自己开发的数据都放在主目录中,会造成文件过多混乱。因此VFP允许用户修改默认目录,创建自己的工作目录。2、实现方法:、实现方法:1)确定工作目录
3、文件夹)是否存在)确定工作目录(文件夹)是否存在2)VFP工具工具菜单菜单选项选项菜单项菜单项“文文件位置件位置”选项卡设置。选项卡设置。返回创建数据库方法方法1:在项目管理器中进行:在项目管理器中进行:数据选项卡“数据库”“新建”按钮根据”新建数据库“对话框进行回答。方法方法2:利用菜单命令进行:利用菜单命令进行:文件子菜单“新建”命令根据”新建“对话框进行回答。方法方法3:利用命令进行:利用命令进行:在命令窗口中键入:CREATE DATABASE 数据库名 在在VFP中,数据库是用于组织和联系表,提供存中,数据库是用于组织和联系表,提供存储数据和管理数据的一种体系结构。其文件扩展名储数
4、据和管理数据的一种体系结构。其文件扩展名为为.DBC在建立表结构以前,首先应该根据用户的需求,明确所要创建的表中应该包含哪些字段,每个字段的名称、类型和宽度。(学生情况)表基本情况应包括:学号、姓名、性别、出生日期、班级、电话等内容。结构如下:一、建立表前的准备一、建立表前的准备返回(一)、使用命令建立表结构:(一)、使用命令建立表结构:格式:格式:CREATE 功能:建立一个表文件。说明:输入命令后,按Enter键,屏幕上会出现“表设计器”对话框,利用该对话框即可建立表的结构。1、建立表结构是指原来磁盘上没有这个表文件,通过CREATE命令的执行,在磁盘上建立起一个新的表文件,若定义了备注型
5、字段,则同时建立了一个.FPT为扩展名的表备注文件。2、若在文件名前指定了驱动器标识符,则文件建立在指定的驱动器上,否则建立在当前驱动器上。3、不指定文件扩展名时,缺省扩展名为.DBF。二、建立表的基本结构二、建立表的基本结构4、若磁盘上存在这个文件或文件重名,系统显示一个警告对话框,提示是否要改写表。如果需要改写,则选择【是】,否则选择【否】。5、不要用A-J单个字母作为表文件名,因为他们是专门用于工作区的别名。(二)、使用菜单创建表 文件新建根据新建对话框进行回答(三)、使用项目管理器创建表结构 返回二、表结构的设置l设置字段的属性l改变字段的位置l插入字段l删除字段l修改字段往前插往前插
6、返回建立数据表时,不仅可以定义字段的名称,数据类型,字段宽度等信息,而且可以设置字段其它相关的属性。1、设置字段的显示格式:2、设置字段的掩码。3、设置字段的标题。4、设置字段的有效性。5、设置字段的缺省值。1、设置字段的显示格式 确定一个字段在数据浏览窗口、报表或表单中的显示方式。常用的格式码有:A:表示只允许输出文字文字字符,禁止显示数字、空格或标点符号。B:表示使用系统当前设置的日期格式。L:表示在数值前显示填充的前导为零,而不用空:表示在数值前显示填充的前导为零,而不用空格字符。格字符。T:表示禁止输入字段的前导空格和结尾空格字符。!:表示把输入的小写字母转换为大写字母。!:表示把输入
7、的小写字母转换为大写字母。2、设置字段的掩码:主要用于限制字段的输入格式。使用掩码可以屏蔽非法格式的输入,减少人为的数据输入错误,提高输入的工作效率。常用的输入掩码字符为:X:表示可以输入任何字符。:表示可以输入任何字符。9:表示可以输入数字和正负符号。:表示可以输入数字和正负符号。#:表示可以输入数字、空格和正负符号。:表示可以输入数字、空格和正负符号。$:表示在固定位置上显示当前货币符号。*:表示在值的左侧显示星号。3、设置字段的标题:在数据浏览窗口中,所设置的标题将会代替原来的字段标题显示,增强字段的可读性。例:在学生信息表的设计中,1)把”姓名“和”性别“的字段的显示格式设置为AT(只
8、能接受字母或汉字输入,而不能输入空格、数字等)2)指定”入学成绩“字段的输入掩码为”999.9“3)指定“姓名”的标题为“学生姓名”4、设置字段的有效性:、设置字段的有效性:设置字段的显示属性可以防止非法数据的输入,但是它不能限制这些合法的字符组合在一起是否合法,是否符合逻辑。因此可以通过设置字段的有效性规则防止录入不合法和不合逻辑的数据。当一个字段数据通过了字段显示格式和输入掩码的限制以后,还要通过字段的有效性验证才能存储在字段中。规则:设置有效性数据必须满足的条件。信息:输入违反有效性规则时要显示的信息内容。(信息内容必须用引号括起)5、设置字段的默认值:、设置字段的默认值:字段的默认值是
9、指向数据表添加新的记录时,该字段可字段的默认值是指向数据表添加新的记录时,该字段可以是预先准备好的数值或字符串。以是预先准备好的数值或字符串。使用默认值能加快数据的输入速度,除非想输入不同的值,否则可以跳过该字段。例:对“入学成绩”字段加上有效性检查规则:入学成绩500信息:“入学成绩必须大于500”例如:对”性别“字段加上缺省值。默认值:”男“返回显示表结构具体实现方法:(采用命令方式)1)打开数据表)打开数据表 USE 数据表名 设置默认的驱动器和目录:set defa to 路径路径 2)发出命令:)发出命令:LIST STRUCTURE TO PRINTERPROMPT/TO FILE
10、DISPLAY STRUCTURE TO PRINTERPROMPT/TO FILE功能:显示当前表结构的有关信息。包括表文件名、记录个数、最后一次修改日期、各字段的字段号、字段名、类型、宽度和小数位,一条记录的字节总数。参数说明:TO PRINTER子句表示将操作结果送到打印机。后面可以接PROMPT参数,这一参数的在执行打印命令之前,先打开“打印设置”对话框,用以对打印机有关参数(如纸张大小、打印范围等)进行设置。PROMPT参数只能紧接TO PRINTER命令。TO FILE子句表示将操作结果输出到指定的磁盘文件中。LIST STRUCTURE和和DISPLAY STRUCTURE命令的
11、区别命令的区别DISPLAY STRUCTURE在每显示一屏信息后暂停,等待用户按任意一键后继续显示;LIST STRUCTURE显示信息时没有周期性暂停,而是连续向下显示,直到显示完毕。例如:set defa to e:studentdata use stu list stru|disp stru复制表结构结构l打开数据表l发出命令:COPY STRUCTURE TO FIELDS 例如:USE ST.DBF COPY STRU TO A2 FIELDS 姓名,性别 USE A2 LIST STRU 返回数据表的整体操作l数据表的复制l工作区的选择l表的关联l表级的完整性约束返回数据表的复制
12、1、一般格式:copy to 范围fields|WHILE2、功能:将当前数据表(记录和结构)的全部或部分复制到指定的数据库文件中。clearset defa to f:tempdatause gradecopy to a1use a1Browuse示例:示例:返回clearset defa to f:tempdatause gradecopy to a1 fields 学号,总分,名次use a1Browuse例如:例如:工作区的选择工作区的选择一、引入的原因:在进行数据的操作过程中,如果需要同时打开多个数据表进行多表间的相互操作,就涉及到工作区的问题。在某一时刻在一个工作区只能打开一个数据
13、表,若在同一个工作区打开另一个数据表,则原先打开的数据表将自动关闭。在VFP中允许同时在内存中开辟32767个工作区,每个工作区都有一个编号,编号从1开始。二、工作区的选择:二、工作区的选择:虽然可以同时使用多个工作区,但在任一时刻只虽然可以同时使用多个工作区,但在任一时刻只能选定其中的一个作为当前操作的工作区。能选定其中的一个作为当前操作的工作区。工作区选择的命令格式:工作区选择的命令格式:select 功能功能:选择某个内存工作区作为当前工作区。选择某个内存工作区作为当前工作区。说明:说明:1)工作区通常用阿拉伯数字表示,前)工作区通常用阿拉伯数字表示,前10个工作区个工作区还可以分别用字
14、母还可以分别用字母AJ表示。表示。2)别名是代表打开的数据表文件的一个简短名称。)别名是代表打开的数据表文件的一个简短名称。打开数据表并为其指定别名的命令格式:打开数据表并为其指定别名的命令格式:USE 数据表名数据表名 ALIAS 别名别名 若已用此命令为打开的数据表定义了别名,则可若已用此命令为打开的数据表定义了别名,则可用别名来选择该数据表所在的工作区。用别名来选择该数据表所在的工作区。3)若执行)若执行SELECT 0命令,则表示选择编号最小的命令,则表示选择编号最小的可用工作区。可用工作区。set defa to f:tempdataselect buse st alias bsts
15、elect ause gradeBrowuse工作区选择示例:工作区选择示例:SELETE bSELETE 2SELETE bst以下选择工作区三者等价3、多工作区操作规则、多工作区操作规则1)同一数据表文件不能同时在多个工作区打开。2)当前选择的工作区称为主工作区,在其内打开的数据表为主表;其它工作区称为别名工作区,在其内打开的数据表被称为别名表。系统启动后自动选择1号工作区作为主工作区。3)各工作区中打开的数据表都有各自的记录指针,若各表之间未建立逻辑关联时,则对主工作区进行的各种操作都不影响其他工作区中数据表记录指针的位置。4)在当前工作区操作时,若要访问其他工作区中的数据表的某个字段,
16、则需要用“别名别名.字段名字段名”或或“别名别名字段名字段名”的格式来指定。其中的别名可以是在打开数据表时定义的别名,也可以是表示工作区的特定字母。clearset defa to f:tempdataselect 1use st alias bstselect 2use gradelist fields 学号,姓名,名次&显示显示GRADE表中的内容表中的内容list fields bst-出生日期&显示显示ST表中的内容表中的内容close all 注意:其它工作区数据表的记录指针的注意:其它工作区数据表的记录指针的EOF()为假。()为假。返回表的关联表的关联一、表与表之间的关联种类:(
17、1)1:1关联(2)1:N关联(3)M:N关联二、表与表之间关联的方式:1)永久关系 2)临时关系数据库中表的永久关联:数据库中表的永久关联:1、永久关联的作用、永久关联的作用(P144)A、在查询设计器和视图设计器中,自动作为默认连接条件、在查询设计器和视图设计器中,自动作为默认连接条件 B、在、在“数据库设计器数据库设计器”中,显示为联系表索引的线。中,显示为联系表索引的线。C、作为表单和报表的默认关系,在、作为表单和报表的默认关系,在“数据环境设计器数据环境设计器”中中显示。显示。2、关联的步骤:、关联的步骤:A、关联前的准备:、关联前的准备:1)需要有公共的字段以及以这些字段为依据建立
18、的相应索引)需要有公共的字段以及以这些字段为依据建立的相应索引 公共的字段:主关键字和外部关键字。公共的字段:主关键字和外部关键字。其中主关键字(在发出关联的表中),为该关键字建立一个主索引(候选索引)。外部关键字(存在于被关联的表中),一般为该关键字建立一个普通索引。以主关键字段和外部关键字段创建的索引必须有相同的索引表达式。2)创建永久关系 具体实现方法:打开“数据库设计器”,在表之间进行连线即可。在VFP中,“一对多”关系的“一方”用关键字建立的主索引。“多方”可以是建立普通索引或唯一索引。若被关联表中的索引是主索引或候选索引,则将自动建立“一对一”的永久关系。建立数据表关系的类型是由子
19、表(被关联的表)的索引类型决定的,当子表为主索引或候选索引时,建立的关系为“一对一”关系,当子表的索引为普通索引或唯一索引时,建立的关系为“一对多”关系。对于“多对多”关系,在数据库的设计中,将“多对多关系”转化为“一对一”或“一对多”关系。数据表的完整性约束数据表的完整性约束1、记录级的有效性检查。(、记录级的有效性检查。(P129)A)作用:)作用:记录的有效性规则的设置是用来指定同一记录不记录的有效性规则的设置是用来指定同一记录不同字段间的逻辑关系。同字段间的逻辑关系。如在商品的销售表中:如在商品的销售表中:销售量,库存量销售量,库存量:销售量必须不能大于库存量。:销售量必须不能大于库存
20、量。在学生信息表中:在学生信息表中:年龄,出生日期:年龄年龄,出生日期:年龄=year(date()-year(出生日期)出生日期)B)设置表记录的有效性检查:)设置表记录的有效性检查:具体实现方法:具体实现方法:打开打开“表设计器表设计器”“表表”选项卡选项卡“记录有效记录有效性性”2、触发器(、触发器(P129-130)A)功能:)功能:是指对数据库中的记录进行插入、删除、更新是指对数据库中的记录进行插入、删除、更新操作时将触发的检验规则。操作时将触发的检验规则。B)分类:)分类:插入触发器插入触发器:用于指定记录插入规则,该规则可以是逻辑表达式也可以是自定义函数。更新触发器更新触发器:用
21、于指定记录的修改规则,该规则可以是逻辑表达式也可以是自定义函数。删除触发器删除触发器:用于指定记录的删除规则,该规则可以是逻辑表达式也可以是自定义函数。当表达式或自定义函数的结果为表达式或自定义函数的结果为“真真”时时,所进行的操作的被接受,否则所作的操作将不被接受。例如:在某销售表中:若规定要删除某记录信息时,要求其库存量必须为零时才能进行删除,否则拒绝其操作。实现该操作可以在销售表中定义一个“删除触发器”方法一:利用表达式方法一:利用表达式 1)打开“表设计器”2)选择“表”选项 3)在“删除触发器”中键入“库存量库存量=0”方法二:利用存储过程实现。Function 删除记录if kuc
22、un=0 return.t.else return.f.endif参照完整性(参照完整性(P145-148)1、定义:、定义:建立一组数据表之间的规则,当进行插入、更新或删除表中记录时,可保证各相关数据表之间数据的完整性。2、功能:、功能:1)当主表中没有相应的记录时,关联表中不得添加相关记录。2)若主表中的数据被改变时将导致关联表中出现孤立记录时,则主表中的这个数据不能被改变。3)若主表中的记录在关联表中有匹配记录,则主表中的这个记录不能被修改。3、参照完整性的设置1)打开“参照完整性生成器”双击两个数据表之间的联线“编辑关系”“参照完整性”2)根据所打开的对话框进行相关设置。参照完整性是建立在具有永久性关系的数据库表之间的数据编辑时的约束规则。用于控制数据的一致性,尤其是不同表的主关键字和外部关键字之间关系的一致性。示范例:(以教学数据库为例)学生表(student),选课表(sc)关系:“一对多”关系1、打开“数据库设计器”2、双击两表之间的连线3、在弹出的对话框中选择”参照完整性“4、在”参照完整性生成器中“,选择“更新规则”“级联”返回数据库的基本操作数据库的基本操作1、数据库的打开与关闭 OPEN DATABASE 数据库文件名 CLOSE DATABSE 2、数据库的修改 MODIFY DATABASE 3、删除数据库 DELETE DATABASE返回






