Developer/2000中的Forms参数及应用
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