The main difference between OPEN_FORM, CALL_FORM and NEW_FORM Built-ins in Oracle Forms is:
OPEN_FORM: OPEN_FORM opens another form in a modeless window. The user can work on multiple forms concurrently. The user can navigate within multiple forms. With the OPEN_FORM the user can call another form in a different database session.
Syntax: OPEN_FORM (‘form_name’, active_mode, session_mode, data_mode, paramlist);
default: activate and no session mode.
OPEN_FORM is a restricted procedure and cannot be called in the Enter-Query mode.
CALL_FORM: CALL_FORM calls another form in a Modal window. The user cannot navigate within different Forms. Requires to exit the called form before navigating back to the calling form. Forms are called in the same session.
NEW_FORM: NEW_FORM exits the current form and opens the new form as a parent window. NEW_FORM releases the memory by exiting the current form.
Difference between Modal and Modeless window
Modal Window is a restricted window that requires a window exit before moving to another window. You cannot move freely between windows.
Modeless Window is an unrestricted window that the user can move freely. User can have simultaneously access to more than one window.
Benefits of multiple form Applications
Main benefits of using multiple form applications are:
- Easier to debug small form.
- Flexibility between forms.
- Easy to maintain.
- Data can be exchanged between forms.
EXIT_FORM in Oracle Forms
EXIT_FORM Built-in is used for closing or exiting the form.
Syntax: EXIT_FORM (ASK_COMMIT or DO_COMMIT or NO_COMMIT or NO_VALIDATE)
ASK_COMMIT: IS a default type. Acknowledgement window is populated asking the user to exit the form or not.
DO_COMMIT: Posts and commit changes across all form for the current transaction.
NO_COMMIT: Validates and rollback uncommitted changes in the current form.
NO_VALIDATE: Is the same as NO_COMMIT but without validation.
SYNCHRONIZE built-in is used to synchronize the Terminal Screen with the internal State of the form. SYNCHRONIZE update the screen display to reflect the information that Form Builder has its internal representation of the screen.
FOR J IN 1..1000 LOOP