引用 Oracle Form中如何使用COMMIT

转自:http://blog.itpub.net/24627116/viewspace-754520/

在form里,做update后,要 forms_ddl('COMMIT');否则记录会一直锁住,如果提交整个form用do_key_commit。

代码:DECLARE l_where varchar2(2000) default '1=1';
BEGIN
fnd_standard.set_who;
if :HEADERS.STATUS='NOT APPROVED'
THEN
UPDATE expense_header_all SET status='APPROVED' WHERE HEADER_ID=:HEADERS.HEADER_ID;
IF (SQL%NOTFOUND) THEN
RAISE NO_DATA_FOUND;
END IF;
forms_ddl('COMMIT');
app_query.reset('HEADERS');
l_where:= l_where||' and HEADER_ID = ' || :HEADERS.HEADER_ID;
app_query.append ('HEADERS',l_where);
app_find.find('HEADERS');
app_query.reset('HEADERS');
END IF;
end;

关于form中的commit,补充一下:
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上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
3.commit
对form和数据库进行提交.
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
4.forms_ddl('commit');
只针对代码中的update,insert,delete语句进行提交,form上面的数据变动不提交.

5谁覆盖谁,要看语句执行的顺序,比如在Post-Forms-Commit中写UPDATE就会覆盖界面。
6.FORM中的一些built-in subprogram适合KEY TRIGGER对应的,而KEY TRIGGER一般对应些快捷键,
DO_KEY(built-in subprogram NAME ),的作用是,如果没有对应的KEY TRIGGER则执行BUILT-IN SUBPROGRAM,如果有则只执行KEY TRIGGER

每条记录更改后都想光标移出时就自动更新到数据库?

POST-RECORD中根据RECORD的状态决定是否COMMIT

调用app_standard.event('ACCEPT');好像没有用,不能保存,而且调用后光标不能移动,后来直接在post-record中写ddl语句,如果record_status是INSERT或者CHANGED就触发,然后form_ddl('commit');再把record_status设为query,就完成了自动保存


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值