[Form Builder]POST 与 commit_form 的区别
commit_form:将form上的数据写入数据库,并且会在database提交,即 直接查询表是能够查到结果,在form左下角会得到“FRM-40400:Transaction complete:4 records applied an saved”
post:将form上的数据写入数据库,但是并不在database提交,即 直接查询表是查不到该记录的,在form左下角会得到"FRM-40404:Database apply complete: 4 records applied"
最近遇到一个form需求,需要在form操作过程中,把操作的最后一次记录插入到历史记录表(先插入临时表,最后把满足要求的记录插入历史记录表),


例如:在输入trx quantity时,之前可能已经输入过1--->0.001,2--->0.002,3--->0.003,4--->0.005,
但是最后改成如上图的数据,需求是要求最后把屏幕上的数据记入操作记录表(先插入临时表,最后把满足要求的记录插入操作记录表),其他数据不能插入,又由于此form每次在进入此block时 "trx oper quantity"数据是空白的(此需求说明不能使用常规的明细块逻辑,因为明细块逻辑是每次进入记录时都能从数据库中查询出值),但是"Opr id"的值来源于另一个表,即:第一次进入此block(:system.record_status='NEW')会要求为每个operation id录入新的trx quantity,然后按"BACK"按钮返回时将TRX quantity汇总值返回,以后进入时(:system.record_status<>'NEW')显示当前session已经录入的值
Details "WHEN-BUTTON-PRESS"逻辑代码如下:
IF :system.record_status ='NEW' then ---第一次进入到"transfer out details"时 才把数据插入临时表
DELETE FROM XXWIP_MUCL_TRANSFER_DETAILS WHERE 1=1;----先将临时表中有的数据删除
INSERT INTO XXWIP_MUCL_TRANSFER_DETAILS ---
(transaction_date,
organization_id,
inventory_item_id,
operation_id,
trx_oper_quantity
)
VALUES
(:transfer_header.transaction_date,
:transfer_lines_f.organization_id,
:transfer_lines_f.inventory_item_id,
a.OPERATION_CODE,----来自于其他table的值
0 ---
);
end loop;
END IF;
BACK “WHEN-BUTTON-PRESSED” 代码如下:
declare
ln_operation_quantity_r number;
begin
ln_operation_quantity_r :=0;
first_record;
loop
ln_operation_quantity_r := ln_operation_quantity_r+ nvl(:TRANSFER_DETAILS.TRX_OPER_QUANTITY,0);
EXIT WHEN :system.last_record = 'TRUE';
next_record;
end loop;
post; ----按back按钮时提交数据至临时表,将form上的数据写入数据库,但是并不在database提交,即 直接查询表是查不到该记录的,在form左下角会得到"FRM-40404:Database apply complete: 4 records applied"
---:system.message_level :=25;
---commit_form; ---将form上的数据写入数据库,并且会在database提交,即 直接查询表是能够查到结果,在form左下角会得到“FRM-40400:Transaction complete:4 records applied an saved”
---:system.message_level :=0;
if ln_operation_quantity_r > :TRANSFER_LINES_F.AVAILABLE then
fnd_message.set_string('Available quantity is not engouh for transaction');
fnd_message.show; fnd_message.error;
RAISE form_trigger_failure; end if;
if ln_operation_quantity_r > 0 then
copy(ln_operation_quantity_r,'TRANSFER_LINES_F.TRANSFER_OUT');
copy('Y','TRANSFER_LINES_F.CHECK_BOX');
--- ln_operation_quantity_r := null;
end if;
go_block('TRANSFER_LINES_F');
hide_window('TRANSFER_DETAILS');
end;
Description
Writes data in the form to the database, but does not perform a database commit. Oracle Forms first validates the form. If there are changes to post to the database, for each block in the form Oracle Forms writes deletes, inserts, and updates to the database.
Any data that you post to the database is committed to the database by the next COMMIT_FORM that executes during the current Runform session. Alternatively, this data can be rolled back by the next CLEAR_FORM.
Syntax
PROCEDURE POST;
Built-in Type restricted procedure
Enter Query Mode no
Parameters
none
Usage Notes
If this form was called via OPEN_FORM with the NO_SESSION parameter specified, then the POST will validate and write the data both in this form and in the calling form.
POST Examples
/*** Built-in: POST and EXIT_FORM
** Example: Leave the called form, without rolling back the
** posted changes so they may be posted and
** committed by the calling form as part of the
** same transaction.
*/
BEGIN
Post;
/*
** Form_Status should be 'QUERY' if all records were
** successfully posted.
*/
IF :System.Form_Status <> 'QUERY' THEN
Message('An error prevented the system from posting changes');
RAISE Form_Trigger_Failure;
END IF;
/*
** By default, Exit_Form asks to commit and performs a
** rollback to savepoint. We've already posted, so we do
** not need to commit, and we don't want the posted changes
** to be rolled back.
*/
Exit_Form(NO_COMMIT, NO_ROLLBACK);
END;
[Form Builder]POST 与 commit_form 的区别的更多相关文章
- Oracle EBS Form Builder使用Java beans创建窗体
最近有个项目,需要研究一下Oracle的E-Business Sutie(EBS),对于以前没接触此套件的我来说,简直太痛苦了.在网上找了一堆资料,试着进行Form二次开发,也遇到各类奇葩问题.目前遇 ...
- 使用Form Builder创建Form具体步骤
使用Oracle Form Builder创建Form具体步骤 (Data Source为Table) 说明:当Block使用的Data Source为Table时,Form会自动Insert,Upd ...
- [Form Builder]Oracle Form系统变量中文版总结大全
转:http://yedward.net/?id=57 Form中的系统变量,它存在于一个Form的整个运行时期的会话之中,变量包含了有关Form相关属性的字节信息.有些变量标明了当前状态,还有些变量 ...
- [Form Builder]NAME_IN()与COPY()
NAME_IN和COPY实际是间接引用,类似指针传递,而不是值传递... IF :VAR1 IS NULL ... direct referenceIF NAME_IN ( :VAR1 ) IS N ...
- [Form builder]:about SYSTEM.MESSAGE_LEVEL
If you want to suppress error messages then you have to set a system variable :system.message_level. ...
- 【转】HTTP请求中的form data和request payload的区别
jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的,比如用$.ajax方法发送请求时(data参数是一个JSON.stringify()处理后的字符串, ...
- WordPress Plugin Contact Form Builder [CSRF → LFI]
# Exploit Title: Contact Form Builder [CSRF → LFI]# Date: 2019-03-17# Exploit Author: Panagiotis Vag ...
- [转]HTTP请求中的form data和request payload的区别
本文转自:http://www.cnblogs.com/btgyoyo/p/6141480.html jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的 ...
- Oracle Form Builder
Oracle Form Builder 是Oracle的一个开发工具,可以针对Oracle公司的E-Business Suit的ERP系统开发的.对应的还有reports builder. Oracl ...
随机推荐
- Linux Kernel本地权限提升漏洞
漏洞版本: Linux Kernel 漏洞描述: Bugtraq ID:64291 CVE ID:CVE-2013-6368 Linux Kernel是一款开源的操作系统. 如果用户空间提供的vapi ...
- 让ASP.NET MVC页面返回不同类型的内容
在ASP.NET MVC的controller中大部分方法返回的都是ActionResult,更确切的是ViewResult.它返回了一个View,一般情况下是一个HTML页面.但是在某些情况下我们可 ...
- [转]ASP.NET MVC 入门4、Controller与Action
Controller是MVC中比较重要的一部分.几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据.在ASP.NET MVC Preview5中,将原来的Controller类一分为二 ...
- C# 多线程是否结束可通过线程池可以判断
C# ManualResetEvent信号状态判断线程池是否结束 这是一段重要的代码,小猪两个小时的研究成果,记下来备查. using System; using System.Collection ...
- Flash Builder4.6破解方案(亲测有效)(转)
转自 http://bbs.9ria.com/thread-139463-1-1.html 当修改Host文件无法破解时,需要修改Flash Builder安装目录下某些文件来达到破解的目的,经网上搜 ...
- 关于mysql的error-based injection payload
今天用sqlmap扫一个网站,想得到一个表的所有列名,注意到sqlmap用到的一个error-based payload的: 1 AND (SELECT 3174 FROM(SELECT COUNT( ...
- [POJ2484]A Funny Game
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4533 Accepted: 2780 Description Alice ...
- 待修改 nyoj 412 又是一个遗留问题
测试的数据都正确啊,跟别人正确代码也对比了一下,一直wrong ans,这道题是搞不定了,思路是这样的,一个int 的数, 例如 一个数的二进制是1001100,那么大于这个数的最小的有相同个数1的数 ...
- dev/null和dev/zero区别 以及换回设备(loopback device)
转自:http://blog.chinaunix.net/uid-20729677-id-765105.html dev/zero,是一个输入设备,你可你用它来初始化文件. /dev/zero---- ...
- scala学习笔记(四)样本类与模式匹配
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该 ...