Commit sequence in forms
I have one block with single record
and 3 others blocks with multiple records.
block1
b2
b3
b4
On SAVE button when_button_pressed trigger
Code is
declare
v_commit number:=0;
begin
p_insert_test(
:block1.p_emp_id
,v_commit
--Note : No commit inside procedure p_insert_test
if v_commit = 0 then
go_block('b1');
commit_form;
go_block('b2');
commit_form;
go_block('b2');
commit_form;
end if;
end;
problem
1.After execution of procedure p_insert_test if some error occurs in block b1,b2
or b3 then record is showing as inserted through above procedure for same session when I am doing query in same block.
Please tell me the best way of commit sequence in above scenario to maintain
the consistency.
I agree with you that there is no need to commit_form after each block
but how to revert insert through procedure p_insert if any error
occurred in multiple blocks.
Because I record inserted are visible in particular session.
Similar Messages
-
Controlling Commit Sequence In Forms.
My Environment is Oracle Forms10g R2.
Is it Possible to Control the commiting of blocks?
e.g.
I have three blocks A,B and C. I want to Commit B then C and then A. Can I do that?
Regards,
Eric.What do you really mean when you say "commit"?
If you want your form to post the deletes/updates/inserts from block B first, then those in C, then those in A, place the blocks in that order in your Forms Builder Object Navigator.
Then when you commit, block B changes will be applied first, then C, then A. The final database commit will then lock in those changes. -
On commit - sequence increases
Hello.
I would like to know, if there is a way to stop form on error (before commit)?
My form returns sometimes for some users errors(privileges error or policy check error) on commit (KEY-COMMIT). Nothing inserts into database BUT sequence increments.
Is there a way to stop the sequence to increase?
Thanks....and put a trigger on the audit table, etc.
If there were a good reason NOT TO use a gapless sequence then suggesting alternative solutions would be helpful. In this case there may be no good reason TO use a gapless sequence but that doesn't mean he should try something else. It's possible and he needs to do it.
Advance queueing is more efficient but I can't remember how to do it right now. It may be on the web somewhere. Using dbms_lock, in pseudocode:
o create a table to store the sequences.
o when a sequence is needed then loop through the table and use the sequence to create a lockhandle.
o if you can't lock the record then move to the next one.
o if there are no records available then generate more records into the table (autonomos commit) and loop again.
o if you manage to lock a record then delete it (no commit).
o return the sequence to the calling process.
o when the record which uses the sequence is committed then that sequence will be removed from the sequence table.
o if the record is rolled back then the sequence will remain in the sequence table.
not suitable for intense usage and there can be problems if there's a chance of a commit between the call to the sequence routine and the insert of the record. you can get round this by using an 'unused sequences' table but that makes it less efficient - try advanced queueing. -
Triggers Firing Sequence Of Forms 10g after commit_form trigger.
hi all,
please tell me Triggers Firing Sequence Of Forms 10g after commit_form trigger.
thanks,
Regards,
AmbarishHi,
I have a doubt regarding the sequence of events when COMMIT_FORM is fired.
Using the following to trigger the event.
DO_KEY('COMMIT'_FORM');
Added debug messages in my form triggers and found that after the ON-INSERT trigger is fired, the WHEN-VALIDATE-RECORD is fired and then the PRE-RECORD.
However this sequence is not specified in the lists of firing sequences mentioned here.
Is it possible to change the sequence programmatically.
In my ON-INSERT trigger, calling a DB procedure to insert row in the table.
Thanks
Asfa -
Commit a different form from another form
Here's the scenario:
Form A and Form B are on the screen.
User makes changes to Form B.
User clicks on a button in Form A to launch Form C.
How do I commit changes on Form B when clicking on a button in Form A? Commit and forms_ddl('commit') don't seem to do it.Anytime you do a commit, the commit applies to everything in your session. If you want to commit only one form, then you need to open the form using open_form built-in and specify a new session. See the open_form built-in in the help documentation.
-
I want to use oracle sequence in form to increment column Id of table.
How to use it in form so that sequence should not increase in case of rollback.Hello,
There is no way to do that.
When you select the Sequence.NEXTVAL, it is increased, even if you issue a rollback after.
Francois -
Hi,
I have an Empno Column, At the time of Opening a Form The Empno Will be displayed by using Sequence.
If the User doesn't save the Form Then the Empno Generated number will be changed.
How to write the code to get sequence numbers at Empno columns by using Sequence?
Thanks & Regards,
Hari BabuOk, I understand now your question. Since the oracle sequence is commited in a separate transaction, it is not possible to get the no-gap sequence, considering your example. In the other hand, if you don't commit immediately, than two concurrently opened forms could use the same sequence number, so you'll get the duplicate key!
If you're sure that this couldn't happen, you can manage your own sequencing, storing them in another table. Let's say you reached seq 999: entering the form, you'll read from your sequence table 1000, increment to 1001, and assign it to empno, but without commiting. Next time, you'll get the same number, until you commit form, and at the same time, change in seq table. So another will get 1001.
Downside of this approach are, as mentioned before, concurrent sessions, which will get the same sequence. -
How to Capture Commit Point in Forms
Dear Members,
We are on E-Business Suite 11.5.10.2.
We are trying to change the behavior of AP Invoice Work Bench form through CUSTOM.pll.
When you try to reverse an existing distribution line, then oracle does a lot of validations and many triggers are fired until commit occurs.
I turned on custom events and found WHEN-VALIDATE-RECORD trigger fires 14 times until commit occurs at the end.
MY question is how can we know the commit occurred. I mean in custom.pll i need to write some logic where i need to take some field values in a block at the very end when commit occurs. The field values that i am talking about keep changing from the start to the end and i want to capture the values at the point commit occurs,
Is there any means to know that commit occurred; so that i can retrieve values at that moment.
Thanks
SandeepTry to debug the Block_status for line.I will regularly change from change mode to some mode for commit.
-
I created a sequence as:
-- Create sequence-----
create sequence MY_SEQ minvalue 1 maxvalue 100000 start with 21increment by 1cache 20 order;
In Form(Form10g) I set the Initial Value propery as:
:sequence.30_seq.nextval
The problem is, Whenever I go for Insert Item and cancel Insertion. The sequence continues to the next after next. How do I keep it with MAX+1 through SequenceYes, I've worked with something like that before. I'm not sure if there was an issue with using a 'for update nowait' lock, but it used dbms_lock instead. After getting a lock, delete the record. If the user saves the form then the sequence will used there, if they roll back it will remain on the table.
But with more than one user and the option not to save after the sequence has been issued, you could still have gaps in the sequences within each session and sequence numbers will not always be issued in ascending order. In the long term you will have a continuous sequence on the table (unless a record is deleted), but in the short term it may not look like it, so be prepared for complaints. -
Problem: trying to update all detail rows on pre-commit (MASTER DETAIL FORM
Hi:
I got a MASTER DETAIL form... and I need to update every detail row of this form (if the master was updated) before commiting the changes. the problem is that i cannot do that for instance in PRE-COMMIT or ON-COMMIT... it's an "illegal operation". I achieved part of it by coding KEY-COMMIT... but that did not solve the all problem. first take a look of the kind of code i want execute before commiting.
form trigger key-commit code is is somehow like this:
DECLARE
tot_line NUMBER (3);
line NUMBER (3);
begin
IF NAME_IN ('system.form_status') = 'CHANGED'
THEN
GO_BLOCK ('DETAIL');
LAST_RECORD;
tot_line := GET_BLOCK_PROPERTY ('DETAIL', current_record);
FIRST_RECORD;
line:= 1;
LOOP
:detail.quant := :detail.quant + 1;
EXIT WHEN line= tot_line;
next_record;
line:= line+ 1;
END LOOP;
FIRST_RECORD;
GO_BLOCK ('MASTER');
END IF;
COMMIT;
end;
The problem is for instance when the users close form in the "X" button (right top, near minimize form) ... If they do that Forms ask "Do you want to save changes?" ... and with this i do not execute the update of the detail rows...
But there are other situations when this happens... for instance if EXECUTE_QUERY when i change a record...
Anyone help?
Joao OliveiraUse PRE-UPDATE trigger (Master block).
begin
update <detail_table>
set quant + 1
where <detail_table>.<relaition_column1> = :<Master_block>.<relaition_item1>
and <detail_table>.<relaition_columnN> = :<Master_block>.<relaition_itemN>
and <detail_block_WHERE>;
EXCEPTION WHEN OTHERS THEN NULL;
end; -
Commit processing in Forms 10g, what triggers fire etc.
In the oracle documentation there used to be a commit processing flowchart that said exactly what triggers fire on commit. Don’t seem to be able to find such a thing online.
This started by trying to work out if when-validate-item always fired on commit, even if it had been fired when the value was changes. It has turned into a more general question about the above and if it is any different in forms 10g and is it any different to 6i, 9i...?
I.e. how do you answer the standard oracle job interview question 'what triggers are fired when you commit in forms?'.
Oracle seems to of hidden the information, anyone know the answer?
Regards,
BenHello,
Something like this:
POST-TEXT-ITEM
POST-RECORD
POST-BLOCK
PRE-COMMIT
PRE-UPDATE
ON-UPDATE
POST-UPDATE
PRE-INSERT
ON-INSERT
POST-INSERT
POST-FORM-COMMIT
ON-COMMIT
POST-DATABASE-COMMIT
PRE-BLOCK
PRE-RECORD
PRE-TEXT-ITEM
WHEN-NEW-ITEM-INSTANCE
Francois -
When you have say 3 table based blocks in a form, when u issue a commit what order does forms commit those blocks?
Thanks
LewisDuplicate message. Please use this one:
Order of commit in a forms -
Commit causing other form to fail
I have an app that runs on forms 6i. The app is made up of multiple forms, all of which can be opened using open form (or go form if the form is already open).
The forms are not table based. i.e. they are coded so that triggers fire to ensure users have entered values etc.
The forms are causing problems as one has a commit in it but this is causing a when-validate-item to fire in another. As the error does not concern the screen they are on it is making the user think what they have done has saved when in fact it hasn't.
Do you know if there is anyway of coping with this scenario.
Thanks
Bryan> Do you know if there is anyway of coping with this scenario.
Try doing this everywhere immediately before you do an Open_Form or Go_Form:
Validate(Form_Scope);
If not form_success then
Raise Form_trigger_failure;
End if;
> Ours are not as then they can be a lot more user friendly. Just means you have
to do your own inserts etc in the triggers and then do a commit.
So you are NOT using the default block processing that Forms automatically gives you when you create a base-table block? If you are not, and instead are displaying data using select statements rather than Execute_Query... then I think you are doing things the hard way. ...Mercy! -
PROBLEM WITH 'COMMIT' COMMAND IN FORM 4.5
During any process if I use COMMIT command after insert, update
or delete command in table which is not the base table of
current form a message appears on screen 'No changes to save'
and changes are saved in the table. How can I stop this message?
If I use Database trigger then I am not sure if I would be able
to use Rollback command.
nullIf you are referencing standard.commit, it works for me. I
am using v4.5, I am assuming if is the same for 5.0 or 6.0 if 5.0
or 6.0 is your product.
Having said that all solutions mentioned are valid. I would
recommend next to try:
v_system_message_level := :system.message_level;
:system.message_level := '5';
commit;
:system.message_level := v_system_message_level;
If you modify the on-error/message trigger you may not
receive this error when it is raised when you really
do want to see it.
Faisal Shaikh (guest) wrote:
: No it didn't work any other ideas
: steve (guest) wrote:
: : Try using STANDARD.COMMIT;
: : Faisal Shaikh (guest) wrote:
: : : During any process if I use COMMIT command after insert,
: update
: : : or delete command in table which is not the base table of
: : : current form a message appears on screen 'No changes to
: save'
: : : and changes are saved in the table. How can I stop this
: : message?
: : : If I use Database trigger then I am not sure if I would be
: able
: : : to use Rollback command.
null -
Tab Sequence for Forms, Changing
Is there a quick way to change the tab sequence on a form?
E.g. Production Order form opens with cursor at field Product No. For users who aren't creating prod orders, just looking up exisitng ones, it would be handier if the cursor were postitioned in the production order number field. Can this be done without programming?
Thanks.Cindy,
Just a suggestion but there is an addon solution that does this very thing, and alot more
[http://www.b1up.net/]
There is a video demo on the site
Hope this helps,
Lucas
Maybe you are looking for
-
An error has occurred while loading the report
Hello all, I'm trying to view a Crystal Report from my CRM application and I receive the follow error message, but only when trying to view it on a laptop: An error has occurred while loading the report. Please contact technical support. Has anyone e
-
New concepts in ECC 6.0
hi, pls make me know throuh mail id ;[email protected]
-
My sound is not working after downloading windows 10
My sound is not working after downloading windows 10 please can you help me?
-
I just wanted to say I appreciate you guys posting proper information on Cmos resets and getting MSI boards to recognize CPU's when its just throwing Error Code 99 every time. Tech support was 100% useless. You guys are the bomb. PS I imagine I need
-
Using $ sign on MaxL scripts
Hi all, How does using $ sign on MaxL scripts work? I have seen scripts that $ sign was used instead of username, password, server name, etc. What are the advantages of using it and how can it be set up? Thanks in advance. A