Whenever we commit after entering data in Oracle Forms, many triggers fires during this event and also Pre-Update and Pre-Insert triggers fires just before inserting or updating the record into table. We can write Pre-Update and Pre-Insert triggers on particular block to just allow the process or to stop the process by using "Raise Form_Trigger_Failure" command, the following are the some examples:
Suppose you have a data block and there is a field which need to be validate just before inserting the record, then you must write the Pre-Insert trigger for this purpose, below is an example:
Declare v_avl_qty number; Begin Select avl_qty into v_avl_qty From stock_inhand Where Item_Code = :Block1.item_code; if v_avl_qty < :Block1.qty_issued then Raise Form_Trigger_Failure; --- Execution stopped... end if; --- Else insertion will take place... End;
And now I am giving you another example, suppose there is a field which need to be assigned from database just before the updation of the record, then you must write a Pre-Update trigger for this purpose, below is an example:
Declare v_value varchar2(10); Begin Select a_value into v_value From a_table Where b_value = :Block1.b_value; --- Assign this value to block item :Block1.a_value := v_value; --- you can assign any others value to any field just before updation or insertion like: :Block1.create_date := Sysdate; Exception when others then --- After any error or no data found you still want to continue then you can use only Null; statement Null; --- and any other value to any field you can still assign :Block1.create_date := Sysdate; End;
See also: Pre-Update and Pre-Insert Trigger Examples For Oracle Forms
Related Topics
- An Example of Pre-Query and Post-Query Triggers in Oracle Forms With Using Display_Item to Highlight Dynamically
- An Example of On-Error Trigger in Oracle Forms
- Using Post_Query Trigger in Oracle Forms
- Pre-Update and Pre-Insert Trigger Examples For Oracle Forms
- Examples For When-Validate-Item trigger In Oracle Forms
- Writing On-Error Trigger In Oracle Forms
What you can do is... before performing commit_form you must clear those records from detail block which are not checked and after that your perform commit_form. Suppose you have a Save button in this master detail form and put the following code into when-button-pressed trigger of that button:
Begin
Go_block('yourdetailblock');
First_record;
Loop
If Not Checkbox_Checked('yourdetailblock.yourcheckbox') then
if :system.last_record = 'TRUE' then
Clear_Record;
Exit;
Else
Clear_Record;
End if;
Else
if :system.last_record = 'TRUE' then
Exit;
End if;
Next_Record;
End if;
End Loop;
End;
i have a master detail form. In the detail block i have 10 records with a check box for each line. I want to insert records into the detail block for which the check box is checked. How to achieve this ?