Note: It is possible to start up several instances of the same form,using OPEN_FORM, unless The application does appropriate tests before calling this built-in. For example, test a Flag (global variable) set by an opened form at startup, which the opened form could Reset on exit, or use the FIND_FORM built-in.
Oracle Forms: Introduction to multiple Forms
Introduction to Multiple Form Applications
• Call one form from another from module
• Define Multiple form functionality
Multiple Form Applications
– Flexible navigation between windows
– Single or multiple database connections
– Transactions may span forms, if required
– Commits in order of opening forms, starting with current form
– Data is exchanged by global variables or parameter lists
– Code is shared as required, through libraries and the database
Multiple Form Sessions
Implementing Multiple Forms
1. Define windows and positions for each form.
2. Plan global variables and their names.
3. Implement triggers to:
• Open other forms
• Initialize global variables from calling forms
• Use global variables in opened forms
Linking by Global Variables
Opening Another Forms
• Control passes immediately to the Employees form—no statements
after OPEN_FORM are processed.
• If the Activate_Mode argument is set to NO_ACTIVATE, you retain
control in the current form.
• The transaction continues unless it was explicitly committed before.
Restricted Query at Startup
:EMP.deptno := :GLOBAL.dept_id;
When-New-Form-Instance - Form Level
Pre-Query - Block Level
Global Variables in Opened Form
• Assign Global variables values in opened form with
• DEFAULT_VALUE ensures the existence of global variables.
• You can use global variables to communicate that the form is running.
• Pre-Form Example:
:GLOBAL.dept_id := :DEPT.deptno;
IF ID_NULL(FIND_FORM(’EMPLOYEES’)) THEN
Closing a Form with EXIT_FORM
• The default functionality is the same as for the Exit key.
• The Commit_Mode argument defines action on uncommitted changes.
IF :SYSTEM.FORM_STATUS = ’CHANGED’ THEN
EXIT_FORM( DO_COMMIT );
EXIT_FORM( NO_COMMIT );
• The OPEN_FORM built-in provides multiple concurrent
forms in a session.
• Forms communicate through global variables:
– Load key values in the parent form
– Use global values in opened forms for
When-New-Form-Instance and Pre-Query