### Oracle EBS R12 二次开发:深入理解 `open_form`、`call_form` 和 `new_form` 在Oracle E-Business Suite (EBS) R12中进行二次开发时,掌握应用程序之间的交互机制至关重要。其中,`open_form`、`call_form` 和 `new_form` 是用于控制和管理不同表单之间流程转换的关键方法。本文将详细介绍这些方法的使用场景、参数含义以及它们如何影响应用程序的执行流。 #### 一、`open_form` 方法 `open_form` 方法主要用于打开一个新的表单实例,并将其与当前会话关联。它接受多个参数来定制新表单的行为: 1. **Form_name**:指定要打开的表单名称。 2. **Activate_mode**:决定新表单的激活模式。可选值为: - `Activate`: 新表单成为活动表单,原表单保持打开状态(默认)。 - `No_activate`: 新表单打开但不激活,原表单仍然处于活动状态。 3. **Session_mode**:设置新表单是否在新会话中打开。 - `Session`: 在新的会话中打开新表单。 - `No_session`: 新表单与原表单共享同一会话(默认),任何一方提交或回滚事务都将影响另一方。 4. **Data_mode**:指示表单之间是否共享数据。 - `No_Share_Library_Data`: 不共享数据(默认)。 - `Share_Library_Data`: 共享数据库中的数据。 5. **Paramlist_id**:用于传递到新表单的唯一参数列表ID,为可选参数。 示例: ```plsql open_form('D:\YSJZ\LongRaw', 'Activate', 'No_session'); ``` 这将打开一个名为`LongRaw`的新表单,使其成为活动表单,并且与原表单共享同一会话。 #### 二、`call_form` 方法 `call_form` 方法用于调用另一个表单,并将控制权传递给该表单,直到它完成或被关闭。与`open_form`不同的是,当使用`call_form`时,原始表单将失去焦点,用户只能操作被调用的表单。 其主要参数包括: 1. **Formmodule_name**:目标表单模块的名称。 2. **Display**:是否隐藏原始表单。 - `Hide`: 隐藏原始表单(默认)。 - `No_Hide`: 不隐藏原始表单。 3. **Switch_menu**:确定调用表单后菜单的状态。 - `Do_Replace`: 替换原始表单的菜单。 - `No_Replace`: 保持原始表单的菜单不变(默认)。 4. **Query_mode**:指示调用的表单是否仅用于查询。 - `No_Query_Only`: 不是只读查询(默认)。 - `Query_Only`: 只读查询。 5. **Data_mode**:同`open_form`中的解释。 6. **Paramlist_name**:传递到调用表单的参数列表名称。 示例: ```plsql call_form('FormModule_Name', 'Hide', 'No_Replace', 'No_Query_Only', 'ParamListName'); ``` #### 三、`new_form` 方法 `new_form` 方法创建一个全新的表单实例,与原始表单完全隔离。这意味着新表单将从初始状态开始,不受原表单的影响。此外,当使用`new_form`时,原始表单不会立即关闭,但在新表单创建完成后,原始表单将不再显示或接收输入。 主要参数包括: 1. **Formmodule_name**:目标表单模块的名称。 2. **Rollback_mode**:定义事务回滚行为。 - `To_savepoint`: 回滚到保存点。 - `No_Rollback`: 不进行回滚。 - `Full_Rollback`: 完全回滚。 3. **Query_mode**:同`call_form`。 4. **Data_mode**:同`call_form`和`open_form`。 5. **Paramlist_name**:同`call_form`和`open_form`。 示例: ```plsql new_form('FormModule_Name', 'No_Rollback', 'No_Query_Only', 'No_Share_Library_Data', 'ParamListName'); ``` ### 总结 在Oracle EBS R12的二次开发中,熟练掌握`open_form`、`call_form` 和 `new_form` 的使用对于实现复杂的业务流程和用户界面设计至关重要。通过合理配置这些方法的参数,开发者可以精确控制表单之间的切换逻辑,提升应用程序的用户体验和功能灵活性。在实际开发过程中,应根据具体需求选择最合适的表单打开方式,以确保应用程序的高效运行和数据的一致性。
4.1使用open_form启动一个新的form
Form提供的函数open_form是一个受限封装过程。使用open_form可以产生一个新的form,但不代替原form。在新的form启动后,可以不把控制移入新的from中,也可以将输入焦点移入原form中操作,用户可以在两个form之间导航。新的form可以与原form共享一个会话,也允许为新的form启动一个新的数据库会话(session)。
函数open_form调用格式如下:
Procedure open_dorm(
Form_name varchar2,
Activate_mode number,
Session_mode number,
Date_mode number,
Paramlist_id paramlist);
其中各参数含义如下:
(1) Form_name使要调入的Form路径及文件名。
(2) Activate_mode是打开Form的方式,取值如下:
・activate打开新form且把输入焦点移入该form,该选项为默认选项。
・no_activate打开新的Form,但不移动输入焦点,焦点仍在原Form中。
(3)Session_mode是打开新的Form时数据库的会话方式,取值如下:
・session 打开新的Form时创建新的数据库会话。
・No_session 不产生新的会话,和原Form享用同一个会话,这时在任何一个Form中产生的commit命令都有效,所有数据提交处理使用同一个会话。该选项为默认项。
(4) Data_mode表示Form之间是否可以共享库数据(Library Data),取值如下:
・No_Share_Library_Data 不共享库数据(默认)。
・Share_Library_Data 共享库数据。
(5)Paramlist_id是Form中唯一的参数,此项为可选项。
主Form界面如“公司员工表”所示。使用按钮触发器通过Open_Form调入另外一个Form,可得结果。
按钮触发器的内容如下:
Open_Form(‘d:\ysjz\longraw’,activate,session);在“调用新Form”的图中,操作者可以在两个Form之间转换,新的Form启动了一个新的数据库会话。
Open_Form退出方式及输入焦点如下:
Form应用1-----àForm应用2
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ssm基于java的少儿编程网上报名系统+vue.zip
- ssm基于Java的汽车客运站管理系统的设计与实现+jsp.zip
- ssm基于java的奶茶店管理系统的设计与实现+jsp.zip
- ssm基于java的健身房管理系统的设计与实现+vue.zip
- ssm基于Java的共享客栈管理系统+jsp.zip
- 毕业设计+Python+基于OpenCV的交通路口红绿灯控制系统设计+Sqlite +PyCharm .zip
- ssm基于Java的高校教学业绩信息管理系统+jsp.zip
- ssm基于Java的公务员培训机构管理系统+jsp.zip
- ssm基于java的电脑硬件库存管理系统+jsp.zip
- ssm基于JAVA的高等数学试卷自动生成系统+vue.zip
- ssm基于Java的菜匣子优选系统设计与实现+jsp.zip
- ssm基于JavaEE的龙腾公司员工信息管理系统的设计与实现+jsp.zip
- ssm基于JAVAEE技术校园车辆管理系统+jsp.zip
- ssm基于JavaWeb的家居商城系统的设计与实现+jsp.zip
- C#工业生产MES上位机工具 新能源转子生产线 完整工程代码 串口 RFID通信 PLC 本项目默认使用OPC协议与下位机PLC通信,MySQL存储数据 所以编译和运行时要自行下载这2个dll或客户
- ssm基于Java Web的毕业生就业状况管理系统设计与实现+jsp.zip