网站首页
手机版

Developer/2000中的Forms参数及应用

更新时间:2005-12-28 00:00:00作者:未知

摘要: 本文介绍了Oracle数据库的开发工具Developer/2000之一Oracle Forms 4.5中的参数及参数表的概念、创建方法以及开发Form并传送参数的注意事项,最后以一个应用实里例说明其使用方法。

关键词:数据库、开发工具、FORM、参数、传送

1· Forms概述

Oracle数据库的前端开发工具Developer/2000,以其能够灵活、方便、有效地开发出基于C/S结构的用户应用程序而倍受程序开发人员的青睐;而其中Oracle Forms 4.5,作为数据库的表格设计工具,应用尤为广泛。用它可开发和运行Windows下基于表格的应用。它的特点是集成数据字典,用基表管理应用,把应用分解为对象和属性,支持多达8种对象,每种对象都有丰富的属性,应用种类也更广泛,比如带有图象信息的数据库应用等。利用Forms 4.5可完成以下操作:

·利用各种界面项插入、更新、删除和查询数据。

·用文本/图象和VBX控件显示数据。

·通过多窗口和数据库事务控制Form。

·直接利用Oracle Graghics和OLE2的应用功能。

·直接发送数据到Oracle Reports。

Oracle Forms运行在以下环境中,即:

·应用程序要处理的含有数据的数据库表

·操作系统

·PL/SQL

·其它CDE工具

2·Oracle Forms中的参数

利用Forms Designer所提供的各种功能和对数据所建立的各种完整性约束,你可以方便地创建并运行各种常用Form。但随着应用开发的深入,为了使代码更灵活,模块的功能更强,创建参数并利用参数表传送参数就显得尤为必要。

2.1 参数的概念

参数提供了一种简便的机制,它用来设置Form启动时所需要的输入值。参数的变量类型可以是CHAR、NUMBER或DATE,在设计Form时定义。在应用程序执行CALL_FORM、OPEN_FORM、RUN_PRODUCT等内部子程序时,可以向一个FORM传送参数。参数也可以由操作员在启动Form时,从命令行输入。

2.2 创建并引用参数

在对象导航器中点中“参数”(PARAMETER),然后在工具条中点击“创建”图标,即可创建参数。创建后要在其属性窗口中设置属性。

Data Type 设置为CHAR、NUMBER或DATE。

Default 参数的缺省值,必须与参数的数据类型和长度一致。

Length 参数可存贮的最长字符数。它只对 CHAR型参数有效,最大为64K。

NUMBER型参数的缺省值为23字节,DATE型参数的缺省值为7字节。

Name 参数的名称。

在PL/SQL中,可以引用参数,或给参数赋值,方法是将保留字PARAMETER置于参数名之前,如:

:PARAMETER.P_NAME1 :='Qilu _Rubber';
或:block.item := :PARAMETER.P_NAME1;

除了在PL/SQL中直接引用参数外,你也可以在某些内部子程序中,或者在 对象属性中引用参数。

2.3 创建并传送参数表

参数是通过参数表传送到被调用Form的,参数表是在被集成模块之间传送数据和参数的容器,单个的数据必须放在参数表中才能被传递。如果要向其它Form传送参数,可利用CALL_FORM、OPEN_FORM等内部子程序;如果要向Oracle的其它工具如Oracle Graghics传送参数,则要用RUN_PRODUCT。

参数表中的参数可以是text parameter或data parameter,参数的类型决定如何对其进行解释:

text parameter 传到被调用模块的参数值是一个CHAR串,它可代表用户在Form

内定义的参数,或者是命令行上送入的参数。

data parameter 传到被调用模块的参数值是当前Form所定义的一个记录组,且只能由RUN_PRODUCT来传送。

在PL/SQL中,使用以下子程序创建并处理参数表:

Create_Parameter_List
Add_Parameter
Delete_Parameter
Destroy_Parameter_List
Get_Parameter_Attr
Get_Parameter_List
Set_Parameter_Attr

3· 应注意的问题

1· 在创建参数表后并执行Add_Parameter向参数表追加参数时,要保证被调用表中已创建参数,并且已经对其属性作出恰当的定义。否则会出现找不到参数,或类型不匹配等错误。

2· Create_Parameter_List是一个函数,其返回值为所创建参数表的ID值。所以你要预先在PL/SQL中定义一个PARAMLIST型的变量(Oracle Form的一种数据类型),然后通过给该变量赋值来引用。

3· 执行Create_Parameter_List所创建的参数表不含有任何参数。你必须用Add_Parameter向其追加参数。

4· Get_Parameter_Attr以及Set_Parameter_Attr是用来读取或设置追加到参数表中参数的类型或值的。在Form设计时,不能用其来读取或设置Form参数的值。Form参数值的引用或赋值应该用上面提到的方法。

5· 参数表通过CALL_FORM、OPEN_FORM、NEW_FORM等内部子程序传送到被调用Form后,你要在该Form中自行设计合适的触发器或以其它方式引用此参数,以控制Form的运行。

6· 当执行CALL_FORM去调用另一个FORM时,发出调用的FORM即处于非活动状态,直到你从被调用FORM退出并返回后才恢复;被调用FORM又可以再去调用另一个FORM,从而产生一个FORM调用堆栈。在这种连续调用的过程中,只有一个FORM处于活动状态。如果使用CALL_FORM及OPEN_FORM同时调用多个FORM模块,则要注意:① 不允许以程序控制方式导航到一个非活动的堆栈。② 如果FORM调用链中的某个模块是由OPEN_FORM打开的,则该FORM模块不能执行CALL_FORM去调用其它FORM模块。
4· 应用举例

下面以一个实际应用中的例子,来说明参数及参数表的用法。

Form_a是设备管理中的一个综合查询模块,用于浏览所有设备的编号、名称、位号等主要数据,

Form_b是塔类设备档案管理的明细模块,用于塔类设备档案的查询、删除、追加、修改,

现在要求当在Form_a中浏览到某一塔类设备时,只要触发某一触发器(如用鼠标双击其中的一项,就去执行Form_b,并且查询出在Form_a中浏览到的那台设备。下面是具体步骤:

1· 在Form_b中创建与“设备编号(SBBH)”对应的参数SBBH_P,并打开SBBH_P的属性窗口设置其属性使其与SBBH相一致。

2· 在Form_b中创建一个模块(MODULE)级的when-new-form-instance触发器,在此触发器中加入以下PL/SQL语句:

declare
blk_id block;
begin
blk_id:=find_block('sbzwj1');
/*'sbzwj1'为被调用模块的BLOCK名称*/
if :parameter.sbbh_p is not null then
set_block_property(blk_id,default_where,'sbbh=:parameter.sbbh_p');
end if;
count_query;
execute_query;
end;

3· 在Form_a中找到SBBH,并为其创建一个项目(ITEM)级的触发器,其类型为when-mouse-doubleclick,在其中加入以下PL/SQL语句:

declare List_id ParamList;

begin

List_id:=Get_Parameter_List('input_params');

IF NOT Id_null(list_id) THEN

Destroy_Parameter_List(List_id);

end if;

List_id:=Create_Parameter_List('input_params');

Add_Parameter(List_id,'SBBH_P',TEXT_PARAMETER,:sbzwj1.sbbh);

if substr(:sbzwj1.sbbh,3,2)='02' then

/*设备编号中的第3、4位为'02'时,该设备为炉类设备*/

call_form('tlsb1',hide,do_replace,no_query_only,List_id);

end if;

end;

4· 分别编译Form_a、Form_b,并创建(GENERATE)、保存(SAVE)两个Form的对应文件。

5· 运行Form_a并浏览到塔类设备后,用鼠标双击该塔类设备的设备编号区,即可调出此设备的档案明细。

5· 结束语

使用参数传送可使模块之间的有条件调用变得更灵活,模块的效率更高。参数传送不仅限于Form模块,你还可在应用程序中向Oracle * Reports以及Oracle*Graphics等其它CDE工具传送参数,步骤也与向Form传送参数相似。

参考文献

1.Oracle Developer/2000: Forms 4.5 Getting Started
2.Oracle Developer/2000: Forms 4.5 Devloper's Guide Manual
3.刘金亭、朱莉、蔡蔚编 ·CDE协同开发环境 Oracle Developer/2000转贴于 中国论文下载中心 http://paper.studa.com

本文标签:

为您推荐

FOXPRO在三峡工程信息管理中的应用

三峡工程是世界级的巨型工程,专业门类多、技术复杂、信息管理工作量巨大,必须使用MIS系统对信息进行收集、整理、存储、统计、分析、制表。几年来,我们先后用FOXBASE、FOXPRO编制了《工资管理系统》、《土石方工程量计算程序》、《工程支付管理系统》、《文档管理系统

2011-11-09 16:03

论信息技术在外语教学中的应用

随着信息技术的发展, 计算机多媒体技术和网络被广泛地应用在外语教学中, 改变了传统外语教学模式。现代化外语教学提高了外语教学水平, 从而培养高素质的外语人才, 满足日益增长的社会需求。

2011-11-09 16:02

对计算科学与计算机发展的思考

本文从什么是计算说起, 通过对计算机的发展历史和人类对计算本质认识的回顾, 提出量子计算系统的发展和成熟, 并且提出了人类认识未知世界的规律:“计算工具不断发展—整体思维能力的不断增强—公理系统的不断扩大—旧的神谕被解决—新的神谕不断产生”不断循环。

2011-11-09 16:01

试析高职院校计算机专业教学的改革

提高高职院校计算机专业的教学水平,是高职院校计算机教育工作者应该深入思考的问题。通过分析高职院校计算机专业教育的教学特点,从如何培养计算机应用型人才的角度出发,对高职计算机专业教学中存在的不足进行了总结,并提出了几点改革设想。

2011-11-09 16:00

水利工程计算机应用现状与思考

水利水电工程地质又是所有这些不同行业的工程地质专业中涉及面最广声望最高问题最复杂任务最艰巨的专业,这是众所周知毋庸置疑的。水利工程计算机应用具有广阔的发展前景,无论是数值计算、数据库应用,还是专家系统、网络系统,都大有用武之地;特别是工程地质制图(主

2011-11-09 15:59

论高职计算机应用专业课程优化与整合

课程体系是教育教学目标实现的重要保证,高职计算机应用专业课程体系要以为社会培养计算机应用性专门人才这一根本任务而进行设计,本文对计算机应用专业课程设置进行一定的探讨。

2011-11-09 15:58

加载中...