本文记录了一些在Form开发过程中积累下来的技巧: 1. Form中提交并发请求 2. 非数据库字段查询处理 3. 控制Form为只查询 4. 控制Item的属性 5. Trigger的执行层次 6. 按钮处理逻辑 7. 日历相关 ### Oracle EBS Form 开发小技巧汇总 #### 1. Form中提交并发请求 在Oracle EBS Form开发中,提交并发请求是一项常见的需求。当用户希望执行后台处理时,可以通过这种方式来实现。以下是一个示例代码片段,展示了如何在Form中提交并发请求。 **验证块并提交请求** 在提交任何并发请求前,需要先验证当前Form中的块是否已经填写完整。这可以通过调用`APP_STANDARD.APP_VALIDATE(BLOCK_SCOPE)`函数来实现。如果验证不通过,则需要抛出异常`RAISE FORM_TRIGGER_FAILURE`以阻止请求提交,并提示用户填写缺失的信息。 ```plsql APP_STANDARD.APP_VALIDATE(BLOCK_SCOPE); IF NOT FORM_SUCCESS THEN RAISE FORM_TRIGGER_FAILURE; END IF; ``` **检查Form状态并保存更改** 接下来,需要检查当前Form的状态,确保在提交请求前所有的更改都已保存。这可以通过`FORM_STATUS`属性来判断。如果状态为“CHANGED”,则表明有未保存的更改,这时需要调用`DO_KEY('COMMIT_FORM')`来保存这些更改。 ```plsql IF :SYSTEM.FORM_STATUS = 'CHANGED' THEN DO_KEY('COMMIT_FORM'); END IF; ``` **提交并发请求** 完成以上步骤后,可以使用`FND_REQUEST.SUBMIT_REQUEST`函数来提交并发请求。此函数需要传递一系列参数,包括请求程序名、参数列表等。例如: ```plsql l_request_id := FND_REQUEST.SUBMIT_REQUEST( 'XXPO', 'XXPO_JIT_BATCHES_RPT_SECOND', '', '', FALSE, :SUBJOBS.SUB_JOB_BATCH, CHR(0), -- CHR(0) 表示参数结束 NULL, -- 其他参数... NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); ``` **检查请求状态** 提交请求后,需要检查返回的请求ID是否有效。如果请求ID为正数,则说明请求提交成功;如果是0,则表示提交失败,需要向用户显示错误消息。 ```plsql IF l_request_id > 0 THEN IF NOT APP_FORM.QUIET_COMMIT THEN FND_MESSAGE.DEBUG('concretequestsubmitedfailed'); RAISE FORM_TRIGGER_FAILURE; END IF; FND_MESSAGE.SET_NAME('FND', 'CONC-SUBMITTEDREQUEST'); FND_MESSAGE.SET_TOKEN('REQUEST_ID', TO_CHAR(l_request_id)); FND_MESSAGE.SHOW; END IF; ``` **总结** 通过以上步骤,我们可以在Oracle EBS Form开发中有效地提交并发请求。需要注意的是,在实际应用中,根据具体的业务需求,可能还需要添加更多的错误处理逻辑或调整参数设置。 #### 2. 非数据库字段查询处理 在Oracle EBS Form开发中,有时候需要查询非数据库字段的数据。这些字段可能是计算字段、查询结果或是从其他来源获取的数据。处理这类查询的关键在于理解Form如何管理数据以及如何正确地设置和检索这些非数据库字段的值。 **设置非数据库字段** 通常情况下,非数据库字段是通过Form的Item对象来实现的。可以通过创建一个Item,并将其类型设置为非数据库字段类型来定义这些字段。然后,在Form的初始化阶段或适当的触发器中,可以设置这些字段的值。 ```plsql -- 创建非数据库字段 CREATE_ITEM('NON_DB_FIELD', 'NON_DB', 'NON_DB'); -- 设置非数据库字段的值 SET_ITEM_VALUE('NON_DB_FIELD', '计算得到的值'); ``` **查询非数据库字段** 对于查询操作,可以通过在Form的查询逻辑中加入非数据库字段的相关处理。这可能涉及到使用自定义的查询逻辑或者在Form的查询触发器中设置非数据库字段的值。 ```plsql WHEN-QUERY-BLOCK-BEGIN (BLOCK_NAME) BEGIN -- 设置非数据库字段的值 SET_ITEM_VALUE('NON_DB_FIELD', '计算得到的值'); END; ``` **使用非数据库字段** 在Form中使用这些非数据库字段时,需要确保它们已经被正确地设置并且在查询结果中被正确地显示。这通常涉及到在Form的界面设计中合理安排这些字段的位置以及确保它们能够在用户界面上被正确地显示出来。 **总结** 处理非数据库字段查询的关键在于理解Form如何管理和使用这些字段。通过创建非数据库类型的Item,并在适当的时机设置和查询这些字段的值,可以有效地处理这类查询需求。 #### 3. 控制Form为只查询模式 在某些场景下,为了防止用户修改数据,需要将Form设置为只查询模式。这种模式下,Form的所有可编辑项变为只读状态,用户无法进行修改操作。 **设置Form为只查询模式** 要将Form设置为只查询模式,可以通过调用`FND_FORMS_API.SET_QUERY_ONLY`函数来实现。例如: ```plsql FND_FORMS_API.SET_QUERY_ONLY; ``` **恢复可编辑模式** 若要恢复Form的可编辑模式,可以通过调用`FND_FORMS_API.CLEAR_QUERY_ONLY`函数来实现。 ```plsql FND_FORMS_API.CLEAR_QUERY_ONLY; ``` **总结** 控制Form为只查询模式可以有效地保护数据不被意外修改。开发者需要根据具体的应用场景选择合适的时机调用相应的函数来实现这一功能。 #### 4. 控制Item的属性 在Oracle EBS Form开发中,有时需要根据不同的情况改变Item的属性,如可见性、只读性等。这些操作可以帮助开发者更好地控制用户界面的行为。 **修改Item属性** 要修改Item的属性,可以通过`SET_ITEM_ATTRIBUTE`函数来实现。例如,要设置Item为只读状态,可以使用: ```plsql SET_ITEM_ATTRIBUTE('ITEM_NAME', 'READONLY', 'Y'); ``` **恢复默认属性** 如果需要恢复Item的默认属性,可以通过`CLEAR_ITEM_ATTRIBUTE`函数来实现。 ```plsql CLEAR_ITEM_ATTRIBUTE('ITEM_NAME', 'READONLY'); ``` **总结** 通过修改Item的属性,可以有效地控制Form的用户界面行为,提供更好的用户体验。 #### 5. Trigger的执行层次 在Oracle EBS Form开发中,Trigger是非常重要的组成部分,用于响应各种事件。了解Trigger的执行顺序对于编写有效的Form逻辑至关重要。 **Trigger的执行顺序** 在Form中,Trigger按照特定的顺序执行。例如,`WHEN-NEW-FORM-INSTANCE`是在Form实例化时执行的第一个Trigger,而`WHEN-BLOCK-INITIALIZED`是在每个Block初始化时执行。 **优化Trigger逻辑** 了解Trigger的执行顺序有助于优化Form的性能。通过合理安排Trigger的逻辑,可以避免不必要的数据加载或计算,从而提高Form的响应速度。 **总结** 熟悉Trigger的执行顺序可以帮助开发者更高效地编写Form逻辑,提高Form的性能和用户体验。 #### 6. 按钮处理逻辑 在Oracle EBS Form中,按钮通常用来触发特定的动作或逻辑。编写有效的按钮处理逻辑对于实现Form的功能至关重要。 **定义按钮** 首先需要定义一个按钮,并为其指定触发的动作。 ```plsql CREATE_BUTTON('BTN_NAME', '按钮名称', '按钮图标'); SET_BUTTON_ACTION('BTN_NAME', 'ACTION_NAME'); ``` **编写按钮处理逻辑** 接着,需要编写与按钮相关的处理逻辑。这通常涉及到响应用户点击事件,执行特定的操作,比如提交请求、刷新界面等。 ```plsql WHEN-BUTTON-PRESSED (BTN_NAME) BEGIN -- 处理逻辑 ... END; ``` **总结** 编写有效的按钮处理逻辑可以帮助开发者实现Form的各种功能需求,提供良好的用户体验。 #### 7. 日历相关 在Oracle EBS Form开发中,处理日期和时间常常需要用到日历功能。正确地使用日历功能可以帮助开发者更好地管理日期和时间相关的数据。 **使用日历控件** 在Form中,可以通过创建Item并将类型设置为日期类型来实现日历控件。 ```plsql CREATE_ITEM('DATE_ITEM', '日期字段', 'DATE'); ``` **设置日期格式** 为了更好地展示日期,可以通过`SET_ITEM_FORMAT`函数来设置日期的显示格式。 ```plsql SET_ITEM_FORMAT('DATE_ITEM', 'DD-MON-RR'); ``` **总结** 正确地使用日历功能可以帮助开发者更好地管理日期和时间相关的数据,提供更好的用户体验。
剩余63页未读,继续阅读
- zhanghj20122013-01-28对我帮助很大
- gaokejiao2013-04-21有点用,感谢楼主
- 粉丝: 11
- 资源: 31
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#机械制造业信息管理系统源码数据库 Access源码类型 WinForm
- 【python毕业设计】智能旅游推荐系统源码(完整前后端+mysql+说明文档+LW).zip
- springboot美容院管理系统(代码+数据库+LW)
- 【python毕业设计】学生成绩管理系统源码(完整前后端+mysql+说明文档+LW).zip
- 商道融绿、润灵环球ESG评级数据(2015-2023年)dta
- 【python毕业设计】疫情数据可视化分析系统源码(完整前后端+mysql+说明文档+LW).zip
- elasticsearch-analysis-dynamic-synonym 8.16.0
- 【python毕业设计】疫情防控下医院人员调动系统源码(完整前后端+mysql+说明文档+LW).zip
- 【python毕业设计】药物管理系统源码(完整前后端+mysql+说明文档).zip
- 2024年11月网络规划设计师(案例分析)真题与解析