This is the code that I am trying to use. It does not work 100%. The first record is deleted instead and the one I am trying to delete becomes the first record.
If I try to delete it again then I get an error message: FRM-40657 Record deleted by another user. Otherwise I get the error message FRM-40509 Unable to update record.
The records are being deleted from the V_BASE table even though I am getting these errors.
Code for Delete Button: DECLARE ALERT_BUTTON NUMBER; BEGIN ALERT_BUTTON:= SHOW_ALERT('DELETE_CAUTION_ALERT'); IF ALERT_BUTTON=ALERT_BUTTON1 THEN DELETE FROM CUSTOMER WHERE :CUSTOMER.CUSTOMER_NO = CUSTOMER.CUSTOMER_NO; COMMIT; ALERT_BUTTON:= SHOW_ALERT('DELETE_SUCCESSFUL_ALERT'); MESSAGE('RECORD HAS BEEN DELETED SUCCESSFULLY'); ELSIF ALERT_BUTTON=ALERT_BUTTON2 THEN ROLLBACK; ALERT_BUTTON:= SHOW_ALERT('DELETE_CANCELLED_ALERT'); MESSAGE('NO RECORDS HAVE BEEN DELETED'); END IF; END;
I get the feeling you are locking the record yourself based on the information you provided me.
Maybe you want to just say:
IF ALERT_BUTTON=ALERT_BUTTON1 THEN delete_record; -- A FORM'S API; ...
This should suffice.
Please note there is no NEED to do anything if the user hits cancel (i.e. no need to right code for ALERT_BUTTON2).
This was first published in June 2004