ORACLE培训资料.doc_第1页
ORACLE培训资料.doc_第2页
ORACLE培训资料.doc_第3页
ORACLE培训资料.doc_第4页
ORACLE培训资料.doc_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

前 言Oracle Forms是Oracle Developer中的一个主要产品,是一个在Windows环境下开发和运行的基于表格的开发工具。Forms一般翻译成“表格”,但与纸上的表格有很大的区别,纸上的表格是事先画好的、静态的,只能用一次。而Forms是动态的,不但可修改,而且可完成更多工作,如:查询、分类、统计和效验等。Forms是一个允许用户添加、修改、删除和查询数据库记录的用户界面。利用Forms可以快速开发基于表格的多种应用程序,用于表示和操纵数据库的数据。Forms已经将Oracle数据库直接与应用程序开发软件捆绑在一起,使开发变的容易、快速。Forms运行在Windows环境下,具有非常友好的图形界面,提供丰富的图形处理功能和对象编辑工具,为应用程序开发和维护提提供许多方便。Forms还可以处理照片、图像等,为应用提供更复杂界面。Forms完全使用屏幕图形窗口和工具,操作非常直接方便。目 录第一章 Form基本概念1. 什么是Form2. Form模块的结构3. Form模块的层次结构4. Form模块文件组成第二章 Form的工作方式1. Form应用模块的生成2. 运行Form模块3. Form工作模式4. 查询数据5. 插入、更新和删除数据6. 提交和回滚事务第三章 Form设计工具1. Form界面设计2. 对象导航器3. 布局编辑器4. 属性选项板5. 其他Form设计工具第四章 基本Form设计1. 块和项2. 开发Form的一般步骤3. 建立基表块4. 建立主从块5. 建立控制块第五章 常用界面项的设计1. 建立文本项2. 建立复选框3. 建立列表项4. 建立单选组5. 建立显示项6. 建立图像项7. 建立按钮第六章 其他常用功能设计1. 建立值列表(LOV)和记录组2. 建立编辑器3. 建立报警器第七章 窗口和画布视图1. 窗口和画布视图的分类2. 建立窗口3. 建立内容画布视图4. 建立堆叠画布视图5. 建立工具条画布视图6. 建立标签画布视图第八章 Form中的触发器1. Form中的触发器的基本概念2. Form中的触发器类型3. 建立触发器4. 触发器作用范围第九章 触发器编程1. 编写触发器2. 内部子程序3. 验证4. 输入项触发 器5. 非输入项触发器6. 使用变量和参数第十章 定制菜单1. 菜单编辑器2. 建立菜单模块第一章 Form 基本概念本章介绍有关Form的一些基本概念,包括以下内容:什么是Form。Form模块的结构。Form模块的层次结构。1.1 什么是FormForm 在英文中是“表格”之意,这里有“格式”之意,但这些表述并不准确。在本书中我们将直接使用Form。FormBuilder是Oracle Developer/2000的主要产品,利用Form Builder可以快速开发基于Form的多种应用程序,用于表示和操纵数据。具体地说,利用Form可以: 利用各种界面项查询、插入、更新和删除数据。 使用文本和图像控件显示数据。 通过使用窗口和数据库事务来控制Form。 直接利用Oracle Graphics 和OLE2(对象连接与嵌入工具)应用功能。 集成菜单可以实现综合应用功能。 能够直接发送数据到Oracle Reports。归根到底,Form应用模块提供了一个存取数据库(包括查询、插入、修改和删除数据库)的界面。Form应用模块由三类模块(文件)组成() Form(格式)模块:表示用户可看到并能操纵的对象和数据的 格式(Form),Form中的数据项(item)可组成记录。() enu(菜单)模块:包含层次菜单,用户选择单项以执行所需命令。() Library(库)模块:PL/SQL程序单元(program unit)的集合。其中,Form模块是基本对象,而菜单模块通常要连到Form模块,包含程序单元的库模块连到Form模块和菜单模块,才能使得所定义的菜单模块和库模块有效。开发Form应用模块一般需要三个部件:() 设计部件(Form Builder):是一个设计和存储Form、Menu、Library模块的应用开发环境。在设计部件中建立的模块以二进制格式存放,也可以存在文件或数据库中,并且可以在各种平台上移植。以上三个模块的文件名的后缀分别为:.fmb、.mmb和.pll。另外,开发人员在Form Builder中可以执行编译部件和运行部件的相应功能。而且在设计部件中还可以实现模块存取格式在二进制和文本格式之间的转换。模块的文本格式描述了模块的对象和节点,它是人工可读的文本文件,其文件名的后缀分别为.fmt、.mmt和.pld。() 编译部件(Form Compiler):读取在设计部件产生的模块定义文件,生成可执行的运行文件。三种模块的可执行文件的文件名后缀为.fmx、.mmx和.pll。() 运行部件(Forms Runtime):From应用模块的运行环境。主要是指用来运行由编译部件编译生成的可执行应用模块的工具。必须注意,只有Form模块可以独立运行。这里需要注意的是,二进制的模块定义文件是可以移植的,但由编译部件生成的二进制可执行文件是不可以移植的。1.2 Form模块的结构Form模块是Form应用的主要组成部分,它可由许多不同类型的对象(Object)组成。我们首先阐述下面三个主要对象:() 项(Item):用以表示数据,并根据项类型与用户交互从逻辑上组成块(Blocks),安排在可见的画布(Canvas)上。() 块(Block):是逻辑上属于块,块中的项在逻辑上相关联,例如它们对应同一个数据库表的一行,或当用户在Form中移动时须处在同一个导航循环。需要注意的是,块中的项不需要被安排在一起,即它们分别安排在多个画布和窗口上。() 画布(Canvas):是一个可视化的设计界面,Form模块的可见对象被安置在画布上。一个Form模块可以有好几个画布。缺省情况下,Form模块中的所有画布被放在同一个窗口内,但某一时刻时只能看到一个画布。要想同时看到多个画布,可以将画布按排在不同的窗口内。图1-1给出了项、块和画布之间的关系。Form模块是有层次结构的,在运行Form时,要想在Form应用中实现导航,可以利用Form中的项和块,而不能选用画布。块中的每个项都有顺序,而Form中的块也有相应的顺序。当用户想从块中的某一项移动到块中的下一个项时,焦点会落在下一项上,若下一项在另一个画布上,系统会自动显示这一画布。类似地,用户想移到下一块或前一块,若该块的第一个项位于另一个画布上,则该画布会自动显示出来。当然,若你已能够看到将要移到的项,Form应用允许你直接用鼠标在其上按一下即可以实现导航,也可以在应用程序中实现导航。1.3 Form模块的层次结构在Form模块中可创建多种类型的对象。图2-2是Form模块的层次结构图。下面对Form模块中的对象分别予以描述。() 窗口(Window):窗口包含画布视图。一屏可显示几个窗口,这由屏幕大小和各窗口的位置及窗口的大小决定。() 画布视图(Canvas_View):是一个放置可见对象的界面,所有对象都放在画布上。一个画布可包含(图文)文本和图形,但都是静态信息,用户不能与之交互。一个Form模块可有多个画布,画布上有项。() 项(Item):项是Form中的最基本的单位,它是块的成员。项按功能可以组成记录,能显示信息并可以与用户交互数据。常用来执行对数据库的操作各维护。() 块(Block):块是Form模块中一些界面项(如文本项、列表项等)的逻辑组合,它属于Form模块。需要注意的是,块中的项不需要从物理上存放在一起,它们可以分别安排在多个画布视图和窗口上。() 触发器(Trigger):由一个事件可以引起其执行的PL/SQL块。触发器依据其作用范围可发为Form级触发器、块级触发器和项级触发器。() 用户命名程序单元(User_named program unit):它是用户命名的过程(procedure)、函数(Function)或包(package),它属于Form模块。() 其他对象:包括报警器(Alert)、参数(Parameter)、记录组(Record Group)等。它们都属于Form模块。第2章Form的工作方式本章介绍有关Form工作的一些基本情况,包括一下内容:如何生成Form应用模块运行一个Form模块Form工作模式通过Form查询数据库数据插入、更新和删除记录提交和回滚事务2.1 Form应用模块的生成前面讲过,Form应用模块共有三类:(1) Form模块:所有对象和代码的集合,包括窗口(Window)、项(Item)、PL/SQL代码块或触发器、存储过程等。用户可用它完成数据查询、删除及修改等操作。(2) 菜单模块:PL/SQL过程、子菜单和菜单项命令的集合,提供执行命令的菜单。(3) 库模块:PL/SQL过程、函数、包的集合,咱应用中被其他模块调用。可以将Form、Menu、Library三个模块集成为一个完整的应用。例如你可以定义一个菜单模块并把它连到Form模块。类似地,可将库模块连接到菜单模块或库模块,这样,Form模块中的触发器和存储过程可以调用与其相连的库模块中的过程。Form 应用模块也可以与Oracle Developer的其他工具,如Reports报表和Graphics图形工具集成起来。例如设计Form 中的按钮可以执行一个Reports 报表输出。可见,模块化大大增强了应用设计的灵活性,提高了开发效率。2.1.1建立新的Form模块设计Form模块时可以同时打开好几个Form模块、菜单模块和库模块。当你启动够造部件时,系统自动打开一个新的Form模块,这样可以直接建立Form对象了。如果你不想在缺省Form下工作,而是想打开以存在的模块,那么系统会关闭缺省的新模块,你打开的模块会替代缺省模块。模块可以一.fmb、.mmb、.pll 文件格式保存,或保存到数据库中。模块村区设计参数决定从文件系统还是从数据库打开该模块。缺省情况下,模块存取设计的参数为文件系统,表示从文件系统打开该模块。1. 建立新的Form、菜单和库模块的方法(1) 在对象导航器中,定位于Form、菜单(Menu)或库(Library)节点,选择对象导航器上的“新建(Create)”工具图标可以新建Form、菜单和库模块。(2) 选择“文件(File)”上的“新建(New)”菜单项,然后选择Form、菜单(Menu)、和库(Library)可以新建Form、菜单和库模块。2. 打开以建立的Form、菜单和库模块(1) 选择“文件(File)”上的“打开(Open)”菜单项,显示文件或数据库对话窗。(2) 选择欲打开的模块。以打开的模块显示在对象导航器的相应节点(Form、Menu、Library)下。2.1.2生成Form模块运行文件在运行一个Form之前,必须根据.Fmb构造文件生成.fmx可运行文件。生成一个Form或菜单(Menu)是会编译还未编译的程序单元,产生可运行文件。当运行前编译(Compile Before Run)参数为ON(缺省设置)时,系统会在你执行“程序(Program)”上的“运行(Run)”命令时隐式地编译该Form,通过构造部件或命令行以可以显示编译Form。编译Form时,系统编译还未编译的PL/SQL代码,当有编译错误时会显示错误报警,表示有错误信息,并将终止编译。缺省情况下,编译部件以增量方式编译,即只是编译当前标志为未编译的PL/SQL代码,可以选择“程序(Program)”下的“编译(Compile)“下的”全部(Compiile All)“菜单项强制进行完全编译。1. 生成Form模块(1)在构造部件中显式生成Form 打开Form,若打开的模块多于一个,必须标记欲编译的模块。 选择“文件(File)”下的“管理(Administration)”中的“编译(Compile)”菜单项。若编译成功,状态行将显示“模块编译成功(Module Compiled Successfully)”。构造部件在缺省目录下以与Form同样的名字生成后缀为.fmx的运行文件。(2)在构造部件中运行时编译Form 选择“工具(Tools)”下的“优化选项(Options)”菜单项进入选项对话窗。 设置运行前编译(Compile Before Run)参数为ON(缺省)。 标志欲运行的Form模块,选择“程序(Program)”上的“Run”菜单项。构造部件隐式编译并运行该Form。2. 生成菜单(Menu)模块设置Form模块的菜单模块(Menu Module)属性可把定制的菜单模块连到Form上,运行时Form自动调入连接的菜单模块。当然,你必须显示地从菜单构造模块(.mmb)编译一个可执行的菜单运行文件(.mmx)才能成功地运行该Form。运行前编译参数设置为ON,不会生成与Form相连的菜单模块,也就是说,必须单独编译从构造部件编译的菜单。 首先打开菜单模块。 选择“文件(File)”菜单下的“管理(Administration)”项中的“编译(Compile)”命令,在缺省目录中生成有同样名字并以.Mmx为后缀的运行文件。3. 生成库模块库模块不必显示地生成单独的运行文件。以.pll为后缀的文件库包含构造所需的源代码和运行所需的编译执行代码。要想将一个库连接到一个Form、菜单或另一个库,要求该库以被编译过,并放在缺省运行搜索目录下。在导航器中编译生成库所包含的子程序和包,只要选择“程序(Program)”下的“编译(Compile)”中的“全部(Compile All)”命令即可。2.1.3设置模块存取设计参数模块存取设计(Module Access Design)参数决定模块是否保存到文件系统或数据库,以及是否从文件系统或数据库打开。1. 设置模块存取设计参数(1)选择“工具(Tools)”菜单下的“优化选项(Options)”显示参数对话框窗。(2)设置选项访问(Module Access to):文件(File)、数据库(Database)或文件/数据库(File/Database)。选择文件表示模块保存到文件系统并从文件系统打开;选择数据库表示模块保存到数据库并从数据库调入;选择文件/数据库系统显示过滤(Filter)对话窗,由用户定义存放位置(文件系统还是数据库)、打开或保存的模块的类型。该对话窗有两个选项: 对象访问(Object Access):决定Form是否在保存或打开模块是显示文件对话窗或数据库对话窗,可以选择数据库或文件系统。 显示(Display):决定在保存、打开、改名、删除一个模块时,在文件对话窗或数据库对话窗显示文件还是显示模块。可以选择表格(Form)、菜单(Menu)、PL/SQL程序库、对象库或全部。2 Form模块两种保存方式的特征比较Form模块两种保存方式的特征比较见表2-1。表2-1 Form模块两种保存方式特征比较存到文件系统(.fmb)存到数据库二进制格式文件,日后可以重新打开修改存到基表中,模块的各个部分存到不同基表中,使之在修改时可在设计部件中重新打开文件中各部分可以拷贝到其他Form模块各部分可以拷贝到其他Form模块在不同平台上可以移植在不同平台上可以移植2.1.4保存Form应用模块设计Form时,保存模块可使用下述命令: “文件(File)”菜单上的“保存(Save)”命令:第一次保存模块时,显示文件或数据库对话框,定义模块名字,如果该模块已存在,系统则和提示是否以当前版本覆盖以前的旧版本。 “文件(File)”菜单上的“另存为(Save as)”命令:保留旧版本的模块,以新名字保留新版本模块。根据保存方式不同分别显示文件或数据库对话框。若同时打开多个模块,Form单独记录各个模块的变化,只有当前模块被保存。2.1.5 关闭和删除Form应用模块1. 关闭Form应用模块在设计时选择“文件(File)”菜单上的“Save”命令,关闭活动模块,或者在对象导航器中选择模块,并单击工具条山的删除按钮。如果该模块的变化未被保存,Form提醒你在关闭该模块前保存已发生的变化。2. 删除存在数据库中的Form应用模块 选择“文件(File)”菜单下的“管理(Administration)”项中的“删除(Delete)”命令进入删除对话框,选择“列表(List)”显示所有模块或在删除域中输入模块的名字。 单击“确定(OK)”删除改模块。3. 更改存在数据库中的模块名 选择“文件(File)”菜单下的“管理(Administration)”项中的“重命名(Name)”命令进入删除对话框,选择“列表(List)”显示模块或在旧名域处输入欲改名的模块名。 在新名域(New)处输入新名字,注意不要包含扩展名。 单击“确定(OK)”改名。4. 文件系统模块删除和更名选择相应的文件系统命令删除模块,或更改模块名字。5. 恢复到上次保存的模块选择“文件(File)”菜单上的“回复(Revert)”命令取消上次模块保存以来对模块所作的修改。2.1.6 模块文件格式的转换Form模块通常都可以以二进制格式保存和编译。但在构造部件里也可以在二进制和文本格式间转换模块存取格式。如将Form、菜单(Menu)和库(Libray)模块的二进制格式(.frm、.mmb、.pll)转换为文本格式(.fmt,.mmt,.pld)。模块的文本格式文件描述模块的对象和节点,它是可读的文本。模块文件的格式转换的方法如下: 选择“文件(File)”菜单下的“管理(Administration)”项中的“转换(Convert)”命令显示转换对话窗。 定义欲转换模块的类型和名字以转换方向,即从二进制向文本还是文本向二进制转换。 按转换按钮,产生模块的新版本文件,如转换二进制Form(.fmb)到文本(.fmt),会得到.fmt文件以及源文件.fmb。转换是通过调用编译部件来进行的,也可以从命令行或双击生成图标做的这一点。需要注意的是,这样经过的文本文件可以包含一些二进制代码数据(如图形、声音的数据),但它们是字符格式。2.2运行Form模块Form应用模块提供用户存取的数据库信息,用户利用Form检索数据、修改数据并保存修改结果。你可以利用Form Builder建立Form应用;用户利用Runtime部件运行所设计的应用。但作为Form应用开发者,你也可以交替使用Form Builder和Runtime部件,开发和检测、调试应用程序。运行Form主要是为了查看Form界面、Form与用户交互的效果,从而开发处更好的应用程序。可以使用两种方式运行Form应用模块:命令行方式在Form Builder中运行的方式。注意,菜单模块和库模块不能单独运行,它们只有在设计时与相应的Form相联系没,在运行时由Form自动调入相应的菜单和库模块。1. 用命令行方式运行Form模块在运行执行程序F45RUN后使用合适的参数:F45RUNmodule_nameuser/passwordparameters如F45RUN sample scott/tiger statistics=Yes.有关命令行参数的使用说明见联机帮助。2. 在Form Builder中运行Form模块在Form Builder中选择“文件(File)”菜单山的“打开(Open)”命令打开要运行的Form模块。选择“程序(Program)”上的“运行(Run)”菜单。如果运行前生成(Generate Before Run)参数为开(ON),Form会首先产生一个.fmx文件,然后运行该文件,若运行前生成参数为(OFF),Form会在当前模块下寻找一个合适的.fmx文件,然后运行该文件。此外,还可以在Form Builder中使用图标运行一个Form模块。双击Run form运行图标即可,在对话窗中输入要运行的Form的名字、要连接的数据库及其他可选参数。2.3 Form工作模式Form有两种工作模式:正常模式和查询模式。2.3.1查询模式查询模式允许输入查询条件,在该模式下,键盘输入被视为检索数据的条件。在该模式下可以完成以下功能: 检索所有记录。 使用查询条件检索记录。 使用“查询/何处(Query/Where)”对话窗检索记录。 使用“查询(Query)”上的“统计符合个数(Cout Hits)”得到被 检索到的记录数。该模式下不能使用以下功能: 退出Form运行。 使用某些函数,如Next_Record. 插入新记录。 更新已有记录。 删除记录。进入查询模式选择“查询(Query)”上的“输入(Enter)”;执行查询选择“查询(Query)”上的“执行(Execute)”;终止查询选择“查询(Query)”上的“取消(Cancel)”。也可以在FL/SQL代码中使用Enter_Query、Execute_Query和Cancel_Query命令完成上述操作。2.3.2 正常模式一般地,运行Form即进入正常模式,正常模式允许插入和修改数据记录。在该模式下,键盘输入被视为键入新记录或者修改已有记录。在该模式下可以完成以下功能: 检索所有记录。 插入、修改和删除记录。 提交记录。 可导航到当前块之外。 退出Form运行。该模式下不能使用以下功能: 使用查询条件检索记录。 使用“查询/何处(Query/Where)”对话窗检索记录。可以使用“查询(Query)”上的“输入(Enter)”和“查询(Query)”上的“取消(Cancel)”在正常模式和查询模式之间进行切换。2.4 查询数据利用Form可从数据库中检索数据,但有时需要改进缺省状态的查询功能,以便能查询出所需的某些数据。查询可分两类: 非受限查询:查询所有对应查询块的基表列所组成的行。 受限查询:查询满足一定条件的对应查询块的基表列所组成的行。2.4.1 非受限查询使用非受限查询可以有如下三种方法: 选择菜单“查询(Query)”上的“执行(Execute)”项。 按“查询(Query)”上的“执行(Execute)”的快捷键F8键)。 单击执行查询按钮。运用非受限查询访问数据库的过程大致如下:(1) 运行Form模块。Form模块运行起来之后,操作界面如图15-1所示。(2) 从菜单中选择“查询(Query)”上的“执行(Execute)”项。Form显示查询到的第一条记录。当执行查询时,Form内部会建立查询命令(如select * from emp)并执行查询。(3) 选择“记录(Record)”上的“下一个(Next)”项,Form会显示下一条记录。此时,状态行显示:Count:*2,表示当前显示的是第二条记录。(4) 重复使用光标键Down,可依次看到后面的记录,直到最后一条记录。此时,状态行显示Count:*最后一条记录数。若再按光标键Down,信息行显示:FRM40352:last row of query retrieved.此时应按光标键Up可以依次查看前面的记录。例2-1 查询EMP表中所有职员的信息。查询职员信息的Form运行起来之后,操作界面如图15-1所示。从菜单中选择“查询(Query)”上的“执行(Execute)”菜单,Form显示第一条职工信息,如图15-2所示。此时状态行显示:记录:1/?则表示查询到多条记录,可以用光标键Down来顺序查看下一条记录。需要指出的是,虽然非受限查询能检索到所有基表记录,但由于使用的是单记录块,所以每次只显示一条记录。也可以使用多记录块,使得能同时显示多条记录。操作界面如图15-3所示。图2-2 查询所有职员信息图2-3 一次显示多条记录2.4.2 受限查询使用受限查询的过程一般如下:(1)从菜单选项“查询(Query)”上的“输入(Enter)”进入查询模式。状态行显示:Count:*0 ENTER QUERY在需要进行受限查询的有关项上输入查询条件。(2)选择菜单项“查询(Query)”上的“执行(Execute)”运行查询。此时Form内部建立一条与查询条件相关的查询命令,然后执行并显示满足条件的记录。建立查询条件可以采用匹配值、模式匹配和“查询/何处(Query/Where)”对话窗等方式。例2-2 查询职员JUN的所有信息。查询职员信息的Form如图2-1所示。查询职员JUN的信息的过程如下: 从菜单中选择“查询(Query)”上的“输入(Enter)”,单击职工姓名域,输入“JUN”。 从菜单中选择“查询(Query)”上的“执行(Execute)”,Form显示职工名为JUN的职工的信息。 状态行显示:记录:1/?则表示查询到多条记录,可以用光标键Down来查看下一条记录。1使用模式匹配的方法查询一般地,在受限查询中,查询条件是与数据库列类型匹配的一个值,此时缺省的条件运算符为“=”。除此之外,还可以使用模式匹配的方法,例如使用某个域的部分值和统配符“”、“%”、Like来组成查询条件,这几中统配符的含义如下: “”表示匹配单个字符。 “%”表示匹配任意个字符。 Like是一种模糊匹配,“”和“%”隐式包含了Like操作符。例2-3 查询姓名以L开头的职员的信息。查询职员信息的Form界面如图15-1所示。查询姓名以L开头的职员的过程如下: 从菜单中选择“查询(Query)”上的“输入(Enter)”,单击职工姓名域,输入“L%”。 从菜单中选择“查询(Query)”上的“输入(Execute)”,Form显示职员以L开头的职工的信息。 此时状态行显示:记录:1/?表示查询到多条记用光标键Down可查看职员LIU的信息。2使用关系运算符查询在查询域中使用关系运算符组合建立查询条件。可以使用的关系运算符包括:、=、=、或!=。例2-4 查询工资大于$2000,奖金小于等于$1500的职员的信息。查询职员信息的Form如图15-1所示。查询过程如下: 从菜单中选择“查询(Query)”上的“输入(Enter)”,单击薪金域,输入“2000”,单击奖金域,输入“2000 AND :C between 1000 and 2000”。如图15-4所示。图15-4 “查询/何处(Query/Where)”对话窗 单击“确定(OK)”,执行查询。可以检索到符合条件的记录。如果需要根据某域进行排序,如根据工资排序,可在对话窗输入“Order By :S”,即可将查询到的数据按工资高低进行排序。需要注意的是,在运行时输入的Order By子句,会覆盖设计时定义的Order By子句。15.5插入、更新和删除数据前面讲过,对于数据的插入、更新和删除,只能在正常模式下完成。在正常模式下,Form将把在空记录域中的输入视为对数据记录行的插入,将把在被检索的记录上的输入或改动视为更新,而删除一条记录需要通过菜单项来完成。15.5.1 插入记录通过Form向数据库中插入一条记录的步骤如下:(1) 通过向下滚动光标直到在最后一条记录的后面显示一条空记录,或者选择“记录(Record)”上的“插入(Insert)”菜单以使当前光标处于一条空记录域上。(2) 在需要输入数据的项上输入数据。(3) 选择“操作(Action)”上的“保存(Save)”菜单将插入的记录行保存到数据库中。例15-7查询职工信息,若不存在职工号为1500的职工,则插入职工1500的信息。 运行Form,选择“查询(Query)”上的“输入(Enter)”菜单进入查询模式。 单击职工号域,输入“1500”,选择“查询(Query)”上的“执行(Execute)”菜单执行条件查询,此时,状态行会显示没有检索到记录。 选择“查询(Query)”上的“取消(Cancel)”菜单,退出查询模式。 在职工号域上输入“1500”,在职工姓名域上输入“YAO”,在其他需要输入数据的项上输入数据。 选择“操作(Action)”上的“保存(Save)”菜单将该记录保存到数据库中。2.5.2 更新记录通过Form对数据库中的某条记录进行更新修改的步骤如下:(1) 选择“查询(Query)”上的“执行(Execute)”菜单执行非受限查询检索数据库表中的所有记录。(2) 使用光标键Down或Up滚动记录,选择需要更新的记录。(3) 在需要更改的项上输入新值。(4) 选择“操作(Action)”上的“保存(Save)”菜单将修改保存到数据库中。例2-8将职工号为1010的职工工资增加到2000。 选择“查询(Query)”上的“执行(Execute)”菜单。 使用光标键Down将光标滚动到职工号为1010的记录上。 使用Tab键将当前光标停在薪金上,并将其值改为2000。 选择“操作(Actioin)”上的“保存(Save)”菜单将修改保存到数据库中。在这里,也可以先在查询模式中使用条件查询,找出需要修改的记录,然后退出查询模式,再对记录进行修改。注意:在修改具有主从关系的记录时,需要保证主从关系不被破坏。2.5.3删除记录通过Form删除数据库中的某条记录的步骤如下:(1) 选择“查询(Query)”上的“输入(Enter)”菜单进行查询模式。(2) 单击与记录删除条件有关的项(Item),输入查询条件。(3) 选择“查询(Query)”上的“执行(Execute)”菜单执行条件查询。(4) 选择“查询(Query)”上的“取消(Cancel)”菜单退出查询模式。(5) 选择“记录(Record)”上的“删除(Remove)”菜单清除当前记录。(6) 选择“操作(Action)”上的“保存(Save)”菜单最终完成从数据库中删除记录。例2-9将职工号为1003的职工从数据库中删除。 运行Form,选择“查询(Query)”上的“输入(Enter)”菜单进入查询模式。 单击EMPNO项,输入1003,选择“查询(Query)”上的“执行(Execute)”菜单执行条件查询,此时,状态行会显示检索到一条记录。 选择“查询(Query)”上的“取消(Cancel)”菜单,退出查询模式. 选择“记录(Record)”上的“删除(Remove)”菜单清除当前记录。 选择“操作(Actioin)”上的“保存(Save)”菜单将该记录保存到数据库中。此时系统会提示是否真正要从数据库中删除,选择“是(Yes)”按钮即确定删除。这里同样需要注意,在删除具有主从关系的记录时,需保证主从关系不被破坏。关于主从关系块,我们将在第18章进行讲解。2.6 提交和回滚事务在使用Form的过程中,用户对数据的任何修改并不立即被反映到数据库中,这些操作只是在Form工作区中完成的,也就是说,Form并不直接与数据库打交道,而是对Form工作区中的数据库表的拷贝进行操作。这样做有两个方面的好处: 一是避免错误操作数据,用户可修改工作区中的数据,也可使这些修改作废。如果用户在将改变提交之前作废修改,那么数据库表不会受到任何影响,有利于数据库的数据安全。 另一个好处是不必为每次修改去连接数据库,所有的操作均是在本地完成的,一旦需要提交,只须一次性地提交数据库,增加了处理速度和提高了效率。因此,要使插入、修改、删除操作永久生效,用户必须显示地将工作区的内容提交到数据库,提交时可选择“操作(Action)”上的“保存(Save)”菜单项,它执行数据库提交操作。2.6.1 提交事务如果想把对Form的修改提交到数据库中,需要选择“操作(Action)”上的“保存(Save)”菜单命令来完成。提交一个事务的过程一般如下: 检验数据的合法性。Form顺序导航到每一块,检验每一条记录的所有数据。若每一块的所有数据都合法,则Form所产生的事务被确认为有效。 每条记录有一个状态,如New或Changed。Form仅处理从这些状态上可以表明被插入、修改或删除的记录,而那些未被改变的记录不被处理。Form给每一条标志为插入、更新或删除的记录发布一个合适的SQL语句。 使用定义在数据库表上的约束或触发器检验数据。 释放与此次修改有关的数据库锁。 其他用户可看到修改后的数据。提交事务需要注意下面几个问题。1 使用记录所保证数据的一直性Form在多用户环境中提供锁功能,它可以防止两个或多个用户同时修改同一条记录。当用户A试图修改一条记录,Form首先决定从用户查询该记录以来,是否有其他用户更新或删除该记录。若该记录已被更新或删除,用户A必须重执行查询,检查返回的记录,然后再作进一步处理。然而,如该记录未被改变,Form会自动锁住该记录,这样用户A更新它时,其他用户不能修改它。若用户想在自动锁记录发生之前锁住一条记录,请选择“记录(Record)”上的“(Lock)”菜单命令。2合理分布有效性检验在Form应用中,存在将有效性检验是放在应用方还是放在Oracle数据库方的问题。Oracle允许数据库级的隐式数据检查,当Form运行在Oracle上时,所有提交记录被强制接受预定义的数据库约束检查。可以在应用Form中除掉数据输入时的约束检查,而把它留到数据库提交时再进行。有必要提出的是在应用Form中进行约束检查能使用户立即得到错误反馈,从而利用在线帮助和适当错误信息快速校正错误。较好的折衷方法是在数据输入时(应用方)和提交时(数据库方)合理分布检验,以期应用更友好、更安全。2.6.2回滚事务如果想废除使用Form对数据所做的修改,需要选择“操作(Action)”上的“清除全部(Clear All)”菜单命令来完成。回滚一个事务包括以下一些步骤:(1) 恢复所有未提交的插入、更新、删除。(2) 释放当前Form所有的数据库锁。(3) 清除当前Form中的所有数据。需注意的是一旦事务被“操作(Action)”上的“保存(Save)”菜单保存提交过,就再也不能恢复该事务了。如果用户想退出Form而没有提交数据,Form会要求用户在提交或废除修改之间作出选择后方可退出Form应用。第三章Form设计工具本章介绍设计Form的基本工具,包括以下内容:Form界面设计。对象导航器。布局编辑器。属性选项板。菜单编辑器。弹出菜单。PL/SQL编辑器。3.1 Form 设计界面从Microsoft Windows的开始菜单中选择“程序Developer200 R2.0Form Builder”即可进入Form的设计界面。如图3-1所示。(1) 进入Form设计界面时会显示一个欢迎对话框。在这个对话框中,用户可以选择是否使用数据块向导,手动建立新表格,打开现有表格或建立基于模板的表格。对于初学者还可以选择学习与Form设计有关的文档,如图3-2所示。(2) 根据相应的选择,Form会进入相应界面。对于前面一项,除了可以使用向导进行设计外,其他的选项一般会进入Form设计界面。(3) 一般进入Form设计界面后,首先需要连接数据库。选择“文件(File)”上的“连接(Connect)”菜单命令显示“连接”对话框。输入用户名、口令和数据库连接字符串,如图3-3所示。然后单击“连接”按钮。3.2 对象导航器对象导航器(Object Navigator)是一个用来创建各管理Form的所有对象的窗口,如图3-4所示。对象导航器中的每一行称一个节点。每个节点由三部分组成:(1) 符号:表示该节点是否包含低一级对象,有以下几种符号:彩色加号(+)表示该节点包含子对象。灰色加号(+)表示该节点没有子对象。减号(-)表示该节点下所有子对象都已被显示出来。(2) 图标:每个对象左边的图符。单击该图标,可编辑该对象。(3) 对象的名字:用于标识Form中的对象。单击Form节点上的任何位置都可以选择一个对象。在对象导航器中选择一个已存在Form对象与在布局编辑器中选择该对象是一致的。可以从菜单或工具条中选择一条命令。在工具条可以快速选择命令。将光标移到图标上而不用鼠标单击可得到该工具条命令的弹出描述,如图3-5所示。对象导航器有两种视图显示模式:所有权视图显示模式和视觉视图显示模式。进入Form设计界面后的缺省显示模式是所有权视图显示模式。1. 所有权视图显示模式使用菜单“视图(View)”上的“所有权视图(Ownership View)”命令即可进入所有权视图显示模式。在所有权视图显示模式中,所有Form对象按照其所处的层次分层显示。如按表格块项的顺序分层显示,如图3-6所示。2. 视觉视图显示模式使用菜单“视图”上的“视觉视图”命令即可进入视觉视图显示模式。在视觉视图显示模式中,对象导航器中显示可见的Form对象,并按照可见对象所处的层次分层显示。也就是说,在视觉视图显示模式中,仅显示窗口、画布和项,显示层次为窗口画布项,如图3-7所示。在对象导航器中可以完成如下一些功能: 创建对象。 删除对象。 编辑对象。 移动对象。 拷贝对象。 对象改名。 展开和隐藏对象。 查找对象。此外,使用对象导航器还可以建立对象间的联系。下面分别介绍。3.2.1 创建对象在对象导航器中,创建一个对象的步骤如下:(1) 选择表示该创建对象的节点,或选择一个已存在的同类型的节点。(2) 单击“创建(Create)”图标,新对象即被创建。创建新对象不同会出现不同的事件,而不同的对象会决定怎么样继续操作。例3-1 使用对象导航器创建一个新块。 选择块节点,如果已存在块节点,则选择一个已存在的块节点。 单击创建图标,即可创建一个新块。创建新块的步骤详见第18章。3.2.2 删除对象在对象导航器中,删除一个对象的步骤如下:(1) 选择表示要删除对象的节点。(2) 单击“删除(Delete)”图标,显示对话框,从中确认删除。(3) 单击“是(Yes)”按钮删除对象。例3-2使用对象导航器删除一个项。 选择该项节点。 单击删除图标,会弹出一个对话框,如图3-8所示。 单击“是(Yes)”按钮删除对象。3.2.3编辑对象在对象导航器中,编辑一个对象的步骤如下:(1) 在对象导航器中双击表示该对象的图标。不同的对象类型决定了它们各自不同的编辑方法。(2) 双击代码对象图标,出

温馨提示

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

评论

0/150

提交评论