Oracle Form 使用注意事项

一、处理错误
1.当错误出現在Oracle Form PL/SQL中时,处理的方法如下:

begin
  if (err_condition) then
    fnd_message.set_name(appl_short_name, message_name);
    fnd_message.error;
    raise form_trigger_failure;
  end if;
end;

2.当错误出现在Stored Procedure中時,处理的方法如下:

begin
  if (err_condition) then
    fnd_message.set_name(appl_short_name, message_name);
    app_exception.raise_exception;
  end if;
end;

3.当我们在测试FORM_SUCCESS,FORM_FAILURE和FORM_FATAL的时候,可能触发了目地的子程序而导致它们的值发生改变,例如下面这个例子:

begin
  go_item(‘emp.empno’);
  if from_failure then
    raise form_trigger_failure;
  end if;
end;

GO_ITEM引起其它的触发器触发,比如WHEN-NEW-ITEM-INSTANCE,尽管GO_ITEM可能执行失败,但是后面的Trigger有可能执行成功,这就意味著FROM_FAILURE是失效的,为了避免这种情況发生,可以改为下面这样:

begin
  go_item(‘emp.empno’);
  if :system.cursor_item != ‘emp.empno’ then
    raise form_trigger_failure;
  end if;
end;

4.避免使用RAISE_APPLICATION_ERROR,因为它与我们使用的进程服务的设置有冲突
5.不要使用CALL_FORM,你可以使用FND_FUNCTION.EXECUTE来代替CALL_FORM或是OPEN_FORM

二、在Oracle Application中使用PL/SQL中需要注意的地方
1.使用select … from dual来代替select … from sys.dual;
2.只返回一行的Select查询要处理NO_DATA_FOUND例外,INSERT、UPDATE、DELETE不会产生这个例外,要使用SQL%NOTFOUND来检查是否有数据

三、Triggers in Forms
1.所有的BLOCK或是FIELD的TRIGGER的执行类型都是Override或是Before,一般情況下,使用的是Before类型,因为通常相同的Trigger在FORM层級同样也会触发。这个例外是如果彈性域调用了Form层次的POST-QUERY,但是你在BLOCK的POST-QUERY中重置了这个块的查询状态,像这种情況,BLOCK块的POST-QUERY必须将执行类型设置为After

四、使用APPCORE来代替Oracle Forms Built-In, APPCORE包含了一些等同于Oracle Forms built-ins的功能
1.EXIT_FORM不要直接使用EXIT_FROM,应该始终使用do_key(‘EXIT_FORM’),如果需要退出整个Oracle applications suite,应该首先调用copy(‘Y’,’GLOBAL.APPCORE_EXIT_FLAG’);然后再调用Do_key(‘EXIT_FORM’);
2.SET_ITEM_PROPERTY使用APP_ITEM_PROPERTY.SET_PROPERTY和APP_ITEM_PROPERTY.SET_VISUAL_ATTRIBUTE来代替
3.GET_ITEM_PROPERTY使用APP_ITEM_PROPERTY.GET_PROPERTY来代替
4.OPEN_FORM使用FND_FUNCTION.EXECUTE来代替
5.CLEAR_FORM使用do_key(‘CLEAR_FORM’)来代替
6.COMMIT使用do_key(‘COMMIT_FORM’)来代替
7.EDIT_FIELD使用do_key(‘EDIT_FIELD’)来代替,这个程序当当前的ITEM是DATE时弹出Calendar
8.VALIDATE使用APP_STANDARD.APP_VALIDATE来代替

五、Coding Table handlers

六、设置物件的属性
1.Canvas的大小最大只能设置到高5inch、宽7.8inch,目的是为了更好的适应客户端的环境
2.使用APP_CUSTOM.OPEN_WINDOW和APP_CUSTOM.CLOSE_WINDOW來打开和关闭window,不过使用go_block也可以达到打开window的功能
3.APP_SPECIAL用来控制菜单项是否可用

七、設置ITEM的一些屬性
1.Text Items
一般情況下,大多數的Text items使用TEXT_ITEM属性类,而需显示多行的使用TEXT_ITEM_MULTILINE属性类,如果是field是date类型使用TEXT_ITEM_DATE,设置它的查询长度为255个字符
2.Date Fields
可以使用DBDATE或是DBDATETIME来设置作为它的预设日期
3.使LOV在ENTER-QUERY模式下应用于一个ITEM ,创建一个ITEM层级的KEY-LISTVAL触发器,如下:

begin
  if (:system.mode != ‘enter - query’) then
    list_values;
  else
    show_lov(‘query lov’);
  end if;
end;

4.Flexfields
键弹性域使用的是’ENABLE_LIST_LAMP’这个LOV,并且将验证设置为No ,描述性弹性域不会使用到LOV

八、控制Window、BLOCK
1.控制运行时期的window
例如在采购订单窗口包含了一个标签叫做’Lines’的按钮,点击它去到另一个窗口LINES这个块,需要的步骤如下:
第一步:修改以下的Trigger
Trigger:PRE-FORM
App_window.set_window_position(‘HEADER’,’FIRST_WINDOW’);
Trigger: WHEN-BUTTION-PRESSED
app_custom.open_window(‘LINES’);
第二步:修改APP_CUSTOM.OPEN_WINDOW
If wnd = ‘LINES’ then
App_window.set_window_position(‘LINES’,’CASCADE’,’HEADER’);
Go_block(‘lines’);
End if;
可用的类型有以下几种:
◆ CASCADE 此类型当子窗口打开的时候,会显示在父窗口的上面并距离父窗口的右边0.3,通常使用于明细窗口
◆ RIGHT, BELOW 略
◆ OVERLAP 略
◆ CENTER 略
◆ FIRST_WINDOW 通常用于主窗口
2.关闭窗口
一个Form具有三个窗口分別是’Header’,’Lines’和’Shipments’,Shipments是Lines的明细窗口,而Lines是Header的明细窗口,从逻辑上讲关闭窗口如下:

Procedure close_window(wnd varchar20) is
  If wnd = ‘HEADER’ then
    App_window.close_first_window;
  Elsif wnd = ‘lines’ then
    App_custom.close_window(‘shipments’);
    If (wnd = get_view_property(get_item_property(:system.cursor_item,item_canvas), window_name) then
      go_block(‘header’);
    end if;
  elsif wnd = ‘shipments’ then
    If (wnd = get_view_property(get_item_property(:system.cursor_item,item_canvas), window_name) then
            go_block(‘lines’);
    end if;
  end if;
  hide_window(wnd);
end;   

3.在执行过程中使用查询
如果你想在打开FORM之前调用一个ROW-LOV或是查询窗口,在WHEN-NEW-FORM-INSTANCE后面加上:
EXECUTE_TRIGGER(‘QUERY_FIND’);

时间: 2024-10-11 07:15:23

Oracle Form 使用注意事项的相关文章

转: Oracle Form 中commit 与do_key('commit_form')区别

1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交:如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准.2.do_key('commit_form')会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码.如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交.如果form上面的数据变动和代码中的数据变动有冲突,

ArcSDE 10.2 for Oracle 12C安装注意事项

ArcSDE 10.2 for Oracle 12C安装注意事项 1.环境说明 从ArcSDE10.2.1开始支持Oracle 12C. 2.安装注意事项 SDE空间数据库可以安装到PDB中,使用Create Enterprise Geodatabase工具即可创建,安装方法与Oracle 11g无区别. 默认情况下创建的用户,即使分配了Connect和Resource角色,数据库不会自动赋予quota权限,在catalog中创建要素时会提示ORA-01950的错误.需手动赋予该权限. 方法1:

Oracle Form Data Entry Sample

I shared a data entry example form here in this post for Oracle Forms beginner developers, so that they may take an idea to how to develop a simple data entry form in Oracle Forms. The form can be fully modified. Example is given for an emp table and

Oracle Form Builder:CREATE_GROUP Built-in

Description  Creates a non-query record group with the given name. The new record group has no columns and no rows until you explicitly add them using the ADD_GROUP_COLUMN, the ADD_GROUP_ROW, and the POPULATE_GROUP_WITH_QUERY Built-ins. Syntax       

Oracle Form开发应用之Data Block级别的主要属性

项目(英文)  项目(中文) 说明 General 常规 * Name 名称  Data Block 名称 eg:BLK_NAME  * Subclass Information   子类信息  设定Property class eg:BLOCK Navigation 导航  * Navigation Style  导航器风格  当光标到记录的最后一个item后  Same Recorde: 返回到第一个Item  Change Recorde: 转到下一个Recorde的第一个Item  Ch

【ORACLE】使用中注意事项(二)

问题1:ORACLE在插入数据的时候,有时候中文变成????? 原因:由于当前计算机的字符集和服务器上的字符集不一致,导致中文乱码. 解决方案: 在当前使用的计算机中设置环境变量 在我的电脑上右键属性--高级系统设置-高级-环境变量,新建用户变量: 变量名=变量值: LANG=zh_CN.GBK NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK Set NLS_LANG="simplified chinese"_china.zhs16gbk 如图:

Oracle Form Builder本地部署运行的实现(案例)

D:\Oracle\DevSuiteHome_1\j2ee\DevSuite 问题二:问题二是在问题一的基础上出现的,操作了问题一的解决办法后,再次运行表单,会出现浏览器崩溃的情况. 解决办法:步骤一:找到Developer Suite安装目录下的jinit文件夹(如:C:\DevSuiteHome\jinit),安装其中的jinit.exe应用程序. 步骤二:在打开的Oracle Forms Builder中,点击菜单“编辑”->“首选项”.在弹出框中,选择“运行时”选项卡,然后在“应用程序服

MyEclipse+Weblogic+Oracle+PLSQL配置注意事项

Weblogic配置详情:<Weblogic安装与配置图文详解>Oracle+PLSQL配置详情:<PL/SQL访问远程Oracle服务器(多种方式)>MyEclipse配置:<Eclipse在开发Web项目时的配置优化>,<教你破解MyEclipse到2016年[图文详解]>虽然总结过以上开发环境的配置及优化,但是在使用的过程中依旧出现了或多或少.大大小小的问题,统一记录一下.1.MyEclipse导入工程.File-->Import-->Ge

总结新系统部署时,Oracle的一些注意事项:

1.Oracle安装时,要选择字符集为中文编码,数据库重要角色设置密码时,不要用数字开头,不然后面会报一些错误提示 2.emp导出的数据dmp格式,导入时要在服务器导入,具体没有试,要找机会试试,转化经验 3.PLSQL使用时,中文乱码(查询和存储过程中),看系统环境产量有没有配置NL_LANGUAGE 4.修改job的执行频率为1秒(默认为5秒) 新建命令窗口,输入:alter system set "_job_queue_interval"=1 scope=spfile;