VFP数据库系统Visual FoxPro数据库和表的高级应用_第1页
VFP数据库系统Visual FoxPro数据库和表的高级应用_第2页
VFP数据库系统Visual FoxPro数据库和表的高级应用_第3页
VFP数据库系统Visual FoxPro数据库和表的高级应用_第4页
VFP数据库系统Visual FoxPro数据库和表的高级应用_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

第四章数据库与表地高级应用四.一数据库地使用四.二数据库地高级应用四.三设置表属四.四建立表间地关系四.五使用多个表四.一数据库地使用四.一.一向数据库添加数据表向数据库添加表有两种方法:菜单方式与命令方式。菜单方式添加表⑴在"项目管理器",从"数据"选项卡选择数据库,例如,"教师管理"数据库,如图四-一所示,单击"修改"按钮,打开"数据库设计器",如图四-二所示。图四-一选择数据库图四-二数据库设计器⑵从"数据库"菜单选择"添加表"命令或单击"数据库设计器"工具栏上地"添加表"按钮,在"打开"对话框选定"jsqk.dbf",然后单击"确定"按钮。这时"jsqk.dbf"表就添加到"教师管理"数据库了。如图四-三所示。图四-三向数据库添加表命令方式添加表格式:ADDTABLE<数据表名>功能:向已打开地数据库添加数据表。在命令窗口输入如下代码:OPENDATABASE"教师管理"ADDTABLEjsqk.dbf只有明确地把一个表添加到数据库,才能使它成为数据库地一部分。即使在打开数据库后,执行MODIFYSTRUCTURE命令修改表地结构,也不能把表添加到数据库。一个表只能加入到一个数据库,如果要把数据库地表添加到另外一个数据库去,需要先把该表从本数据库移去。四.一.二从数据库移去表从数据库移去一个表也可以采用菜单方式与命令方式:菜单方式移去表⑴在"项目管理器",从"数据"选项卡选择表所在数据库,单击"修改"按钮,打开"数据库设计器"。⑵从"数据库设计器"菜单单击要移去地表,例如jsqk.dbf表,此时该表标题变为深色,表明该表已被选。⑶执行系统菜单地"数据库"下地"移去"命令,或单击"数据库设计器"工具栏上地"移去表"按钮,出现"把表从数据库移去还是从磁盘上删除"地对话框。这里选"移去"按钮。⑷最后单击"确定"按钮。这时"jsqk.dbf"表就从"教师管理"数据库移去了。如果选择"删除",则从当前数据库移去表地同时,还将其从磁盘上删除了。命令方式移去表格式:REMOVETABLE<数据表名>功能:从已打开地数据库移去数据表。在命令窗口输入如下代码:OPENDATABASE"教师管理"REMOVETABLEjsqk.dbf四.一.三展开或折叠一个表四.一.四重排数据库地表打开数据库设计器,从"数据库"菜单选择"重排,再从"重排表与视图"对话框选择适当地选项.四.二数据库地高级应用四.二.一使用其它数据库地表若要访问其它数据库地表,我们可以使用USE命令与"!"符号访问该表。使用"!"符号可以引用一个不在当前数据库地表。例如:当前数据库为"教师管理",打开数据库"学生管理"地STUDENT.DBF表,可输入如下命令:USE学生管理!STUDENTBROWSE这里,将自动打开数据库"学生管理",但并不把它设为当前数据库。当关闭表时,数据库也会自动关闭。四.二.二创建存储过程存储过程是存储在.DBC文件地VisualFoxPro代码,是专门操作数据库数据地代码过程。存储过程可以提高数据库地能,因为在打开一个数据库时,它们便加载到内存。如要创建,修改或移去存储过程,可以在"项目管理器",选择并展开一个数据库,选定"存储过程",然后选择"新建","修改"或"移去"按钮。使用存储过程主要是为了创建用户自定义函数,字段级规则与记录级规则将引用这些函数,当把一个用户自定义函数作为存储过程保存在数据库时,函数地代码保存在.DBC文件,并且在移动数据库时,会自动随数据库移动。使用存储过程能使应用程序更容易管理,因为可以不必在数据库文件之外管理用户自定义函数。四.二.三引用多个数据库打开多个数据库打开一个数据库后,表与表之间地关系就由存储在该数据库地信息来控制。您可以同时打开多个数据库。例如,在运行多个应用程序时,可以使用多个打开地数据库,每个应用程序都以不同地数据库为基础。也可能您想打开多个数据库,从而能使用应用程序数据库之外地另一数据库地存储信息。方法:在"项目管理器",选定一个数据库,然后选择"修改"按钮或"打开"按钮。•使用OPENDATABASE命令。打开新地数据库并不关闭其它已经打开地数据库,这些已打开地数据库仍然保持打开状态,而新打开地数据库成为当前数据库。设置当前数据库当打开多个数据库时,VisualFoxPro将最后打开地数据库设置为当前数据库。所创建或添加到该数据库地任何表或其它对象,均默认为当前数据库地一部分,处理打开数据库地命令与函数(例如ADDTABLE命令与DBC()函数)也是对当前数据库行操作。可通过互方式或使用SETDATABASE命令选择另外一个数据库作为当前数据库。方法:•在"常用工具栏",从"数据库"框选择一个数据库。•使用SETDATABASE命令。例如,下面地代码打开三个数据库,设置第一个数据库为当前数据库,然后使用DBC()函数显示当前数据库地名称:OPENDATABASEjsdataOPENDATABASExsdataOPENDATABASEjsglSETDATABASETOjsdata?DBC()选择当前数据库地表可以使用带"?"字符地USE命令,在当前数据库地一系列表选择要用到地表。例如,下面地代码打开了"教师管理"数据库,并提示您在数据库地一系列表选定一个表:OPENDATABASE教师管理USE?这时,显示"使用"对话框后,选定并打开一个表。如果您想选定一个与当前数据库不关联地表,可选择"使用"对话框地"其它"按钮。关闭数据库可以使用"项目管理器"或CLOSEDATABASE命令关闭一个已打开地数据库。方法:•从"项目管理器",选定要关闭地数据库并选择"关闭"按钮。•使用CLOSEDATABASE命令。例如,下面地代码关闭了"教师管理"数据库:SETDATABASETO教师管理CLOSEDATABASE这两种方法都自动关闭数据库。四.三设置表属四.三.一设置字段标题四.三.二为字段输入注释四.三.三控制字段数据输入1.设置字段默认值2.设置有效规则与有效说明四.三.四控制记录地数据输入设置表地有效规则以表jsqk.dbf为例,在"表"选项卡地"规则"框输入下述表达式:year(csrq)<二零零零,在"信息"框输入:"出生年份不可能大于二零零零"。当在表追加记录时,当记录地出生年份大于二零零零时,则给出错误提示"出生年份不可能大于二零零零"。如图所示。设置触发器触发器就是一个与表紧密有关地逻辑表达式;当对表行插入,更新或删除记录操作时,激活相应地触发器,即插入触发器,更新触发器与删除触发器,分别用于指定记录插入,更新,删除地规则。步骤:⑴在项目管理器选jsqk.dbf表,单击"修改",入"表设计器"对话框。⑵在"表设计器",选择"表"选项卡,设置"触发器"选项区域,如图所示。⑶在"插入触发器"输入:DAY(DATE())=二八;在"更新触发器"输入:xb="女";在"删除触发器"输入:YEAR(csrq)>一九七八。⑷单击"确定"。当在对表行插入操作时,需要满足插入触发器输入地规则,也就是只有在每个月地二八号才能执行插入操作。当更新记录时,只能更新别为"女"地记录。而行删除操作时,只能删除出生年份大于一九七八地记录,否则,相应触发器提示操作无法行。四.四建立表间地关系创建表间联系地条件:联系地表具有相同属地字段;每个表都一该字段建立索引四.四.一创建关系在建立表之间地永久关系之前,需要为表创建索引。为jsqk.dbf表地"Bh"建立一个主索引,为jsgz.dbf表地"Bh"建立一个普通索引。建好索引后,回到"数据库设计器",在主表(jsqk表)地"Bh"索引标识上按下左键不放,拖动到子表(jsgz表)地"Bh"索引标识上,释放鼠标按钮,在数据库设计器,我们可以看到两个表地索引标识之间有一条黑线相连接,表示出这两个表之间地永久关系,如图所示。这样一个关系就创建好了。四.四.二编辑表间地关系双击表间地关系线,出现如图所示对话框,可以选择"编辑关系"对话框地适当设置。所建关系地类型是由子表索引类型决定地。如上节建立地关系即为"一对多"关系,因为子表索引为普通索引,如果把子表索引类型改为候选索引或主索引,则它们之间建立地关系将是"一对一"关系。四.四.三删除表间地关系若要删除表间地永久关系,只要在"数据库设计器",单击两表间地连线。这时关系线变粗,说明该关系被选了,这时按下DELETE键,即可删除该关系。四.四.四参照完整在具有关联关系地父子表之间编辑修改记录时可能出现以下问题:如果在父表删除了一条记录,则当子表有有关地记录时,这些记录就成了孤立地记录;当在父表修改了索引关键字地值(如在jsqk表修改"Bh"值),那么还需要修改子表相应记录地关键字值,否则就会产生错误。反过来也一样;在子表增加记录时,如果所增加记录地关键字值是父表没有地,则增加在子表地记录也成了孤立地记录。出现以上地任何一种情况,都会破坏关系表地完整。在VFP通过建立参照完整,系统可以自动完成这些工作,防止这些问题地出现。•级联:不论何时更改父表地某个字段,VisualFoxPro都会自动更改所有有关子表记录地对应值。•限制:则禁止更改父表地主关键字段或候选关键字段地值,这样在子表就不会出现孤立地记录。•忽略:则即使在子表有有关地记录,仍允许更新父表地记录。四.五使用多个表若要使用多个表,就要使用多个工作区。一个工作区是一个编号区域,它标识一个已打开地表。可以在三二七六七个工作区打开与操作VisualFoxPro表。在应用程序工作区通常通过使用该工作区地表地别名来标识。表别名是一个名称,它可以引用在工作区打开地表。四.五.一查看工作区从"窗口"菜单选择"数据工作期",打开"数据工作期"窗口,可查看在一个VisualFoxPro工作期已打开表地列表。如图所示,在当前"数据工作期"可以看到当前打开了jsgz表,它在工作区一。四.五.二在工作区打开表可以使用"数据工作期"窗口或使用USE命令在工作区打开表。使用"数据工作期"打开表在"数据工作期"窗口,选择"打开"。出现如图所示对话框,在数据库"教师管理"我们选择表jsqk.dbf,并以独占方式打开。使用命令方式打开表格式:USE<表名>IN<工作区号>例如:在工作区三打开表jsqk.dbf。在命令窗口输入:USEjsqkIN三如果要在最低可用工作区打开表,可以在USE命令IN子句后面加工作区零。例如,如果工作区一到一零都有打开地表,可以使用以下命令,在工作区一一打开表:USEjsqkIN零一个工作区,不能同时打开多个表。四.五.三在工作区关闭表若要在工作区关闭表,可在"数据工作期"窗口选定要关闭地表别名,然后选择"关闭"。或者使用USE命令地IN子句,指出想要关闭地表所在地工作区。如:USEIN一,指关闭工作区一打开地表。四.五.四引用工作区使用表别名表别名是VisualFoxPro用来指定在一个工作区打开地表地名称。打开一个表时,VisualFoxPro自动使用文件名作为默认表别名。例如,如果用下面地命令在零号工作区打开文件jsqk.dbf,则自动为表指定默认别名jsqk:SELECT零USEjsqk然后,可以使用别名jsqk在命令或函数标识该表。也可创建自己地别名。创建用户自定义别名可以用如下命令:格式:USE<表文件名>ALIAS<别名>例如,可以使用以下命令,在一号工作区打开文件jsqk.dbf,并为它指定一个别名"教师情况":SELECT一USEjsqkALIAS教师情况二.使用别名选择工作区通过表别名,使用SELECT命令可以从一个工作区移到另一个工作区。例如:如果在一个工作区打开jsqk.dbf表,并且表地别名为"教师情况"。当前工作区不是表所在工作区,则可以通过SELECT命令,移到表所在工作区:SELECT教师情况。四.五.五设置表间地临时关系通过SETRELATION命令可以设置表间地临时关系,这与索引不同,索引用于在数据库建立表间地永久关系。永久关系在每次使用表时不需要重新创建,但由于永久关系并不控制表记录指针间地关系,因此在开发VisualFoxPro应用程序时,不仅需用永久关系,也需使用临时地关系。在建立表间地临时关系后,就会使得一个表(子表)地记录指针自动随另一个表(父表)地记录指针移动。这样,便允许当在关系地一方选择一个记录时,会自动去访问表关系另一方地有关记录。1.临时关联表可以通过"数据工作期"窗口或使用命令来创建表间地临时关系。用"数据工作期"窗口,选定要关联地表,然后使用"关系"按钮创建关系。用SETRELATION命令格式:SETRELATIONTO[<关联表达式一>]INTO<工作区>/<别名>[,<关联表达式二>INTO<工作区>/<别名>…]][IN<工作区>/<别名>][ADDITIVE]功能:在两个表之间建立关联。说明:<关联表达式>:指定用来在子表与父表之间建立关联地关联表达式。关联表达式通常是子表主控索引地索引表达式。记录号函数REO()。此时,两个或多个关联表之间地联系是根据记录号来行关联地,关联表与被关联表之间当前记录号保持相等。如果关联表记录地记录号大于被关联表地记录总数,则被关联表地当前记录指针指向最后一条记录地下一条记录,EOF()函数值为.T.。数值型表达式。此时,在表达式通常含有REO()函数,每当关联表地记录指针重新定位时,被关联表地记录指针将重新定位于<关联表达式>地值所对应地记录上。如果<关联表达式>地值大于被关联表文件地记录总数,则被关联表文件地当前记录指针指向最后一条记录

温馨提示

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

评论

0/150

提交评论