对联 ·故事 ·史海钩沉 ·人物档案 ·地方风俗 ·谚语大全 ·讽刺与幽默 · 赚钱 · 法律 · 在线教研 · 会员中心 · 心理测试 · 魔鬼词典 · 顺口溜
 
主页特效 网页特效 百家姓
娱乐 歇后语 绕口令 脑筋急转弯
 
谚语 谜语 名言 邮政编码
便民 酒方 验方 偏方 站长工具  
 
算命 风俗 手相 爱情
女孩 音乐 面相 星座 血型
 
饮食 穴道 偏方 医药
生活 软件 硬件 解梦 高考



   JS特效



实用工具
便民服务 加密解密
 
魅力高密 民间故事 Flash教程 PS教程 最新国内新闻
新华字典 黄道吉日 英语园地  万年历 Html2anycode
  首页 | 美图 | 短信 | 安全 | 校园 | 网站 | 游戏 | UFO | 文秘 | 生活 | 信息技术 | 论文 | 人生 | 情感 | 日记
返回首页
当前位置: 主页 > 论文大全 > 理工类 >

Developer/2000中的Forms参数及应用

时间:2010-07-27 23:49来源:www.panpan.org 作者:panpan 点击:
摘要: 本文介绍了Oracle数据库的开发工具Developer/2000之一Oracle Forms 4.5中的参数及参数表的概念、创建方法以及开发Form并传送参数的注意事项,最后以一个应用实里例说明其使用方法。
  

摘要: 本文介绍了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





顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
赞助商位置
推荐内容
杂七杂八