vf课件第四章.ppt_第1页
vf课件第四章.ppt_第2页
vf课件第四章.ppt_第3页
vf课件第四章.ppt_第4页
vf课件第四章.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 数据库和表的高级应用,4.1 数据库的使用 4.2 数据库的高级应用 4.3 设置表属性 4.4 建立表间的关系 4.5 使用多个表,4.1 数据库的使用,4.1.1 向数据库添加数据表 向数据库添加表有两种方法:菜单方式和命令方式。 菜单方式添加表 在“项目管理器”中,从“数据”选项卡中选择数据库,例如,“教师管理”数据库,如图4-1所示,单击“修改”按钮,打开“数据库设计器”,如图4-2所示。,图4-1 选择数据库,图4-2 数据库设计器,图4-3 向数据库添加表, 从“数据库”菜单中选择“添加表”命令或单击“数据库设计器”工具栏上的“添加表”按钮,在“打开”对话框中选定“jsqk

2、.dbf”,然后单击“确定”按钮。这时“jsqk.dbf”表就添加到“教师管理”数据库中了。如图4-3所示。,2. 命令方式添加表 【格式】:ADD TABLE 【功能】:向已打开的数据库中添加数据表。 在命令窗口中输入如下代码: OPEN DATABASE “教师管理” ADD TABLE jsqk.dbf 只有明确地把一个表添加到数据库中,才能使它成为数据库的一部分。即使在打开数据库后,执行MODIFY STRUCTURE命令修改表的结构,也不能把表添加到数据库中。一个表只能加入到一个数据库中,如果要把数据库中的表添加到另外一个数据库中去,必须先把该表从本数据库中移去。,4.1.2从数据库

3、中移去表 从数据库中移去一个表也可以采用菜单方式和命令方式: 1. 菜单方式移去表 在“项目管理器”中,从“数据”选项卡中选择表所在数据库,单击“修改”按钮,打开“数据库设计器”。 从“数据库设计器”菜单中单击要移去的表,例如jsqk.dbf表,此时该表标题变为深色,表明该表已被选中。, 执行系统菜单中的“数据库”下的“移去”命令,或单击“数据库设计器”工具栏上的“移去表”按钮,出现“把表从数据库中移去还是从磁盘上删除”的对话框。这里选“移去”按钮。 最后单击“确定”按钮。这时“jsqk.dbf”表就从“教师管理”数据库中移去了。 如果选择“删除”,则从当前数据库中移去表的同时,还将其从磁盘上

4、删除了。,2. 命令方式移去表 【格式】:REMOVE TABLE 【功能】:从已打开的数据库中移去数据表。 在命令窗口中输入如下代码: OPEN DATABASE “教师管理” REMOVE TABLE jsqk.dbf,4.1.3 展开或折叠一个表 4.1.4 重排数据库的表 打开数据库设计器,从“数据库”菜单中选择“重排,再从“重排表和视图”对话框中选择适当的选项.,4.2 数据库的高级应用,4.2.1 使用其它数据库中的表 若要访问其他数据库中的表,我们可以使用USE命令和“!”符号访问该表。使用“!”符号可以引用一个不在当前数据库中的表。例如:当前数据库为“教师管理”,打开数据库“学

5、生管理”中的STUDENT.DBF表,可输入如下命令: USE 学生管理!STUDENT BROWSE 这里,将自动打开数据库“学生管理”,但并不把它设为当前数据库。当关闭表时,数据库也会自动关闭。,4.2.2创建存储过程 存储过程是存储在.DBC文件中的Visual FoxPro代码,是专门操作数据库中数据的代码过程。存储过程可以提高数据库的性能,因为在打开一个数据库时,它们便加载到内存中。 如要创建、修改或移去存储过程,可以在“项目管理器”中,选择并展开一个数据库,选定“存储过程”,然后选择“新建”、“修改”或“移去”按钮。 使用存储过程主要是为了创建用户自定义函数,字段级规则和记录级规则

6、将引用这些函数,当把一个用户自定义函数作为存储过程保存在数据库中时,函数的代码保存在.DBC文件中,并且在移动数据库时,会自动随数据库移动。使用存储过程能使应用程序更容易管理,因为可以不必在数据库文件之外管理用户自定义函数。,4.2.3引用多个数据库,1. 打开多个数据库 打开一个数据库后,表和表之间的关系就由存储在该数据库中的信息来控制。您可以同时打开多个数据库。例如,在运行多个应用程序时,可以使用多个打开的数据库,每个应用程序都以不同的数据库为基础。也可能您想打开多个数据库,从而能使用应用程序数据库之外的另一数据库中的存储信息。 【方法】: 在“项目管理器”中,选定一个数据库,然后选择“修

7、改”按钮或“打开”按钮。 使用 OPEN DATABASE命令。 打开新的数据库并不关闭其他已经打开的数据库,这些已打开的数据库仍然保持打开状态,而新打开的数据库成为当前数据库。,2. 设置当前数据库 当打开多个数据库时,Visual FoxPro 将最后打开的数据库设置为当前数据库。所创建或添加到该数据库中的任何表或其他对象,均默认为当前数据库的一部分,处理打开数据库的命令和函数(例如 ADD TABLE 命令和 DBC( ) 函数)也是对当前数据库进行操作。 可通过交互方式或使用 SET DATABASE 命令选择另外一个数据库作为当前数据库。 【方法】:,在“常用工具栏”中,从“数据库”

8、框中选择一个数据库。 使用 SET DATABASE命令。 例如,下面的代码打开三个数据库,设置第一个数据库为当前数据库,然后使用 DBC( ) 函数显示当前数据库的名称: OPEN DATABASE jsdata OPEN DATABASE xsdata OPEN DATABASE jsgl SET DATABASE TO jsdata ? DBC( ),3. 选择当前数据库中的表 可以使用带“?”字符的USE命令,在当前数据库的一系列表中选择要用到的表。 例如,下面的代码打开了“教师管理”数据库,并提示您在数据库的一系列表中选定一个表: OPEN DATABASE 教师管理 USE ? 这

9、时,显示“使用”对话框后,选定并打开一个表。如果您想选定一个与当前数据库不关联的表,可选择“使用”对话框中的“其他”按钮。,4. 关闭数据库 可以使用“项目管理器”或 CLOSE DATABASE 命令关闭一个已打开的数据库。 【方法】: 从“项目管理器”中,选定要关闭的数据库并选择“关闭”按钮。 使用 CLOSE DATABASE 命令。 例如,下面的代码关闭了“教师管理”数据库: SET DATABASE TO 教师管理 CLOSE DATABASE 这两种方法都自动关闭数据库。,4.3 设置表属性,4.3.1 设置字段标题,4.3.2 为字段输入注释,4.3.3 控制字段数据输入,. 设

10、置字段默认值 . 设置有效性规则和有效性说明,4.3.4 控制记录的数据输入,1. 设置表的有效性规则,以表jsqk.dbf为例, 在“表”选项卡的“规则”框中输入下述表达式:year(csrq)2000,在“信息”框中输入:“出生年份不可能大于2000”。当在表中追加记录时,当记录的出生年份大于2000时,则给出错误提示“出生年份不可能大于2000”。如图所示。,2. 设置触发器 触发器就是一个与表紧密相关的逻辑表达式;当对表进行插入、更新或删除记录操作时,激活相应的触发器,即插入触发器、更新触发器和删除触发器,分别用于指定记录插入、更新、删除的规则。,步骤: 在项目管理器中选中jsqk.d

11、bf表,单击“修改”,进入“表设计器”对话框。 在“表设计器”中,选择“表”选项卡,设置“触发器”选项区域,如图所示。 在“插入触发器”中输入:DAY(DATE()=28;在“更新触发器”中输入:xb = 女;在“删除触发器”中输入:YEAR(csrq)1978。 单击“确定”。,当在对表进行插入操作时,必须满足插入触发器中输入的规则,也就是只有在每个月的28号才能执行插入操作。当更新记录时,只能更新性别为“女”的记录。而进行删除操作时,只能删除出生年份大于1978的记录,否则,相应触发器提示操作无法进行。,4.4 建立表间的关系,4.4.1 创建关系 在建立表之间的永久关系之前,需要为表创建

12、索引。为jsqk.dbf表中的“Bh”建立一个主索引,为jsgz.dbf表中的“Bh”建立一个普通索引。建好索引后,回到“数据库设计器”,在主表(jsqk表)的“Bh”索引标识上按下左键不放,拖动到子表(jsgz表)的“Bh”索引标识上,释放鼠标按钮,在数据库设计器中,我们可以看到两个表的索引标识之间有一条黑线相连接,表示出这两个表之间的永久关系,如图所示。这样一个关系就创建好了。,4.4.2编辑表间的关系 双击表间的关系线,出现如图所示对话框,可以选择“编辑关系”对话框中的适当设置。,所建关系的类型是由子表索引类型决定的。如上节建立的关系即为“一对多”关系,因为子表索引为普通索引,如果把子表

13、索引类型改为候选索引或主索引,则它们之间建立的关系将是“一对一”关系。,4.4.3 删除表间的关系 若要删除表间的永久关系,只要在“数据库设计器”中,单击两表间的连线。这时关系线变粗,说明该关系被选中了,这时按下DELETE键,即可删除该关系。,4.4.4 参照完整性,在具有关联关系的父子表之间编辑修改记录时可能出现以下问题: 如果在父表中删除了一条记录,则当子表中有相关的记录时,这些记录就成了孤立的记录; 当在父表中修改了索引关键字的值(如在jsqk表中修改“Bh”值),那么还需要修改子表中相应记录的关键字值,否则就会产生错误。反过来也一样; 在子表中增加记录时,如果所增加记录的关键字值是父

14、表中没有的,则增加在子表中的记录也成了孤立的记录。 出现以上的任何一种情况,都会破坏关系表的完整性。在VFP中通过建立参照完整性,系统可以自动完成这些工作,防止这些问题的出现。,级联:不论何时更改父表中的某个字段, Visual FoxPro 都会自动更改所有相关子表记录中的对应值。 限制:则禁止更改父表中的主关键字段或候选关键字段中的值,这样在子表中就不会出现孤立的记录。 忽略:则即使在子表中有相关的记录,仍允许更新父表中的记录。,4.5 使用多个表,若要使用多个表,就要使用多个工作区。一个工作区是一个编号区域,它标识一个已打开的表。可以在32767个工作区中打开和操作 Visual Fox

15、Pro 表。在应用程序中工作区通常通过使用该工作区的表的别名来标识。表别名是一个名称,它可以引用在工作区中打开的表。,4.5.1 查看工作区,从“窗口”菜单选择“数据工作期”,打开“数据工作期”窗口,可查看在一个Visual FoxPro工作期中已打开表的列表。如图所示,在当前“数据工作期”中可以看到当前打开了jsgz表,它在工作区1中。,4.5.2在工作区中打开表,可以使用“数据工作期”窗口或使用 USE 命令在工作区中打开表。 1. 使用“数据工作期”打开表 在“数据工作期”窗口中,选择“打开”。 出现如图所示对话框,在数据库“教师管理”中我们选择表jsqk.dbf,并以独占方式打开。,2

16、. 使用命令方式打开表 【格式】:USE IN 例如:在工作区3中打开表jsqk.dbf。 在命令窗口输入:USEjsqkIN3 如果要在最低可用工作区中打开表,可以在 USE 命令 IN 子句后面加工作区 0。例如,如果工作区 1 到 10 中都有打开的表,可以使用以下命令,在工作区 11 中 打开表: USE jsqk IN 0 一个工作区中,不能同时打开多个表。,4.5.3 在工作区中关闭表,若要在工作区中关闭表,可在“数据工作期”窗口中选定要关闭的表别名,然后选择“关闭”。 或者使用USE命令的IN子句,指出想要关闭的表所在的工作区。 如:USE IN 1,指关闭工作区1中打开的表。,

17、4.5.4 引用工作区,1. 使用表别名 表别名是 Visual FoxPro 用来指定在一个工作区中打开的表的名称。打开一个表时,Visual FoxPro 自动使用文件名作为默认表别名。例如,如果用下面的命令在 0 号工作区打开文件jsqk.dbf,则自动为表指定默认别名 jsqk: SELECT 0 USE jsqk 然后,可以使用别名 jsqk在命令或函数中标识该表。也可创建自己的别名。 创建用户自定义别名可以用如下命令: 【格式】:USE ALIAS 例如,可以使用以下命令,在1号工作区中打开文件jsqk.dbf,并为它指定一个别名“教师情况”: SELECT 1 USE jsqk

18、ALIAS 教师情况,2. 使用别名选择工作区,通过表别名,使用SELECT命令可以从一个工作区移到另一个工作区。例如:如果在一个工作区中打开jsqk.dbf表,并且表的别名为“教师情况”。当前工作区不是表所在工作区,则可以通过SELECT命令,移到表所在工作区:SELECT 教师情况。,4.5.5 设置表间的临时关系,通过SET RELATION命令可以设置表间的临时关系,这与索引不同,索引用于在数据库中建立表间的永久关系。永久关系在每次使用表时不需要重新创建,但由于永久关系并不控制表中记录指针间的关系,因此在开发Visual FoxPro应用程序时,不仅需用永久关系,也需使用临时的关系。

19、在建立表间的临时关系后,就会使得一个表(子表)的记录指针自动随另一个表(父表)的记录指针移动。这样,便允许当在关系中的一方选择一个记录时,会自动去访问表关系中另一方的相关记录。,. 临时关联表,可以通过“数据工作期“窗口或使用命令来创建表间的临时关系。 用“数据工作期”窗口中,选定要关联的表,然后使用“关系”按钮创建关系。 用SET RELATION命令 【格式】: SET RELATION TO INTO /, INTO /IN /ADDITIVE 【功能】:在两个表之间建立关联。 【说明】: :指定用来在子表和父表之间建立关联的关联表达式。关联表达式通常是子表主控索引的索引表达式。,记录号函数RECNO()。此时,两个或多个关联表之间的联系是根据记录号来进行关联的,关联表与被关联表之间当前记录号保持相等。如果关联表记录的记录号大于被关联表的记录总数,则被关联表的当前记录指针指向最后一条记录的下一条记录,EOF()函数值为.T.。 数值型表达式。此时,在表达式中通常含有RECNO()函数,每当关联表的记录指针重新定位时,

温馨提示

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

评论

0/150

提交评论