Post-Block Trigger Post-Block Trigger

Restrictions
All Triggers

Description

Fires during the Leave the Block process when the focus moves off the current block.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Block trigger to validate the block's current record; that is, the record that had input focus when the Leave the Block event occurred.

Use this trigger to test a condition and prevent the user from leaving a block based on that condition.

On Failure

If the trigger fails while trying to make the form the navigation unit, Form Builder tries to set the target to a particular block, record or item. Failing that, Form Builder attempts to put the cursor at a target location, but, if the target is outside of the current unit or if the operator indicates an end to the process, Form Builder aborts the form.

Fires In

Leave the Block

Review Process Flowcharts


Post-Block Trigger restrictions Post-Block Trigger restrictions

A Post-Block trigger does not fire when the Validation Unit form document property is set to Form.


Post-Change Trigger Post-Change Trigger

Restrictions Related Topics
All Triggers

Description

Fires when any of the following conditions exist:

frm90000.gif The Validate the Item process determines that an item is marked as Changed and is not NULL.

frm90000.gif An operator returns a value into an item by making a selection from a list of values, and the item is not NULL.

frm90000.gif Form Builder fetches a non-NULL value into an item. In this case, the When-Validate-Item trigger does not fire. If you want to circumvent this situation and effectively get rid of the Post-Change trigger, you must include a Post-Query trigger in addition to your When-Validate-Item trigger. See "Usage Notes" below.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

The Post-Change trigger is included only for compatibility with previous versions of Form Builder. Its use is not recommended in new applications.

The Post-Query trigger does not have the restrictions of the Post-Change trigger. You can use Post-Query to make changes to the fetched database values. Given such changes, Form Builder marks the corresponding items and records as changed.

On Failure

If fired as part of validation initiated by navigation, navigation fails, and the focus remains in the original item.

If there are V2-style triggers in the form and Form Builder is populating a record with fetched values, the following restrictions apply:

frm90000.gif Form Builder ignores any attempt to change the value of a database item in the record.

frm90000.gif Form Builder does not execute any SELECT statement that only affects database items in the record.

frm90000.gif Form Builder does not execute a SELECT statement that does not have an INTO clause.

frm90000.gif If Form Builder does not execute a SELECT statement in a V2-style trigger step, it treats the trigger step as though the step succeeded, even when the Reverse Return Code trigger step property is set.

During fetch processing, Post-Change triggers defined as PL/SQL triggers do not operate with these restrictions. Regardless of trigger style, during a record fetch, Form Builder does not perform validation checks, but marks the record and its items as Valid, after firing the Post-Change trigger for each item.

Fires In

Validate the Item

Fetch Records

Review Process Flowcharts


Post-Change Trigger restrictions Post-Change Trigger restrictions

Note that it is possible to write a Post-Change trigger that changes the value of an item that Form Builder is validating. If validation succeeds, Form Builder marks the changed item as Valid and does not re-validate it. While this behavior is necessary to avoid validation loops, it does allow you to commit an invalid value to the database.


Post-Database-Commit Trigger Post-Database-Commit Trigger

Examples Related Topics
All Triggers

Description

Fires once during the Post and Commit Transactions process, after the database commit occurs. Note that the Post-Forms-Commit trigger fires after inserts, updates, and deletes have been posted to the database, but before the transaction has been finalized by issuing the Commit. The Post-Database-Commit Trigger fires after Form Builder issues the Commit to finalize the transaction.

Definition Level form

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Database-Commit trigger to perform an action anytime a database commit has occurred.

On Failure

There is no rollback, because at the point at which this trigger might fail, Form Builder has already moved past the point at which a successful rollback operation can be initiated as part of a failure response.

Fires In

Post and Commit Transactions

Review Process Flowcharts


Post-Database-Commit Trigger examples Post-Database-Commit Trigger examples

Example

/*

  • FUNCTION recs_posted_and_not_committed
    ** RETURN BOOLEAN IS
    ** BEGIN
    ** Default_Value('TRUE','Global.Did_DB_Commit');
    ** RETURN (:System.Form_Status = 'QUERY'
    ** AND :Global.Did_DB_Commit = 'FALSE');
    ** END;
    */
    BEGIN
    :Global.Did_DB_Commit := 'FALSE';
    END;


    Post-Delete Trigger
Post-Delete Trigger

All Triggers

Description

Fires during the Post and Commit Transactions process, after a row is deleted. It fires once for each row that is deleted from the database during the commit process.

Definition Level form or block

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Delete trigger to audit transactions.

On Failure

Form Builder performs the following steps when the Post-Delete trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Post-Form Trigger Post-Form Trigger

All Triggers

Description

Fires during the Leave the Form process, when a form is exited.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Form trigger for the following tasks:

frm90000.gif To clean up the form before exiting. For example, use a Post-Form trigger to erase any global variables that the form no longer requires.

frm90000.gif To display a message to the operator upon form exit.

This trigger does not fire when the form is exited abnormally, for example, if validation fails in the form.

On Failure

processing halts

Fires In

Leave the Form

Review Process Flowcharts


Post-Forms-Commit Trigger Post-Forms-Commit Trigger

Examples Related Topics
All Triggers

Description

Fires once during the Post and Commit Transactions process. If there are records in the form that have been marked as inserts, updates, or deletes, the Post-Forms-Commit trigger fires after these changes have been written to the database but before Form Builder issues the database Commit to finalize the transaction.

If the operator or the application initiates a Commit when there are no records in the form have been marked as inserts, updates, or deletes, Form Builder fires the Post-Forms-Commit trigger immediately, without posting changes to the database.

Definition Level form

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Forms-Commit trigger to perform an action, such as updating an audit trail, anytime a database commit is about to occur.

On Failure

Aborts post and commit processing: Form Builder issues a ROLLBACK and decrements the internal Savepoint counter.

Fires In

Post and Commit Transactions

Review Process Flowcharts


Post-Forms-Commit Trigger examples Post-Forms-Commit Trigger examples

Example

This example can be used in concert with the Post-Database-Commit trigger to detect if records have been posted but not yet committed.

/*
** FUNCTION recs_posted_and_not_committed
** RETURN BOOLEAN IS
** BEGIN
** Default_Value('TRUE','Global.Did_DB_Commit');
** RETURN (:System.Form_Status = 'QUERY'
** AND :Global.Did_DB_Commit = 'FALSE');
** END;
*/
BEGIN
:Global.Did_DB_Commit := 'FALSE';
END;


Post-Insert Trigger Post-Insert Trigger

All Triggers

Description

Fires during the Post and Commit Transactions process, just after a record is inserted. It fires once for each record that is inserted into the database during the commit process.

Definition Level form or block

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Insert trigger to audit transactions.

On Failure

Form Builder performs the following steps when the Post-Insert trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Post-Logon Trigger Post-Logon Trigger

Examples Related Topics
All Triggers

Description

Fires after either of the following events:

frm90000.gif The successful completion of Form Builder default logon processing.

frm90000.gif The successful execution of the On-Logon trigger.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Logon trigger to provide an event point for a task such as setting up a custom environment with special variables--to initialize on an application level rather than a form-by-form basis. You might accomplish this by initializing special global variables from this trigger.

On Failure

Varies based on the following conditions:

frm90000.gif If the trigger fails during the first logon process, Form Builder exits the form, and returns to the operating system.

frm90000.gif If the trigger fails after a successful logon, Form Builder raises the built-in exception FORM_TRIGGER_FAILURE .

Fires In

LOGON

Review Process Flowcharts


Post-Logon Trigger examples Post-Logon Trigger examples

Example

This example calls a user exit to log the current username and time to an encrypted audit trail file on the file system, which for security reasons is outside the database.

BEGIN
User_Exit('LogCrypt '||
USER||' ' ||
TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'));
END;


Post-Logout Trigger Post-Logout Trigger

Related Topics
All Triggers

Description

Fires after either of the following events:

frm90000.gif Form Builder successfully logs out of ORACLE.

frm90000.gif The successful execution of the On-Logout trigger.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Logout trigger to audit or to perform tasks on an Form Builder application that does not require or affect the RDBMS or other data source.

If you call certain built-ins from within one of the Logout triggers, the results are undefined. For example, you cannot call COPY from a Pre-Logout trigger because Pre-Logout fires after the Leave the Form event. Because the form is no longer accessible, a COPY operation is not possible.

On Failure

If this trigger fails while leaving the form, there is no effect.

If this trigger fails and you have initiated a call to the LOGOUT built-in from within the trigger, FORM_FAILURE is set to TRUE.

Fires In

LOGOUT

Review Process Flowcharts


Post-Query Trigger Post-Query Trigger

Examples Related Topics
All Triggers

Description

When a query is open in the block, the Post-Query trigger fires each time Form Builder fetches a record into a block. The trigger fires once for each record placed on the block's list of records.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Query trigger to perform the following tasks:

frm90000.gif populate control items or items in other blocks

frm90000.gif calculate statistics about the records retrieved by a query

frm90000.gif calculate a running total

frm90000.gif When you use a Post-Query trigger to SELECT non-base table values into control items, Form Builder marks each record as CHANGED, and so fires the When-Validate-Item trigger by default. You can avoid the execution of the When-Validate-Item trigger by explicitly setting the Status property of each record to QUERY in the Post-Query trigger. To set record status programmatically, use SET_RECORD_PROPERTY .

On Failure

Form Builder flushes the record from the block and attempts to fetch the next record from the database. If there are no other records in the database, Form Builder closes the query and waits for the next operator action.

Fires In

Fetch Records

Review Process Flowcharts


Post-Query Trigger examples Post-Query Trigger examples

Example

This example retrieves descriptions for code fields, for display in non-database items in the current block.

DECLARE

CURSOR lookup_payplan IS SELECT Payplan_Desc
FROM Payplan
WHERE Payplan_Id =
:Employee.Payplan_Id;

CURSOR lookup_area IS SELECT Area_Name
FROM Zip_Code
WHERE Zip = :Employee.Zip;

BEGIN
/*
** Lookup the Payment Plan Description given the
** Payplan_Id in the Employee Record just fetched.
** Use Explicit Cursor for highest efficiency.
*/
OPEN lookup_payplan;
FETCH lookup_payplan INTO :Employee.Payplan_Desc_Nondb;
CLOSE lookup_payplan;

/*
** Lookup Area Descript given the Zipcode in
** the Employee Record just fetched. Use Explicit
** Cursor for highest efficiency.
*/
OPEN lookup_area;
FETCH lookup_area INTO :Employee.Area_Desc_Nondb;
CLOSE lookup_area;
END;


Post-Record Trigger Post-Record Trigger

Restrictions
All Triggers

Description

Fires during the Leave the Record process. Specifically, the Post-Record trigger fires whenever the operator or the application moves the input focus from one record to another. The Leave the Record process can occur as a result of numerous operations, including INSERT_RECORD , DELETE_RECORD , NEXT_RECORD , NEXT_BLOCK , CREATE_RECORD , PREVIOUS_BLOCK , etc.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Record trigger to perform an action whenever the operator or the application moves the input focus from one record to another. For example, to set a visual attribute for an item as the operator scrolls down through a set of records, put the code within this trigger.

On Failure

The input focus stays in the current record.

Fires In

Leave the Record

Review Process Flowcharts


Post-Record Trigger restrictions Post-Record Trigger restrictions

A Post-Record trigger fires only when the form is run with a validation unit of the item or record, as specified by the Validation Unit form property.


Post-Select Trigger Post-Select Trigger

All Triggers

Description

The Post-Select trigger fires after the default selection phase of query processing, or after the successful execution of the On-Select trigger. It fires before any records are actually retrieved through fetch processing.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Note:

Use the Post-Select trigger to perform an action based on the outcome of the Select phase of query processing such as an action based on the number of records that match the query criteria.

On Failure

no effect

Fires In

Execute the Query

Open the Query

Review Process Flowcharts


Post-Text-Item Trigger Post-Text-Item Trigger

Restrictions Related Topics
All Triggers

Description

Fires during the Leave the Item process for a text item. Specifically, this trigger fires when the input focus moves from a text item to any other item.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Text-Item trigger to calculate or change item values.

On Failure

Navigation fails and focus remains in the text item.

Fires In

Leave the Item

Review Process Flowcharts


Post-Text-Item Trigger restrictions Post-Text-Item Trigger restrictions

The Post-Text-Item trigger does not fire when the input focus is in a text item and the operator uses the mouse to click on a button, check box, list item, or radio group item that has the Mouse Navigate property Off. When Mouse Navigate is Off for these items, clicking them with the mouse is a non-navigational event, and the input focus remains in the current item (in this example, a text item).


Post-Update Trigger Post-Update Trigger

All Triggers

Description

Fires during the Post and Commit Transactions process, after a row is updated. It fires once for each row that is updated in the database during the commit process.

Definition Level form or block

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted function codes, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Post-Update trigger to audit transactions.

On Failure

Form Builder performs the following steps when the Post-Update trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Pre-Block Trigger Pre-Block Trigger

Restrictions
All Triggers

Description

Fires during the Enter the Block process, during navigation from one block to another.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Block trigger to:

frm90000.gif allow or disallow access to a block

frm90000.gif set variable values

On Failure

Navigation fails and focus remains in the source item.

Fires In

Enter the Block

Review Process Flowcharts


Pre-Block Trigger restrictions Pre-Block Trigger restrictions

A Pre-Block trigger fires only when the form is run with a validation unit of the item, record, or block, as specified by the Validation Unit form property.


Pre-Commit Trigger Pre-Commit Trigger

All Triggers

Description

Fires once during the Post and Commit Transactions process, before Form Builder processes any records to change. Specifically, it fires after Form Builder determines that there are inserts, updates, or deletes in the form to post or commit. The trigger does not fire when there is an attempt to commit, but validation determines that there are no changed records in the form.

Definition Level form

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Commit trigger to perform an action, such as setting up special locking requirements, at any time a database commit is going to occur.

On Failure

The Post and Commit process fails: No records are written to the database and focus remains in the current item.

Note: If you perform DML in a Pre-Commit trigger and the trigger fails, you must perform a manual rollback, because Form Builder does not perform an automatic rollback. To prepare for a possible manual rollback, save the savepoint name in an On-Savepoint trigger, using GET_APPLICATION_PROPERTY (Savepoint_Name). Then you can roll back using ISSUE_ROLLBACK (Savepoint_Name).

Fires In

Post and Commit Transactions

Review Process Flowcharts


Pre-Delete Trigger Pre-Delete Trigger

All Triggers

Description

Fires during the Post and Commit Transactions process, before a row is deleted. It fires once for each record that is marked for delete.

Note: Form Builder creates a Pre-Delete trigger automatically for any master-detail relation that has the Delete Record Behavior property set to Cascading

Definition Level form or block

Legal Commands

SELECT statements, Data Manipulation Language (DML) statements (i.e., DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Delete trigger to delete the detail record of a master record.

Use a Pre-Delete trigger to prevent the deletion of a record if that record is the master record for detail records that still exist.

On Failure

Form Builder performs the following steps when the Pre-Delete trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Pre-Form Trigger Pre-Form Trigger

Related Topics
All Triggers

Description

Fires during the Enter the Form event, at form startup.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Form trigger to perform the following tasks:

frm90000.gif assign unique primary key from sequence

frm90000.gif restrict access to a form

frm90000.gif initialize global variables

On Failure

Form Builder leaves the current form and fires no other triggers.

Fires In

Enter the Form

Review Process Flowcharts


Pre-Insert Trigger Pre-Insert Trigger

Examples
All Triggers

Description

Fires during the Post and Commit Transactions process, before a row is inserted. It fires once for each record that is marked for insert.

Definition Level form or block

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Insert trigger to perform the following tasks:

frm90000.gif change item values

frm90000.gif keep track of the date a record is created and store that in the record prior to committing

On Failure

Form Builder performs the following steps when the Pre-Insert trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Pre-Insert Trigger examples Pre-Insert Trigger examples

Example

This example assigns a primary key field based on a sequence number, and then writes a row into an auditing table, flagging creation of a new order.

DECLARE
CURSOR next_ord IS SELECT orderid_seq.NEXTVAL FROM dual;
BEGIN

/*
** Fetch the next sequence number from the
** explicit cursor directly into the item in
** the Order record. Could use SELECT...INTO,
** but explicit cursor is more efficient.
*/
OPEN next_ord;
FETCH next_ord INTO :Order.OrderId;
CLOSE next_ord;

/*
** Make sure we populated a new order id ok...
*/
IF :Order.OrderId IS NULL THEN
Message('Error Generating Next Order Id');
RAISE Form_Trigger_Failure;
END IF;

/*
** Insert a row into the audit table
*/
INSERT INTO ord_audit( orderid, operation, username, timestamp )
VALUES ( :Order.OrderId,
'New Order',
USER,
SYSDATE );

END;


Pre-Logon Trigger Pre-Logon Trigger

All Triggers

Description

Fires just before Form Builder initiates a logon procedure to the data source.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Logon trigger to prepare the form for the logon procedure, particularly to a non-ORACLE data source.

On Failure

The results of a failure depend on which of the following conditions applies:

frm90000.gif If Form Builder is entering the form for the first time and the trigger fails, the form is exited gracefully, but no other triggers are fired.

frm90000.gif If the trigger fails while Form Builder is attempting to execute the LOGON built-in from within the trigger, Form Builder raises the FORM_TRIGGER_FAILURE exception.

Fires In

LOGON

Review Process Flowcharts


Pre-Logout Trigger Pre-Logout Trigger

All Triggers

Description

Fires once before Form Builder initiates a logout procedure.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Logout trigger to prepare the form for logging out from the data source, particularly a non-ORACLE data source.

If you call certain built-ins from within one of the Logout triggers, the results are undefined. For example, the COPY built-in cannot be called from a Pre-Logout trigger because Pre-Logout fires after the Leave the Form event. Because the form is no longer accessible at this point, the COPY operation is not possible.

On Failure

The results of a failure depend on which of the following conditions applies:

frm90000.gif If Form Builder is exiting the form and the trigger fails, the form is exited gracefully, but no other triggers are fired.

frm90000.gif If the trigger fails while Form Builder is attempting to execute the LOGOUT built-in from within the trigger, Form Builder raises the FORM_TRIGGER_FAILURE exception.

If an exception is raised in a Pre-Logout trigger, Form Builder does not fire other triggers, such as On-Logout and Post-Logout .

Fires In

LOGOUT

Review Process Flowcharts


Pre-Popup-Menu Trigger Pre-Popup-Menu Trigger

All Triggers

Description

This trigger is called when a user causes a pop-up menu to be displayed. (In a Microsoft Windows environment, this occurs when a user presses the right mouse button.) Actions defined for this trigger are performed before the pop-up menu is displayed.

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use this trigger to enable or disable menu items on a pop-up menu before it is displayed.

On Failure

No effect


Pre-Query Trigger Pre-Query Trigger

Examples Related Topics
All Triggers

Description

Fires during Execute Query or Count Query processing, just before Form Builder constructs and issues the SELECT statement to identify rows that match the query criteria.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Query trigger to modify the example record that determines which rows will be identified by the query.

On Failure

The query is canceled. If the operator or the application had placed the form in Enter Query mode, the form remains in Enter Query mode.

Fires In

COUNT_QUERY

EXECUTE_QUERY

Open the Query

Prepare the Query

Review Process Flowcharts


Pre-Query Trigger examples Pre-Query Trigger examples

Example

This example validates or modifies query criteria for a database block query.

BEGIN
/*
** Set the ORDER BY clause for the current block
** being queried, based on a radio group
** called 'Sort_Column' in a control block named
** 'Switches'. The Radio Group has three buttons
** with character values giving the names of
** three different columns in the table this
** block is based on:
**
** SAL
** MGR,ENAME
** ENAME
*/
Set_Block_Property('EMP',ORDER_BY, :Switches.Sort_Column);
/*
** Make sure the user has given one of the two
** Columns which we have indexed in their search
** criteria, otherwise fail the query with a helpful
** message
*/
IF :Employee.Ename IS NULL AND :Employee.Mgr IS NULL THEN
Message('Supply Employee Name and/or Manager Id '||
'for Query.');
RAISE Form_Trigger_Failure;
END IF;

/*
** Change the default where clause to either show "Current
** Employees Only" or "Terminated Employees" based on the
** setting of a check box named 'Show_Term' in a control
** block named 'Switches'.
*/
IF Check box_Checked('Switches.Show_Term') THEN
Set_Block_Property('EMP',DEFAULT_WHERE,'TERM_DATE IS NOT NULL');
ELSE
Set_Block_Property('EMP',DEFAULT_WHERE,'TERM_DATE IS NULL');
END IF;
END;


Pre-Record Trigger Pre-Record Trigger

Examples Restrictions Related Topics
All Triggers

Description

Fires during the Enter the Record process, during navigation to a different record.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Record trigger to keep a running total.

On Failure

Navigation fails and focus remains in the current item.

Fires In

Enter the Record

Review Process Flowcharts


Pre-Record Trigger restrictions Pre-Record Trigger restrictions

A Pre-Record trigger fires only when the form is run with a validation unit of the item or record, as specified by the Validation Unit form property.


Pre-Record Trigger examples Pre-Record Trigger examples

Example

The following trigger prevents the user from entering a new record given some dynamic condition and the status of SYSTEM.RECORD_STATUS evaluating to NEW.

IF (( dynamic-condition)
AND :System.Record_Status = 'NEW') THEN
RAISE Form_Trigger_Failure;
END IF;


Pre-Select Trigger Pre-Select Trigger

Related Topics
All Triggers

Description

Fires during Execute Query and Count Query processing, after Form Builder constructs the SELECT statement to be issued, but before the statement is actually issued. Note that the SELECT statement can be examined in a Pre-Select trigger by reading the value of the system variable SYSTEM.LAST_QUERY .

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Select trigger to prepare a query prior to execution against a non-ORACLE data source.

On Failure

no effect

Fires In

EXECUTE_QUERY

Open the Query

Prepare the Query

Review Process Flowcharts


Pre-Text-Item Trigger Pre-Text-Item Trigger

Restrictions

Description

Fires during the Enter the Item process, during navigation from an item to a text item.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Text-Item trigger to perform the following types of tasks:

frm90000.gif derive a complex default value, based on other items previously entered into the same record.

frm90000.gif record the current value of the text item for future reference, and store that value in a global variable or form parameter.

On Failure

Navigation fails and focus remains in the current item.

Fires In

Enter the Item

Review Process Flowcharts


Pre-Text-Item Trigger restrictions Pre-Text-Item Trigger restrictions

A Pre-Text-Item trigger fires only when the form is run with a validation unit of the item, as specified by the Validation Unit form property.


Pre-Update Trigger Pre-Update Trigger

Examples
All Triggers

Description

Fires during the Post and Commit Transactions process, before a row is updated. It fires once for each record that is marked for update.

Definition Level form or block

Legal Commands

SELECT statements, DML statements (DELETE, INSERT, UPDATE), unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a Pre-Update trigger to audit transactions.

On Failure

Form Builder performs the following steps when the Pre-Update trigger fails:

frm90000.gif sets the error location

frm90000.gif rolls back to the most recent savepoint

Fires In

Post and Commit Transactions

Review Process Flowcharts


Pre-Update Trigger examples Pre-Update Trigger examples

Example

The following example writes a row into an Audit Table showing old discount and new discount for a given customer, including timestamp and username making the change.

DECLARE
old_discount NUMBER;
new_discount NUMBER := :Customer.Discount_Pct;
oper_desc VARCHAR2(80);
CURSOR old_value IS SELECT discount_pct FROM customer
WHERE CustId = :Customer.CustId;
BEGIN
/*
** Fetch the old value of discount percentage from the
** database by CustomerId. We need to do this since the
** value of :Customer.Discount_Pct will be the *new* value
** we're getting ready to commit and we want to record for
** posterity the old and new values. We could use
** SELECT...INTO but choose an explicit cursor for
** efficiency.
*/
OPEN old_value;
FETCH old_value INTO old_discount;
CLOSE old_value;

/*
** If the old and current values are different, then
** we need to write out an audit record
*/
IF old_discount <> new_discount THEN
/*
** Construct a string that shows the operation of
** Changing the old value to the new value. e.g.
**
** 'Changed Discount from 13.5% to 20%'
*/
oper_desc := 'Changed Discount from '||
TO_CHAR(old_discount)||'% to '||
TO_CHAR(new_discount)||'%';

/*
** Insert the audit record with timestamp and user
*/
INSERT INTO cust_audit( custid, operation, username,
timestamp )
VALUES ( :Customer.CustId,
oper_desc,
USER,
SYSDATE );
END IF;
END;


Query-Procedure Trigger Query-Procedure Trigger

All Triggers

Description

Automatically created by Form Builder when the query data source is a stored procedure. This trigger is called when a query operation is necessary. Think of this as an On-Query trigger that is called by the system instead of doing default query operations.

Do not modify this trigger.

Enter Query Mode See Usage Notes

Usage Notes

When constructing a query, any of the items may be used, but the Query Data Source Columns property must be set so that those items can be passed to the query stored procedure. Then, the query stored procedure has to use those values to filter the data. This means that the enter query mode does not happen automatically unless you specify it.

On Failure

No effect


Update-Procedure Trigger Update-Procedure Trigger

All Triggers

Description

Automatically created by Form Builder when the update data source is a stored procedure. This trigger is called when a update operation is necessary. Think of this as an On-Update trigger that is called by the system instead of doing default update operations.

Do not modify this trigger.

Enter Query Mode Not applicable.

On Failure

No effect


User-Named Trigger User-Named Trigger

All Triggers

Description

A user-named trigger is a trigger defined in a form by the developer. User-Named triggers do not automatically fire in response to a Form Builder event, and must be called explicitly from other triggers or user-named subprograms. Each user-named trigger defined at the same definition level must have a unique name.

To execute a user-named trigger, you must call the EXECUTE_TRIGGER built-in procedure, as shown here:

Execute_Trigger('my_user_named_trigger');

Definition Level form, block, or item

Legal Commands

Any commands that are legal in the parent trigger from which the user-named trigger was called.

Enter Query Mode no

Usage Notes

User-named PL/SQL subprograms can be written to perform almost any task for which one might use a user-named trigger.

As with all triggers, the scope of a user-named trigger is the definition level and below. When more than one user-named trigger has the same name, the trigger defined at the lowest level has precedence.

It is most practical to define user-named triggers at the form level.

Create a user-named trigger to execute user-named subprograms defined in a form document from menu PL/SQL commands and user-named subprograms. (User-named subprograms defined in a form cannot be called directly from menu PL/SQL, which is defined in a different document.) In the menu PL/SQL, call the EXECUTE_TRIGGER built-in to execute a user-named trigger, which in turn calls the user-named subprogram defined in the current form.

On Failure

Sets the FORM_FAILURE built-in to TRUE. Because the user-named trigger is always called by the EXECUTE_TRIGGER built-in, you can test the outcome of a user-named trigger the same way you test the outcome of a built-in subprogram; that is, by testing for errors with the built-in functions FORM_FAILURE, FORM_SUCCESS, FORM_FATAL .


When-Button-Pressed Trigger When-Button-Pressed Trigger

Examples
All Triggers

Description

Fires when an operator selects a button, by clicking with a mouse, or using the keyboard.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Button-Pressed trigger to perform navigation, to calculate text item values, or for other item, block, or form level functionality.

On Failure

no effect


When-Button-Pressed Trigger examples When-Button-Pressed Trigger examples

Example

This example executes a COMMIT_FORM if there are changes in the form.

BEGIN
IF :System.Form_Status = 'CHANGED' THEN
Commit_Form;
/*
** If the Form_Status is not back to 'QUERY'
** following a commit, then the commit was
** not successful.
*/
IF :System.Form_Status <> 'QUERY' THEN
Message('Unable to commit order to database...');
RAISE Form_Trigger_Failure;
END IF;
END IF;
END;


When-Checkbox-Changed Trigger When-Checkbox-Changed Trigger

All Triggers

Description

Fires when an operator changes the state of a check box, either by clicking with the mouse, or using the keyboard.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Checkbox-Changed trigger to initiate a task dependent upon the state of a check box.

When an operator clicks in a check box, the internal value of that item does not change until navigation is completed successfully. Thus, the When-Checkbox-Changed trigger is the first trigger to register the changed value of a check box item. So for all navigation triggers that fire before the When-Checkbox-Changed trigger, the value of the check box item remains as it was before the operator navigated to it.

On Failure

no effect


When-Clear-Block Trigger When-Clear-Block Trigger

Related Topics
All Triggers

Description

Fires just before Form Builder clears the data from the current block.

Note that the When-Clear-Block trigger does not fire when Form Builder clears the current block during the CLEAR_FORM event.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode yes

Usage Notes

frm90000.gif
Use a When-Clear-Block trigger to perform an action every time Form Builder flushes the current block. For example, you might want to perform an automatic commit whenever this condition occurs.

frm90000.gif In a When-Clear-Block trigger, the value of SYSTEM.RECORD_STATUS is unreliable because there is no current record. An alternative is to use GET_RECORD_PROPERTY to obtain the record status. Because GET_RECORD_PROPERTY requires reference to a specific record, its value is always accurate.

On Failure

no effect on the clearing of the block

Fires In

CLEAR_BLOCK

COUNT_QUERY

ENTER_QUERY

Open the Query

Review Process Flowcharts


When-Create-Record Trigger When-Create-Record Trigger

Examples Related Topics
All Triggers

Description

Fires when Form Builder creates a new record. For example, when the operator presses the [Insert] key, or navigates to the last record in a set while scrolling down, Form Builder fires this trigger.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a When-Create-Record trigger to perform an action every time Form Builder attempts to create a new record. This trigger also is useful for setting complex, calculated, or data-driven default values that must be specified at runtime, rather than at design-time.

On Failure

Prevents the new record from being created. Returns to the previous location, if possible.

Fires In

CREATE_RECORD

Review Process Flowcharts


When-Create-Record Trigger examples When-Create-Record Trigger examples

Example

This example assigns data-driven or calculated default values without marking the record as changed.

DECLARE
CURSOR ship_dflt IS SELECT val
FROM cust_pref
WHERE Custid = :Customer.Custid
AND pref = 'SHIP';
BEGIN
/*
** Default Invoice Due Date based on Customer's
** Net Days Allowed value from the Customer block.
*/
:Invoice.Due_Date := SYSDATE + :Customer.Net_Days_Allowed;
/*
** Default the shipping method based on this customers
** preference, stored in a preference table. We could
** use SELECT...INTO, but explicit cursor is more
** efficient.
*/
OPEN ship_dflt;
FETCH ship_dflt INTO :Invoice.Ship_Method;
CLOSE ship_dflt;
END;


When-Custom-Item-Event Trigger When-Custom-Item-Event Trigger

Examples Related Topics
All Triggers

Description

Fires whenever a JavaBean or VBX (on 16-bit Microsoft Windows 3.x) or ActiveX (on 32-bit Windows) custom control in the form causes the occurrence of an event.

Definition Level:

form, block, item

Legal Commands:

unrestricted built-ins, restricted built-ins

Enter Query Mode:

yes

Usage Notes

Use a When-Custom-Item-Event trigger to respond to a selection or change of value for a custom control. The system variable SYSTEM.CUSTOM_ITEM_EVENT stores the name of the event that occurred, and the system variable SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS stores a parameter name that contains the supplementary arguments for an event that is fired by a custom control.

Control event names are case sensitive.

On Failure:

no effect


When-Custom-Item-Event Trigger examples When-Custom-Item-Event Trigger examples

Example

This is an example of a procedure that can be called when Form Builder fires the When-Custom-Item-Event Trigger.

DECLARE
TabEvent varchar2(80);
TabNumber Number;
BEGIN
TabEvent := :system.custom_item_event;
/*
** After detecting a Click event, identify the
** tab selected, and use the user-defined Goto_Tab_Page
** procedure to navigate to the selected page.
*/
IF (UPPER(TabEvent) = 'CLICK') THEN
TabNumber := VBX.Get_Property('TABCONTROL','CurrTab');
Goto_Tab_Page(TabNumber);
END IF;
END;


When-Database-Record Trigger When-Database-Record Trigger

All Triggers

Description

Fires when Form Builder first marks a record as an insert or an update. That is, the trigger fires as soon as Form Builder determines through validation that the record should be processed by the next post or commit as an insert or update. This generally occurs only when the operator modifies the first item in a record, and after the operator attempts to navigate out of the item.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a When-Database-Record trigger to perform an action every time a record is first marked as an insert or an update.

On Failure

no effect


When-Form-Navigate Trigger When-Form-Navigate Trigger

Examples
All Triggers

Description

Fires when navigation between forms takes place, such as when the user changes the focus to another loaded form.

Definition Level form

Legal Commands:

unrestricted built-ins, restricted built-ins

Enter Query Mode:

no

Usage Notes

Use a When-Form-Navigate trigger to perform actions when any cross form navigation takes place without relying on window activate and window deactivate events.

On Failure

no effect


When-Form-Navigate Trigger examples When-Form-Navigate Trigger examples

Example

This is an example of a procedure that can be called when Form Builder fires the When-Form-Navigate Trigger.

DECLARE
win_id WINDOW := FIND_WINDOW('WINDOW12');
BEGIN
if (GET_WINDOW_PROPERTY(win_id,WINDOW_STATE) = 'MAXIMIZE' THEN
SET_WINDOW_PROPERTY(win_id,WINDOW_STATE,MINIMIZE);
else
SET_WINDOW_PROPERTY(win_id,WINDOW_STATE,MAXIMIZE);
end if;
END;


When-Image-Activated Trigger When-Image-Activated Trigger

All Triggers

Description

Fires when an operator uses the mouse to:

frm90000.gif single-click on an image item

frm90000.gif double-click on an image item

Note that When-Image-Pressed also fires on a double-click.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

On Failure

no effect


When-Image-Pressed Trigger When-Image-Pressed Trigger

All Triggers

Description

Fires when an operator uses the mouse to:

frm90000.gif single-click on an image item

frm90000.gif double-click on an image item

Note that When-Image-Activated also fires on a double-click.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Image-Pressed trigger to perform an action when an operator clicks or double-clicks on an image item.

On Failure

no effect


When-List-Activated Trigger When-List-Activated Trigger

Related Topics
All Triggers

Description

Fires when an operator double-clicks on an element in a list item that is displayed as a T-list.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

A When-List-Activated trigger fires only for T-list style list items, not for drop-down lists or combo box style list items. The display style of a list item is determined by the List Style property.

On Failure

no effect


When-List-Changed Trigger When-List-Changed Trigger

Related Topics
All Triggers

Description

Fires when an end user selects a different element in a list item or de-selects the currently selected element. In addition, if a When-List-Changed trigger is attached to a combo box style list item, it fires each time the end user enters or modifies entered text.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-List-Changed trigger to initiate an action when the value of the list is changed directly by the end user. The When-List-Changed trigger is not fired if the value of the list is changed programmatically such as by using the DUPLICATE_ITEM built-in, or if the end user causes a procedure to be invoked which changes the value. For example, the When-List-Changed trigger will not fire if an end user duplicates the item using a key mapped to the DUPLICATE_ITEM built-in.

On Failure

no effect


When-Mouse-Click Trigger When-Mouse-Click Trigger

All Triggers

Description

Fires after the operator clicks the mouse if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse is clicked within any canvas or item in the form

frm90000.gif if attached to a block, when the mouse is clicked within any item in the block

frm90000.gif if attached to an item, when the mouse is clicked within the item

Three events must occur before a When-Mouse-Click trigger will fire:

frm90000.gif Mouse down

frm90000.gif Mouse up

frm90000.gif Mouse click

Any trigger that is associated with these events will fire before the When-Mouse-Click trigger fires.

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use the When-Mouse-Click trigger to perform an action every time the operator clicks the mouse within an item and/or canvas.

On Failure

no effect


When-Mouse-DoubleClick Trigger When-Mouse-DoubleClick Trigger

Examples
All Triggers

Description

Fires after the operator double-clicks the mouse if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse is double-clicked within any canvas or item in the form

frm90000.gif if attached to a block, when the mouse is double-clicked within any item in the block

frm90000.gif if attached to an item, when the mouse is double-clicked within the item

Six events must occur before a When-Mouse-DoubleClick trigger will fire:

frm90000.gif Mouse down

frm90000.gif Mouse up

frm90000.gif Mouse click

frm90000.gif Mouse down

frm90000.gif Mouse up

frm90000.gif Mouse double-click

Any trigger that is associated with these events will fire before the When-Mouse-DoubleClick trigger fires.

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Mouse-DoubleClick trigger to perform an action every time the operator double-clicks the mouse within an item and/or canvas.

On Failure

no effect


When-Mouse-DoubleClick Trigger examples When-Mouse-DoubleClick Trigger examples

Example

Assume that an application requires Behavior A when the operator clicks the mouse and Behavior B when the operator double-clicks the mouse. For example, if the operator clicks the mouse, a product information window must appear. If the operator double-clicks the mouse, an online help window must appear.

Three triggers are used in this example, a When-Mouse-Click trigger, a When-Timer-Expired trigger, and a When-Mouse-DoubleClick trigger.

/*
** Trigger: When-Mouse-Click
** Example: When the operator clicks the mouse, create a timer
** that will expire within .5 seconds.
*/

DECLARE
timer_id TIMER;
timer_duration NUMBER(5) := 500;
BEGIN
timer_id := Create_Timer('doubleclick_timer', timer_duration,
NO_REPEAT);
END;

/*
** Trigger: When-Timer-Expired
** Example: When the timer expires display the online help
** window if the operator has double-clicked the mouse
** within .5 seconds, otherwise display the product
** information window.
*/
BEGIN
IF :Global.double_click_flag = 'TRUE' THEN
Show_Window('online_help');
:Global.double_click := 'FALSE';
ELSE
Show_Window('product_information');
END IF;
END;

/*
** Trigger: When-Mouse-DoubleClick
** Example: If the operator double-clicks the mouse, set a
** flag that indicates that a double-click event
** occurred.
*/
BEGIN
:Global.double_click_flag := 'TRUE';
END;


When-Mouse-Down Trigger When-Mouse-Down Trigger

Restrictions
All Triggers

Description

Fires after the operator presses down the mouse button if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse is pressed down within any canvas or item in the form

frm90000.gif if attached to a block, when the mouse is pressed down within any item in the block

frm90000.gif if attached to an item, when the mouse is pressed within the item

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Mouse-Down trigger to perform an action every time the operator presses down the mouse button within an item and/or canvas.

Note: The mouse down event is always followed by a mouse up event.

On Failure

no effect


When-Mouse-Down Trigger restrictions When-Mouse-Down Trigger restrictions

Depending on the window manager, navigational code within a When-Mouse-Down trigger may fail. For example on Microsoft Windows, if the operator clicks the mouse button within a field (Item_One), a When-Mouse-Down trigger that calls GO_ITEM ('item_two') will fail because Windows will return focus to Item_One, not Item_Two since the When-Mouse-Up event occurred within Item_Two.


When-Mouse-Enter Trigger When-Mouse-Enter Trigger

All Triggers

Description

Fires when the mouse enters an item or canvas if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse enters any canvas or item in the form

frm90000.gif if attached to a block, when the mouse enters any item in the block

frm90000.gif if attached to an item, when the mouse enters the item

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Mouse-Enter trigger to perform an action every time the mouse enters an item or canvas.

Do not use the When-Mouse-Enter trigger on a canvas that is larger than the window. Iconic buttons and items on the canvas below the initial window cannot be selected. The user is able to scroll the canvas to see the items. However, as soon as the mouse enters that area, the trigger fires and returns focus to the previous target, so the user is never able to click on those items.

Changing a tooltip's property in a When-Mouse-Enter trigger cancels the tooltip before it is ever shown.

Be careful when calling a modal window from a When-Mouse-Enter trigger. Doing so may cause the modal window to appear unnecessarily.

For example, assume that your When-Mouse-Enter trigger causes Alert_One to appear whenever the mouse enters Canvas_One. Assume also that your application contains two canvases, Canvas_One and Canvas_Two. Canvas_One and Canvas_Two do not overlap each other, but appear side by side on the screen. Further, assume that Alert_One displays within Canvas_Two's border.

Finally, assume that the mouse has entered Canvas_One causing the When-Mouse-Enter trigger to fire which in turn causes Alert_One to appear.

When the operator dismisses the message box, Alert_One will appear again unnecessarily if the operator subsequently enters Canvas_One with the mouse. In addition, when the operator moves the mouse out of Canvas_Two, any When-Mouse-Leave triggers associated with this event will fire. This may not be the desired behavior.

On Failure

no effect


When-Mouse-Leave Trigger When-Mouse-Leave Trigger

All Triggers

Description

Fires after the mouse leaves an item or canvas if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse leaves any canvas or item in the form

frm90000.gif if attached to a block, when the mouse leaves any item in the block

frm90000.gif if attached to an item, when the mouse leaves the item

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Mouse-Leave trigger to perform an action every time the mouse leaves an item and/or canvas.

On Failure

no effect


When-Mouse-Move Trigger When-Mouse-Move Trigger

All Triggers

Description

Fires each time the mouse moves if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse moves within any canvas or item in the form

frm90000.gif if attached to a block, when the mouse moves within any item in the block

frm90000.gif if attached to an item, when the mouse moves within the item

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use the When-Mouse-Move trigger to perform an action every time the operator moves the mouse.

The When-Mouse-Move trigger may have performance implications because of the number of times this trigger can potentially fire.

On Failure

no effect


When-Mouse-Up Trigger When-Mouse-Up Trigger

All Triggers

Description

Fires each time the operator presses down and releases the mouse button if one of the following events occurs:

frm90000.gif if attached to the form, when the mouse up event is received within any canvas or item in a form

frm90000.gif if attached to a block, when the mouse up event is received within any item in a block

frm90000.gif if attached to an item, when the mouse up event is received within an item

Two events must occur before a When-Mouse-Up trigger will fire:

frm90000.gif Mouse down

frm90000.gif Mouse up

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode yes

Usage Notes

Use the When-Mouse-Up trigger to perform an action every time the operator presses and releases the mouse.

The mouse up event is always associated with the item that received the mouse down event. For example, assume that there is a When-Mouse-Up trigger attached to Item_One. If the operator presses down the mouse on Item_One, but then releases the mouse on Item_Two, the mouse up trigger will fire for Item_One, rather than for Item_Two.

On Failure

no effect


When-New-Block-Instance Trigger When-New-Block-Instance Trigger

Related Topics
All Triggers

Description

Fires when the input focus moves to an item in a different block. Specifically, it fires after navigation to an item, when Form Builder is ready to accept input in a block that is different than the block that previously had the input focus.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode no

Usage Notes

Use a When-New-Block-Instance trigger to perform an action every time Form Builder instantiates a new block.

On Failure

no effect

Fires In

Return for Input

Review Process Flowcharts


When-New-Form-Instance Trigger When-New-Form-Instance Trigger

Examples Restrictions Related Topics
All Triggers

Description

At form start-up, Form Builder navigates to the first navigable item in the first navigable block. A When-New-Form-Instance trigger fires after the successful completion of any navigational triggers that fire during the initial navigation sequence.

This trigger does not fire when control returns to a calling form from a called form.

In a multiple-form application, this trigger does not fire when focus changes from one form to another.

Definition Level form

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins

Enter Query Mode no

On Failure

no effect

Fires In

Run the Form

Review Process Flowcharts


When-New-Form-Instance Trigger restrictions When-New-Form-Instance Trigger restrictions

  1. When you call FORMS_OLE.GET_INTERFACE_POINTER from the When-New-Form-Instance trigger, an exception (ORA-305500) is raised unless you initialize the OLE item or the ActiveX control with the SYNCHRONIZE built-in.

  2. When a new form is called, it will appear in the default x-y position on the screen. If this is not the desired position, you can change the x-y coordinates. However, they cannot be changed in this When-New-Form-Instance trigger. (This trigger fires too late in the sequence.) To change the coordinates, use the Pre-Form trigger.


    When-New-Form-Instance Trigger examples
When-New-Form-Instance Trigger examples

Example

This example calls routine to display dynamic images, starts a timer to refresh the on-screen clock, and queries the first block.

BEGIN
Populate_Dynamic_Boilerplate;
Start_OnScreen_Clock_Timer;
Go_Block('Primary_Ord_Info');

/*
** Query the block without showing
** the working message.
*/
:System.Suppress_Working := 'TRUE';
Execute_Query;
:System.Suppress_Working := 'FALSE';
END;


When-New-Item-Instance Trigger When-New-Item-Instance Trigger

Restrictions Related Topics
All Triggers

Description

Fires when the input focus moves to an item. Specifically, it fires after navigation to an item, when Form Builder is ready to accept input in an item that is different than the item that previously had input focus.

Definition Level form, block, or item

Legal Commands

SELECT statements, restricted built-ins, unrestricted built-ins.

Enter Query Mode yes

Usage Notes

Use a When-New-Item-Instance trigger to perform an action whenever an item gets input focus. The When-New-Item-Instance trigger is especially useful for calling restricted (navigational) built-ins.

On Failure

no effect

Fires In

Return for Input

Review Process Flowcharts


When-New-Item-Instance Trigger restrictions When-New-Item-Instance Trigger restrictions

The conditions for firing this trigger are not met under the following circumstances:

frm90000.gif Form Builder navigates through an item, without stopping to accept input

frm90000.gif the input focus moves to a field in an alert window, or to any part of an Form Builder menu


When-New-Record-Instance Trigger When-New-Record-Instance Trigger

Related Topics
All Triggers

Description

Fires when the input focus moves to an item in a record that is different than the record that previously had input focus. Specifically, it fires after navigation to an item in a record, when Form Builder is ready to accept input in a record that is different than the record that previously had input focus.

Fires whenever Form Builder instantiates a new record.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-New-Record-Instance trigger to perform an action every time Form Builder instantiates a new record. For example, when an operator presses [Down] to scroll through a set of records, Form Builder fires this trigger each time the input focus moves to the next record, in other words, each time Form Builder instantiates a new record in the block.

On Failure

no effect

Fires In

Return for Input

Review Process Flowcharts


When-Radio-Changed Trigger When-Radio-Changed Trigger

All Triggers

Description

Fires when an operator selects a different radio button in a radio group, or de-selects the currently selected radio button, either by clicking with the mouse, or using the keyboard.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use a When-Radio-Changed trigger to perform an action depending on the state of a radio group. (De-selecting a radio button in a radio group sets the radio group value to NULL; operators use this technique in Enter Query mode to exclude a radio group from a query.)

When an operator clicks an item in a radio group, the internal value of that item does not change until navigation is completed successfully. Thus, the When-Radio-Changed trigger is the first trigger to register the changed value of a radio group. For all navigation triggers that fire before the When-Radio-Changed trigger, the value of the radio group remains as it was before the operator navigated to it.

On Failure

no effect


When-Remove-Record Trigger When-Remove-Record Trigger

All Triggers

Description

Fires whenever the operator or the application clears or deletes a record.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a When-Remove-Record trigger to perform an action every time Form Builder clears or deletes a record.

On Failure

Form Builder navigates to the block level with or without validation depending on the current operation, and puts the cursor at the target block.

Fires In

CLEAR_RECORD

DELETE_RECORD

Review Process Flowcharts


When-Tab-Page-Changed When-Tab-Page-Changed

Examples Related Topics
All Triggers

Description

Fires whenever there is explicit item or mouse navigation from one tab page to another in a tab canvas.

Definition Level form

Legal Commands

unrestricted built-ins, restricted built-ins

Enter Query Mode no

Usage Notes

frm90000.gif
Use a When-Tab-Page-Changed trigger to perform actions when any tab page is changed during item or mouse navigation.

frm90000.gif When-Tab-Page-Changed fires only when tab page navigation is explicit; it does not respond to implicit navigation. For example, the trigger will fire when the mouse or keyboard is used to navigate between tab pages, but the trigger will not fire if an end user presses [Next Item] (Tab) to navigate from one field to another field in the same block, but on different tab pages.

frm90000.gif When-Tab-Page-Changed does not fire when the tab page is changed programmatically.

On Failure

no effect


When-Tab-Page-Changed examples When-Tab-Page-Changed examples

Example

/* Use a When-Tab-Page-Changed trigger to dynamically

  • change a tab page's label from lower- to upper-case
    ** (to indicate to end users if they already have
    ** navigated to the tab page):
    */
    DECLARE
    tp_nm VARCHAR2(30);
    tp_id TAB_PAGE;
    tp_lb VARCHAR2(30);

    BEGIN
    tp_nm := GET_CANVAS_PROPERTY('emp_cvs', topmost_tab_page);
    tp_id := FIND_TAB_PAGE(tp_nm);
    tp_lb := GET_TAB_PAGE_PROPERTY(tp_id, label);

    IF tp_lb LIKE 'Sa%' THEN
    SET_TAB_PAGE_PROPERTY(tp_id, label, 'SALARY');
    ELSIF tp_lb LIKE 'Va%' THEN
    SET_TAB_PAGE_PROPERTY(tp_id, label, 'VACATION');
    ELSE null;
    END IF;
    END;


    When-Timer-Expired Trigger
When-Timer-Expired Trigger

Examples Restrictions Related Topics
All Triggers

Description

Fires when a timer expires.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Timers are created programmatically by calling the CREATE_TIMER built-in procedure.

frm90000.gif The When-Timer-Expired trigger can not fire during trigger, navigation, or transaction processing.

frm90000.gif Use a When-Timer-Expired trigger to initiate an event, update item values, or perform any task that should occur after a specified interval.

frm90000.gif You can call GET_APPLICATION_PROPERTY(TIMER_NAME) in a When-Timer-Expired trigger to determine the name of the most recently expired timer.

On Failure

no effect

Fires In

Process Expired Timer

Review Process Flowcharts


When-Timer-Expired Trigger restrictions When-Timer-Expired Trigger restrictions

A When-Timer-Expired trigger will not fire when the user is currently navigating a menu.


When-Timer-Expired Trigger examples When-Timer-Expired Trigger examples

Example

The following example displays a message box each time a repeating timer expires. The following example is from a telemarketing application, in which sales calls are timed, and message boxes are displayed to prompt the salesperson through each stage of the call. The message box is displayed each time a repeating timer expires.

DECLARE
timer_id TIMER;
alert_id ALERT;
call_status NUMBER;
msg_1 VARCHAR2(80) := 'Wrap up the first phase of your
presentation';
msg_2 VARCHAR2(80) := 'Move into your close.';
msg_3 VARCHAR2(80) := 'Ask for the order or
repeat the close.'
two_minutes NUMBER(6) := (120 * 1000);
one_and_half NUMBER(5) := (90 * 1000);
BEGIN
:GLOBAL.timer_count := 1
BEGIN
timer_id := FIND_TIMER('tele_timer');
alert_id := FIND_ALERT('tele_alert');
IF :GLOBAL.timer_count = 1 THEN
Set_Alert_Property(alert_id, ALERT_MESSAGE_TEXT, msg_1);
call_status := Show_Alert(alert_id);
IF call_status = ALERT_BUTTON1 THEN
Delete_Timer(timer_id);
Next_Record;
ELSIF
call_status = ALERT_BUTTON2 THEN
:GLOBAL.timer_count := 0;
ELSE
Set_Timer(timer_id, two_minutes, NO_CHANGE);
END IF;
ELSIF :GLOBAL.timer_count = 2 THEN
Change_Alert_Message(alert_id, msg_2);
call_status := Show_Alert(alert_id);
IF call_status = ALERT_BUTTON1 THEN
Delete_Timer(timer_id);
Next_Record;
ELSIF
call_status = ALERT_BUTTON2 THEN
:GLOBAL.timer_count := 0;
ELSE
Set_Timer(timer_id, one_and_half, NO_CHANGE);
END IF;
ELSE
Change_Alert_Message(alert_id, msg_3);
call_status := Show_Alert(alert_id);
IF call_status = ALERT_BUTTON1 THEN
Delete_Timer(timer_id);
Next_Record;
ELSIF
call_status = ALERT_BUTTON2 THEN
:GLOBAL.timer_count := 0;
ELSE
Set_Timer(timer_id, NO_CHANGE, NO_REPEAT);
END IF;
END IF;
:GLOBAL.timer_count = 2;
END;
END;


When-Tree-Node-Activated Trigger When-Tree-Node-Activated Trigger

All Triggers

Description

Fires when an operator double-clicks a node or presses Enter when a node is selected.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

frm90000.gif
SYSTEM.TRIGGER_NODE is the node the user clicked on. SYSTEM.TRIGGER_NODE returns a value of type NODE.

frm90000.gif No programmatic action will cause the When-Tree-Node-Activated trigger to fire. Only end-user action will generate an event.

On Failure

no effect


When-Tree-Node-Expanded Trigger When-Tree-Node-Expanded Trigger

All Triggers

Description

Fires when a node is expanded or collapsed.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

frm90000.gif
SYSTEM.TRIGGER_NODE is the node the user clicked on. SYSTEM.TRIGGER_NODE returns a value of type NODE.

frm90000.gif No programmatic action will cause the When-Tree-Node-Espanded trigger to fire. Only end-user action will generate an event.

On Failure

no effect


When-Tree-Node-Selected Trigger When-Tree-Node-Selected Trigger

All Triggers

Description

Fires when a node is selected or deselected.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

frm90000.gif
SYSTEM.TRIGGER_NODE is the node the user clicked on. SYSTEM.TRIGGER_NODE returns a value of type NODE.

frm90000.gif No programmatic action will cause the When-Tree-Node-Selected trigger to fire. Only end-user action will generate an event.

On Failure

no effect


When-Validate-Item Trigger When-Validate-Item Trigger

Examples Related Topics
All Triggers

Description

Fires during the Validate the Item process. Specifically, it fires as the last part of item validation for items with the New or Changed validation status.

Definition Level form, block, or item

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

frm90000.gif
Use a When-Validate-Item trigger to supplement Form Builder default item validation processing.

frm90000.gif It is possible to write a When-Validate-Item trigger that changes the value of an item that Form Builder is validating. If validation succeeds, Form Builder marks the changed item as Valid and does not re-validate it. While this behavior is necessary to avoid validation loops, it does make it possible for your application to commit an invalid value to the database.

frm90000.gif The Defer_Required_Enforcement property postpones enforcement of the Required property from item validation to record validation. When an item has the Required property set to Yes, by default Form Builder will not allow navigation out of the item until a valid value is entered. Setting the Defer_Required_Enforcement property to Yes allows the operator to move freely among the items in the record.

Note: When Defer_Required_Enforcement is On, all other item validation takes place as usual: only checking the Required property is postponed until the operator leaves the record.

On Failure

If fired as part of validation initiated by navigation, navigation fails, and the focus remains on the original item.

Fires In

Validate the Item

Review Process Flowcharts


When-Validate-Item Trigger examples When-Validate-Item Trigger examples

Example

The following example finds the commission plan in the COMMPLAN table, based on the current value of the commcode item in the EMPLOYEE block in the form, to verify that the code is valid. If the code in the COMMPLAN table is located, the description of the COMMPLAN is obtained and deposited in the non-database Description item. Otherwise, an error is raised.

  • Method 1: Using a SELECT...INTO statement, the trigger
    ** looks more readable but can be less efficient
    ** than Method 2 because for ANSI Standard
    ** compliance, the SELECT...INTO statement must
    ** return an error if more than one row is
    ** retrieved that matches the criteria. This
    ** implies PL/SQL may attempt to fetch data twice
    ** from the table in question to insure that there
    ** aren't two matching rows.
    */
    BEGIN
    SELECT description
    INTO :Employee.Commplan_Desc
    FROM commplan
    WHERE commcode = :Employee.Commcode;
    EXCEPTION
    WHEN No.Data_Found THEN
    Message('Invalid Commission Plan, Use <List> for help');
    RAISE Form_Trigger_Failure;
    WHEN Too_Many_Rows THEN
    Message('Error. Duplicate entries in COMMPLAN table!');
    RAISE Form_Trigger_Failure;
    END;

    /*
    ** Method 2: Using an Explicit Cursor looks a bit more
    ** daunting but is actually quite simple. The
    ** SELECT statement is declared as a named cursor
    ** in the DECLARE section and then is OPENed,
    ** FETCHed, and CLOSEd in the code explicitly
    ** (hence the name). Here we guarantee that only a
    ** single FETCH will be performed against the
    ** database.
    */
    DECLARE
    noneFound BOOLEAN;
    CURSOR cp IS SELECT description
    FROM commplan
    WHERE commcode = :Employee.Commcode;
    BEGIN
    OPEN cp;
    FETCH cp INTO :Employee.Commplan_Desc;
    noneFound := cp%NOTFOUND;
    CLOSE cp;
    IF noneFound THEN
    Message('Invalid Commission Plan, Use <List> for help');
    RAISE Form_Trigger_Failure;
    END IF;
    END;


    When-Validate-Record Trigger
When-Validate-Record Trigger

Examples Related Topics
All Triggers

Description

Fires during the Validate the Record process. Specifically, it fires as the last part of record validation for records with the New or Changed validation status.

Definition Level form or block

Legal Commands

SELECT statements, unrestricted built-ins

Enter Query Mode no

Usage Notes

Use a When-Validate-Record trigger to supplement Form Builder default record validation processing.

Note that it is possible to write a When-Validate-Record trigger that changes the value of an item in the record that Form Builder is validating. If validation succeeds, Form Builder marks the record and all of the fields as Valid and does not re-validate. While this behavior is necessary to avoid validation loops, it does make it possible for your application to commit an invalid value to the database.

On Failure

If fired as part of validation initiated by navigation, navigation fails, and the focus remains on the original item.

Fires In

Validate the Record

Review Process Flowcharts


When-Validate-Record Trigger examples When-Validate-Record Trigger examples

Example

The following example verifies that Start_Date is less than End_Date. Since these two text items have values that are related, it's more convenient to check the combination of them once at the record level, rather than check each item separately. This code presumes both date items are mandatory and that neither will be NULL.

/* Method 1: Hardcode the item names into the trigger.
** Structured this way, the chance this code will
** be reusable in other forms we write is pretty
** low because of dependency on block and item
** names.
*/
BEGIN
IF :Experiment.Start_Date > :Experiment.End_Date THEN
Message('Your date range ends before it starts!');
RAISE Form_Trigger_Failure;
END IF;
END;

/* Method 2: Call a generic procedure to check the date
** range. This way our date check can be used in
** any validation trigger where we want to check
** that a starting date in a range comes before
** the ending date. Another bonus is that with the
** error message in one standard place, i.e. the
** procedure, the user will always get a
** consistent failure message, regardless of the
** form they're currently in.
*/
BEGIN
Check_Date_Range(:Experiment.Start_Date,:Experiment.End_Date);
END;

/*
** The procedure looks like this
*/
PROCEDURE Check_Date_Range( d1 DATE, d2 DATE ) IS
BEGIN
IF d1 > d2 THEN
Message('Your date range ends before it starts!');
RAISE Form_Trigger_Failure;
END IF;
END;


When-Window-Activated Trigger When-Window-Activated Trigger

Related Topics
All Triggers

Description

Fires when a window is made the active window. This occurs at form startup and whenever a different window is given focus. Note that on some window managers, a window can be activated by clicking on its title bar. This operation is independent of navigation to an item in the window. Thus, navigating to an item in a different window always activates that window, but window activation can also occur independently of navigation.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use this trigger to perform the following types of tasks:

frm90000.gif Capture initial settings of window properties, by way of the GET_WINDOW_PROPERTY built-in.

frm90000.gif Enforce navigation to a particular item whenever a window is activated.

frm90000.gif Keep track of the most recently fired window trigger by assigning the value from SYSTEM.EVENT_WINDOW to a variable or global variable.

On Failure

no effect


When-Window-Closed Trigger When-Window-Closed Trigger

Examples Related Topics
All Triggers

Description

Fires when an operator closes a window using a window-manager specific Close command.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use this trigger to programmatically close a window when the operator issues the window-manager Close command.

You can hide the window that contains the current item.

On Failure

no effect


When-Window-Closed Trigger examples When-Window-Closed Trigger examples

Example

The following example of a call to SET_WINDOW_PROPERTY from this trigger closes a window whenever the operator closes it by way of the window manager operation:

Set_Window_Property('window_name', VISIBLE, PROPERTY_OFF);


When-Window-Deactivated Trigger When-Window-Deactivated Trigger

Related Topics
All Triggers

Description

Fires when an operator deactivates a window by setting the input focus to another window within the same form.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use this trigger to audit the state of a window whenever the operator deactivates the window by setting the input focus in another window.

Note that if this form opens another form, this deactivate trigger does not immediately fire. Instead, it will fire later when control returns to this form. (Assuming this window also has an activate trigger, then when control returns to this form, first the deactivate trigger fires followed immediately by the activate trigger.)

On Failure

no effect


When-Window-Resized Trigger When-Window-Resized Trigger

Related Topics
All Triggers

Description

Fires when a window is resized, either by the operator or programmatically through a call to RESIZE_WINDOW or SET_WINDOW_PROPERTY. (Even if the window is not currently displayed, resizing the window programmatically fires the When-Window-Resized trigger.) This trigger also fires at form startup, when the root window is first drawn. It does not fire when a window is iconified.

Definition Level form

Legal Commands

SELECT statements, unrestricted built-ins, restricted built-ins

Enter Query Mode yes

Usage Notes

Use this trigger to perform any one of the following types of tasks:

frm90000.gif Capture the changed window properties, such as width, height, x coordinate, or y coordinate.

frm90000.gif Audit the actions of an operator.

frm90000.gif Set the input focus in an item on the target window.

frm90000.gif Maintain certain visual standards by resetting window size if the window was improperly resized.

On Failure

no effect



About error messages About error messages

frm90000.gif
message prefix and number

frm90000.gif description of error

frm90000.gif possible cause(s) of the error

frm90000.gif action(s) you might take to resolve the error

When you encounter an error message, first check the message prefix to determine which component generated the message. Then look at the message number and description. If you need more information, consult the component's online help system for a full description of the error message (including cause and action).

Error Message Prefixes

Each component has a unique prefix for its error messages. The following list shows the error message prefixes for Forms Developer:

Prefix Component

FRM Form Builder

OG Graphics Builder

PDE Procedure Builder

In addition to Forms Developer error messages, you may encounter messages from other products. The following list shows other error message prefixes you may encounter and sources of information for researching the error:

Prefix Source Help

ORA Oracle Server Oracle Server Messages and Codes Manual

PLS PL/SQL Oracle Server Messages and Codes Manual

NET SQL*Net Oracle Network Products Messages Manual

The Oracle Server Messages and Codes Manual contains error message prefixes and descriptions for all database utilities, such as SQL*DBA, SQL*Loader, SQL*Module, Export, Import, and the Oracle Precompilers.

System-specific error messages are documented in you operating system documentation.


About embedded variables in messages About embedded variables in messages

To help you find and fix errors, Forms Developer embeds object names, numbers, and character strings in some error messages. In online help, these embedded variables are represented by terms placed in angle brackets (< >).

For example, the error message:

PDE-CCM002: LIB1 is not an open library.

would appear in online help as:

PDE-CCM002: <library name> is not an open library.



Working with Forms Runtime messages Working with Forms Runtime messages

Related Topics

To control the messages that end users see when they use a Form Builder application, you can:

frm90000.gif use the SYSTEM.MESSAGE_LEVEL system variable to suppress specific "severity levels" of messages

frm90000.gif use On-Error and On-Message triggers to replace the standard processing of messages

frm90000.gif use the SYSTEM.SUPPRESS_WORKING system variable to prevent the update of an end user's screen (by suppressing the "Working..." message)

Message Severity Levels

Forms Runtime messages are ranked by severity. Use the SYSTEM.MESSAGE_LEVEL system variable to can control the minimum severity level that displays to end users.

There are six levels of message severity that you can affect, listed here in increasing order of severity.

Level
Message Description
0
All types of messages from the other levels of severity.
5
Reaffirms an obvious condition.
10
Indicates that the end user has made a procedural mistake.
15
Declares that the end user is attempting to perform a function for which the form is not designed.
20
Indicates a condition where the end user cannot continue an intended action due to a problem with a trigger or another outstanding condition.
25
Indicates a condition that could result in the form performing incorrectly.
>25
Indicates a message severity level that you cannot suppress via the SYSTEM.MESSAGE_LEVEL system variable.

Severity levels of individual Forms Runtime messages are labelled with "Level" in the Form Builder online help system.

Message Types

To use On-Error and On-Message triggers to replace Forms Runtime messages, you need to be aware of the three types of Forms Runtime messages:

Informative Informs end users of the present state of processing (e.g., Last value retrieved.) or provides end users with context-sensitive guidance (e.g., Press [Accept] to enter answer.). Use the On-Message trigger to suppress the appearance of these messages.

Error Inform end users of error conditions that prevent the end user's actions (e.g., Function key not allowed. Press [Show Function Keys] for list of valid keys.). Use On-Error triggers to suppress the appearance of these messages. However, you cannot suppress error messages that appear on the command line (e.g., Too many arguments on command line.).

Working Inform end users that Form Builder currently is processing (e.g., Working...). You cannot use On-Error or On-Message triggers, or the SYSTEM.MESSAGE_LEVEL system variable to suppress these messages.

Message types of individual Forms Runtime messages are labelled with "Type" in the Form Builder online help system.



Calling Oracle Customer Support Calling Oracle Customer Support

Some errors (e.g., internal errors) will require that you call Oracle Customer Support to report the error. When you call, please provide the following information:

  1. Your name, company, and Oracle Support ID number.

  2. The hardware, operating system, and release number of the operating system on which Forms Developer is running.

  3. The complete version number of the Forms Developer component you were using when you encountered the error, including revision number and port release number, if any. (If you are unsure of the component's version number, choose Helpfrm00001.gifAbout ... from the menu.)

  4. All other products (and their version numbers) in use when you encountered the error (e.g., Oracle 7.1.4).

  5. If you encountered one or more error messages, the exact message numbers and descriptions, in the order they appeared.

  6. A description of the problem, including any unusual conditions.

  7. The problem severity, according to the following codes:

frm90000.gif 1: Program not usable. Critical impact on operations.

frm90000.gif 2: Program usable. Operations severely restricted.

frm90000.gif 3: Program usable with limited functions. Not critical to overall operations.

frm90000.gif 4: Problem circumvented by customer. Minimal effect-if any-on operations.


About upgrading forms About upgrading forms

Related Topics

Forms Developer is upwardly compatible with earlier versions of Oracle Forms, including Versions 3.0, 4.0, 4.5, and 5.0.

Note: Before converting your forms or menus, Oracle Corporation recommends that you first make backup copies of all files. Once you upgrade a module, you will not be able to open it in an earlier version of Forms.


Upgrading a form Upgrading a form

Related Topics

To upgrade a 4.x or 5.x form to Forms Developer 6i:

  1. Start Form Builder.

  2. Choose Filefrm00001.gifOpen to display the file or database dialog.

  3. Choose the module you want to upgrade.

  4. Click OK.

  5. Choose Filefrm00001.gifSave.

  6. Choose Programfrm00001.gifCompilefrm00001.gifAll to compile the newly-upgraded module.

Note: All form modules and libraries must be upgraded and recompiled.

To upgrade a pre-4.0 form to Forms Developer 6i:

Type this statement at the command line, substituting the correct form of the Generate command for your environment:

if60cmp <module_name> <username>/<password> upgrade=yes version=<version_number>

To upgrade from:
Use this version number:
Version 3.0
30
Version 2.3
23
Version 2.0
20



Creating a data block Creating a data block

Next Step Related Topics

To create a data block from a table:

Choose Tools-->Data Block Wizard to invoke a wizard that guides you through the process of building a data block.

Or,

  1. In the Object Navigator, click the Blocks node.

  2. Click the Create button rcreate.gif in the toolbar.

  3. Double-click the Block object icon blkobjic.gif to display the Property Palette.

  4. Under the Database node:

frm90000.gif Set the Query Data Source Type property to Table.

frm90000.gif Type the name of a database table in the Query Data Source Name field.

  1. Under the Advanced Database node:

frm90000.gif Set the DML Data Target Type property to Table.

frm90000.gif Type the name of your data source in the DML Data Source Name field.

  1. Under the General node, click the Name property, then type a name or accept the default name.

You can use any name that follows ORACLE naming conventions and is unique among blocks in the form. The block name is an internal descriptor that is not displayed at runtime.


Creating an interface item Creating an interface item

Next Step

To create an interface item:

  1. In the Object Navigator, click the plus icon beside the desired Blocks node.

Form Builder expands the block node and displays its subnodes.

  1. Click the plus icon beside the Items node.

  2. Click the Create button rcreate.gif in the toolbar.

A new item with a default name is inserted under the Items node.

  1. Double-click the object icon beside the newly created item to display the Property Palette.

  2. Under the Database node, set the Database Item property to No.

Note: When you create an item in a data block, Forms assumes the item is a data item, and sets its Database Item property to Yes. Data items are automatically included in any SELECT, UPDATE, and INSERT statements issued to the database. If the item you are creating is a control item in a data block, you must explicitly set its Database Item property to No.

  1. Under the General node, set the Type property to specify the type of item you want.

The default item type is text item. You can change the default by setting the Type property to the item type desired (check box, radio group, list item, and so on).

  1. Under the Physical node, set the Canvas property to the name of the desired canvas.

Note: To display an item at runtime, you must assign each interface item in a form to a canvas.


Modifying the definition of a data block Modifying the defintion of a data block

Related Topics

To modify the definition of a data block:

In the Object Navigator, click the desired block, and choose Toolsfrm00001.gifData BlockWizard to invoke a wizard that guides you through the process of modifying the definition of a data block.


About Forms Runtime Diagnostics About Forms Runtime Diagnostics

Related Topics

Forms Runtime Diagnostics (FRD) is a runtime event-based logging system designed to help you debug your applications.

When a form is run with FRD enabled, a combination of external user-application interactions and internal Forms processing events are written in chronological order to a log on the file system. These events can then be analyzed for correctness.

You can collect the following information:

  • Trigger firing

  • Built-in execution

  • Messages

  • Files opened

  • Unhandled exceptions

  • External user events


    Using Forms Runtime Diagnostics
Using Forms Runtime Diagnostics

Related Topics

To initiate data collection:

Provide the string collect to the runtime argument record as follows:

f60runm module=foo userid=scott/tiger@hockey record=collect

This will create a file in the current working directory with name: collect_<process ID>. In order to choose the name of the file yourself, provide the string as the value of the log= argument:

f60runm module=foo userid=scott/tiger@hockey record=collect log=myfile


Forms Runtime Diagnostics expected output Forms Runtime Diagnostics expected output

Related Topics

The following output for each of the instrumented events can be expected from using Forms Runtime Diagnostics.

Triggers

Place any type of trigger at any level in the object hierarchy. Upon firing, it should be logged as follows:

<trigger_name> Trigger Fired:

Form: <form_name>

Block: <block_name>

Item: <item_name>

The level of the trigger corresponds to the last item in the list. A trigger on Form level, therefore, would have only the form name listed below the trigger name.

A state delta should be written to the log following a trigger fire. A state delta is a dump of all internal state information that has changed since the occurrence of the previous state delta. The first state delta will dump the entire forms state to the log.

Built-ins

When a PL/SQL Forms built-in is executed, the diagnostic output should appear as follows:

Executing <built-in name> Built-In:

In Argument 0 -Type: <type> Value: <value>

In Argument 1 -Type: <type> Value: <value>

Out Argument 0 -Type: <type> Value: <value>

Parameter types to be tested include the following: String, Number, Integer, Float, Oracle Number, Date. Out argument 0 generally represents the function return value.

Messages

Any messages produced by Forms should appear in the log as it was displayed:

Error Message: <message>

File Opens

Files opened are written to the log in the following format:

Opened file: <file_name>

If a file fails to be opened, it should appear in the log as follows:

Failed to open file: <file_name>

Unhandled Exceptions

When an exception is raised that is not caught, it will be logged to the file in the following format:

Unhandled Exception: <exception_name>

If the name is unavailable, FRD will record the exception number for reference:

Unhandled Exception ORA- <exception_number>

Unhandled exceptions should be followed in the log by a state delta.

Runtime External User Events

FRD uses existing runtime mechanisms to log user events. Runtime information written to the log will always be proceeded by a # sign followed by a number representing the chronological order of the event. For each event, runtime will generally write two information blocks, the first detailing the event itself and the second representing a state delta.



About the user exit interface About the user exit interface

Related Topics

Foreign functions are subprograms written in a 3GL programming language that allow you to customize your Form Builder applications to meet the unique requirements of your users. Foreign functions are often used to enhance performance or provide additional functionality to Form Builder.

In Form Builder, you can call a user exit from within a trigger or user-named subprogram using the USER_EXIT built-in. The user exit must be written to return an integer value status code from the function. The return value of the user exit indicates success, failure, or fatal error. Following the execution of the USER_EXIT built-in, the values of the error variables in Form Builder—FORM_FAILURE, FORM_FATAL, and FORM_SUCCESS—are set accordingly.

Special handling is required to make a user exit callable from Forms Runtime. When using a user exits on Microsoft Windows, user exit functions must be linked into a dynamic link library, and a special configuration library must be updated with information about each user exit. The configuration file provides information about the user exit interfaces and the entry points that allow Form Builder to invoke foreign functions from a user exit interface. When using user exits on other platforms, a configuration file must be updated with information about each user exit, and the compiler version of that file, plus the compiled version of the user exit code, must be linked into the Forms Runtime executable.

Note: An alternative approach for calling a foreign function is from a PL/SQL interface. The ORA_FFI built-in package provides a PL/SQL interface for invoking foreign functions from Form Builder.


EXEC SQL statement EXEC SQL statement

Restrictions

An EXEC SQL statement is a SQL command prefixed with "EXEC SQL." EXEC SQL statements allow you to perform any SQL command in an Oracle Precompiler foreign function. Use EXEC SQL statements to select or manipulate data in the database from a foreign function.

Syntax

EXEC SQL sql_statement;

where sql_statement is any valid Oracle SQL statement, except for the restricted commands noted in this section.

You need to perform an explicit CONNECT in an Oracle Precompiler foreign function because Form Builder does not establish the connection automatically, except on UNIX. The Oracle Server does support concurrent connects. For more information, refer to the Programmer's Guide to the Oracle Precompilers.


EXEC SQL statement restrictions EXEC SQL statement restrictions

Using SQL commands in an Oracle Precompiler foreign function has the following restrictions:

frm90000.gif Do not issue a SQL COMMIT or ROLLBACK statement from within a foreign function if there are changes in a form that have not been posted to the database when the foreign function is called.

frm90000.gif Do not issue any command that would implicitly cause a database commit, such as a DDL command within a foreign function, if there are changes in a form that have not been posted to the database when the foreign function is called.


EXEC TOOLS GET statement EXEC TOOLS GET statement

Examples Restrictions

An EXEC TOOLS GET statement retrieves a value from Form Builder into an Oracle Precompiler foreign function. Specifically, it places the value of a Form Builder item or variable into a host language variable. Once the foreign function retrieves a value from Form Builder, the foreign function can use that value for calculation, manipulation, or updating.

Syntax

EXEC TOOLS GET form_variable_1[, form_variable_2, ...]

INTO :host_variable_1[, :host_variable_2, ...];

where:

form_variable_n
Specifies the name of the Form Builder item or variable from which you are reading a value.

host_variable_n
Specifies the name of the host language variable into which you are reading a value.

Notes:

The form_variable can be a reference to any of the following items:

frm90000.gif a fully-qualified item (block.item)

frm90000.gif a form parameter

frm90000.gif a Form Builder system variable

frm90000.gif a Form Builder global variable

frm90000.gif a host language variable (prefixed with a colon) whose value is any of the above choices

Refer to the Programmer's Guide to the Oracle Precompilers for any restrictions on host language variables.


EXEC TOOLS GET statement restrictions EXEC TOOLS GET statement restrictions

It is not possible to get or set values directly into a record group from a foreign function.


EXEC TOOLS GET statement examples EXEC TOOLS GET statement examples

Example

/*

  • Example: Read an item name from a block (empblock.empname)

EXEC SQL BEGIN DECLARE SECTION;

char itm_buff[255]; /* buffer for item value */

VARCHAR itm_name[255]; /* Forms item name */

EXEC SQL END DECLARE SECTION;

strcpy(itm_name.arr,"EMBLOCK.EMPNAME");

itm_name.len=strlen("EMBLOCK.EMPNAME");

EXEC TOOLS GET :itm_name

INTO :itm_buff;


EXEC TOOLS SET statement EXEC TOOLS SET statement

Examples

An EXEC TOOLS SET statement sends a value from an Oracle Precompiler foreign function to Form Builder. Specifically, it places the value of a constant or the value of a host language variable into a Form Builder item or variable.

Any value that an EXEC TOOLS SET statement passes to a form item displays after the foreign function returns processing control to the form that called the foreign function (providing, of course, that the item has the Enabled item property set to Yes).

Syntax

EXEC TOOLS SET form_variable[, ...]

VALUES ({:host_variable | constant}[, ...]);

where:

form_variable
Specifies the name of the Form Builder item or variable into which you are reading a value.

host_variable
Specifies the name of the host language variable from which you are reading a value.

constant
Specifies the constant that you are reading. Do not precede a constant with a colon.

Notes:

The form_variable can be a reference to any of the following items:

frm90000.gif a fully-qualified item (block.item)

frm90000.gif a form parameter

frm90000.gif a Form Builder system variable

frm90000.gif a Form Builder global variable

frm90000.gif a host language variable (prefixed with a colon) whose value is any of the above choices

Refer to the Programmer's Guide to the Oracle Precompilers for any restrictions on host language variables.

Represent host variables and constants in standard SQL format:

Value
Result
:holder1
Inserts the value of the host variable, holder1 (preceded by a semi-colon).
'Summit Sporting Goods'
Inserts the constant string value, Summit Sporting Goods (enclosed in single quotes).
413
Inserts the constant numeric value, 413 (no quotes for numeric values).


EXEC TOOLS SET statement examples EXEC TOOLS SET statement examples

Example

/*

  • Example: Write 'SMITH' into emp.ename

EXEC SQL BEGIN DECLARE SECTION;

char itm_buff[255]; /*buffer for item value */

VARCHAR itm_name[255]; /* Forms item name */

EXEC SQL END DECLARE SECTION;

strcpy(itm_name.arr,"EMP.ENAME");

itm_name.len = strlen("EMP.ENAME");

strcpy(itm_buff,"SMITH");

EXEC TOOLS SET :itm_name

VALUES (:itm_buff);


EXEC TOOLS MESSAGE statement EXEC TOOLS MESSAGE statement

Examples

An EXEC TOOLS MESSAGE statement displays a message on the Form Builder message line.

Syntax

EXEC TOOLS MESSAGE (message [severity]);

where:

message
Specifies the message being passed to Form Builder. The message can be a quoted string or a host language variable.

Severity
Specifies the severity level of the message being passed to Form Builder.


EXEC TOOLS MESSAGE statement examples EXEC TOOLS MESSAGE statement examples

Example

/*

  • Example: Error message for text item

EXEC TOOLS MESSAGE

'Incorrect argument: Expecting item name. Please re-enter.';


EXEC TOOLS GET CONTEXT statement EXEC TOOLS GET CONTEXT statement

Examples

An EXEC TOOLS GET CONTEXT statement obtains context information (a pointer name) previously saved using EXEC TOOLS SET CONTEXT and reads it into a foreign function.

Syntax

EXEC TOOLS GET CONTEXT context_name [, ...]

INTO :host_variable_1[, :host_variable_2, ...];

where:

context_name
Specifies the name of the context you are saving.

host_variable_n
Specifies the name of the host language variable into which you are reading the context value.

Notes:

The context_name can be a reference to one of the following items:

frm90000.gif a host language variable (prefixed with a colon)

frm90000.gif a constant


EXEC TOOLS GET CONTEXT statement examples EXEC TOOLS GET CONTEXT statement examples

Example

/*

  • Example: Get previously saved context information

EXEC SQL BEGIN DECLARE SECTION;

char *pctx;

EXEC SQL END DECLARE SECTION;

EXEC TOOLS GET CONTEXT appl_1 INTO :pctx;


EXEC TOOLS SET CONTEXT statement EXEC TOOLS SET CONTEXT statement

Examples

An EXEC TOOLS SET CONTEXT statement saves context information from one foreign function for use in subsequent foreign function invocations. Use EXEC TOOLS SET CONTEXT instead of creating a global variable to hold information. EXEC TOOLS SET CONTEXT allows you to assign a meaningful text name to a pointer representing a location in memory. You can retrieve the pointer using EXEC TOOLS GET CONTEXT.

Syntax

EXEC TOOLS SET CONTEXT host_name[, ...]

BY context_name [, ...];

where:

host_name
Specifies the host language variable containing the information to be saved.

context_name
Specifies the name of the saved context.

Notes:

The context_name can be a reference to one of the following items:

frm90000.gif a host language variable (prefixed with a colon)

frm90000.gif a constant


EXEC TOOLS SET CONTEXT statement examples EXEC TOOLS SET CONTEXT statement examples

Example

/*

  • Example: Save context information for later use

EXEC SQL BEGIN DECLARE SECTION;

char my_context[20];

EXEC SQL END DECLARE SECTION;

strcpy(my_context, "context_1");

EXEC TOOLS SET CONTEXT :my_context BY appl_1;


EXEC ORACLE statement EXEC ORACLE statement

An EXEC ORACLE statement is a statement that is not standard SQL and is used to execute Oracle Precompiler options. For more information, refer to the Programmer's Guide to the Oracle Precompilers.


Creating a user exit Creating a user exit

Example Related Topics

To create a user exit:

  1. Write the user exit using one of the host programming languages.

  2. Recommendation: Create an Oracle Precompiler foreign function using the C programming language.

  3. Create an IAPXTB control structure that registers each user exit

  4. Integrate a user exit with Form Builder


    About IAPXTB control structures
About IAPXTB control structures

Related Topics

The IAPXTB control structure is a data structure that contains information regarding all foreign functions that can be invoked from a user exit. The IAPXTB control structure designates the entry points necessary for linking foreign functions to Form Builder. The following table describes each column in the IAPXTB control structure:

Column
Content
NAME
This column specifies a user exit name for a foreign function that can be invoked from a user exit. (This is not necessarily the name of the file that contains the foreign function or the name of the foreign function that is called.) Note that some host languages are case sensitive.

FUNCTION
This column specifies the name of the foreign function.

TYPE
This column specifies the language in which the foreign function is written. Valid values include:XITCC for C, XITCOB for COBOL, XITFOR for FORTRAN, XITPLI for PL/I, XITPAS for PASCAL, and XITAda for Ada

You must enter one entry in the IAPXTB control structure for every foreign function that can be invoked from a user exit. This is true for all foreign functions that can be invoked from a user exit, whether a foreign function is in a file that is precompiled and compiled by itself, or precompiled and compiled with several other foreign functions. You should maintain all foreign functions that can be invoked from a user exit for a production system in one IAPXTB control structure. It’s a good idea to keep test versions of your foreign functions in a separate IAPXTB control structure.


Creating an IAPXTB control structure Creating an IAPXTB control structure

Examples Related Topics

To create the IAPXTB control structure:

  1. Define the IAPXTB data structure.

Make sure you define the data structure with three fields representing the name of the user exit, the name of the foreign function, and the language used to develop the foreign function.

  1. Enter the data for each foreign function.

  2. Compile the IAPXTB source file to generate an object code file. Retain the IAPXTB object code file for integrating the user exit with Form Builder.


    About integrating a user exit with Form Builder
About integrating a user exit with Form Builder

Related Topics

Integration of a user exit to Form Builder depends on the operating system and the language used to write the foreign function.

On Microsoft Windows, you create a dynamic link library with foreign function object code files and IAPXTB control structure object code files. When a foreign function is invoked from a user exit, a dynamic link library loads into memory.

For other environments, you must rebuild the Forms Runtime executable by linking the object code files from the foreign function and IAPXTB control structure to Form Builder object code files.


Integrating a user exit with Form Builder Integrating a user exit with Form Builder

Examples Related Topics

To integrate a user exit with Form Builder:

  1. Identify the foreign function object code file.

  2. Identify the IAPXTB control structure object code file.

  3. Link the foreign function object code file and the IAPXTB control structure object code file with either a dynamic link library or Forms Runtime.


    Invoking a foreign function from a user exit
Invoking a foreign function from a user exit

Restrictions Related Topics

After creating a user exit to a foreign function, invoke the foreign function using a user exit interface from Form Builder. To invoke a foreign function from a user exit, call the USER_EXIT built-in subprogram from a trigger or from a user-named subprogram.

When you invoke a foreign function from a user exit, Form Builder temporarily passes processing control to the foreign function. When execution of the foreign function is complete, Form Builder regains processing control.

Syntax

USER_EXIT(user_exit_string);

USER_EXIT(user_exit_string, error_string);

The USER_EXIT built-in calls the foreign function named in the user_exit_string.

Parameters

user_exit_string
Specifies a user exit name for a foreign function to call from a user exit, including any parameters. Maximum length of the user_exit_string is 255 characters.

error_string
Specifies a user-defined error message that Form Builder displays if the call to the foreign function fails. Maximum length of the error_string is 255 characters.


Invoking a foreign function from a user exit restrictions Invoking a foreign function from a user exit restrictions

The user exit name that represents a foreign function (in the user_exit_string of the USER_EXIT built-in subprogram) must follow the rules of your operating system and host language. Be aware that these rules might include case sensitivity. Also note that only one foreign function can be invoked per USER_EXIT built-in call.


Passing parameter values to a foreign function using USER_EXIT Passing parameter values to a foreign function using USER_EXIT

Related Topics

You can pass parameters to a foreign function that is invoked from a user exit by defining user_exit_string and error_string in the USER_EXIT built-in subprogram.

When you define user_exit_string and error_string in Form Builder, the foreign function recognizes the values as corresponding to a command line value and an error message value. For instance, Form Builder treats the value of user_exit_string as a string variable. The value of user_exit_string is the command line to a foreign function.

The following are foreign function parameters and their corresponding Form Builder definitions for each foreign function invoked from a user exit:

Foreign Function Parameter
Form Builder Definition
Command Line
user_exit_string.
Command Line Length
length (in characters) of user_exit_string.
Error Message
error_string.
Error Message Length
length (in characters) of error_string.
In-Query
a boolean value that reflects whether the foreign function was invoked from a user exit when the form was in Enter Query mode.

Although Form Builder automatically invokes the foreign function from the user_exit_string, Form Builder does not automatically parse the user_exit_string. It is the responsibility of the foreign function to parse the user_exit_string.

You can pass any number of parameters to a foreign function from the user_exit_string of the USER_EXIT built-in. Use this feature to pass information such as item names. For example, to pass two parameters, PARAM1 and PARAM2, to the CALCULATE_VALUES foreign function, you specify the following statement:

User_Exit('CALCULATE_VALUES PARAM1 PARAM2');


Returning a value from a foreign function using USER_EXIT Returning a value from a foreign function using USER_EXIT

Related Topics

When the execution of the Form Builder USER_EXIT built-in subprogram is complete, an integer value is returned to Form Builder. This integer value indicates whether the USER_EXIT built-in subprogram executed with success, failure, or a fatal error. (For example, if you are creating a foreign function in C, Form Builder provides the constants in a ".h" file.)

Error variables in Form Builder—FORM_FAILURE, FORM_FATAL, and FORM_SUCCESS—are set according to the value that is returned from the USER_EXIT built-in subprogram. You can query the error variables to determine the success or failure of the execution of the USER_EXIT built-in subprogram just as you would for any built-in subprogram. The trigger that calls the USER_EXIT built-in subprogram determines how to handle the return condition.

For example, you might want to check the value of FORM_SUCCESS after executing a foreign function from a user exit:

User_Exit('my_exit');

IF NOT Form_Success THEN

/* handle the error */

END IF;


About writing a user exit on Microsoft Windows About writing a user exit on Microsoft Windows

Related Topics

On Microsoft Windows, a foreign function that can be invoked from a user exit is contained in a dynamic link library(DLL). A DLL is a library that loads into memory only when the contained code is invoked, and a DLL can be shared by multiple applications. Before proceeding, you should be familiar with the procedure for building DLLs, as described in your compiler manual.

Note: Some C runtime functions are not available in .DLL files. For more information, refer to your compiler documentation.

The following is an example of creating and invoking a foreign function from a user exit. This example uses the UE_SAMP.MAK project file.


Writing a user exit on Microsoft Windows Writing a user exit on Microsoft Windows

Related Topics

To create a foreign function that can be invoked from a user exit on Microsoft Windows:

  1. Write a foreign function using Pro*C and Oracle precompiler statements to access the database.

For example, create a text file called UEXIT.PC, then add the following text:

/* UEXIT.PC file */

/* This foreign function adds an ID column to the EMP table. */

#ifndef UE

#include "ue.h"

#endif

#ifndef _WINDLL

#define SQLCA_STORAGE_CLASS extern

#endif

EXEC SQL INCLUDE sqlca.h

  • oid AddColumn() {

EXEC SQL alter table EMP add ID varchar(9);

}

  1. Precompile the foreign function with an Oracle precompiler (Pro*C precompiler).

For example, use Pro*C to precompile the UEXIT.PC file. When you precompile UEXIT.PC, Pro*C creates a C file called UEXIT.C.

  1. Create your header files.

Your header file must define your foreign function. For example, modify the sample header file, UE.H, by adding the following text:

extern void AddColumn();

  1. Compile UEXIT.C to generate a foreign function object code file. Be sure to specify the large memory model on your compiler.

    1. Create the IAPXTB control structure.

Modify the file UE_XTB.C file by including the UEXIT.H file and adding the user exit name, foreign function name, and language type. Follow the example in the UE_XTB.C file. In this case, the following entry is added to the file:

Add_ID_Column, AddColumn, XITCC

6. Modify any required foreign function integration files.

Modify the UE_SAMP.DEF file by adding export statements to include the AddColumn foreign function. Follow the examples in the UE_SAMP.DEF file.

7. Build a DLL for use with Forms Runtime.

With the exception of UEXIT.C, the following files should already be included in the UE_SAMP.MAK project file:

\orawin95\forms\userexit\uez.obj

\orawin95\forms\userexit\osswep.obj

\orawin95\forms\userexit\ue_samp.def

\orawin95\forms\userexit\ue_xtb.c

\orawin95\forms\userexit\uexit.c

The UE_SAMP.MAK project is set up to link the following files:

LIBC.LIB

OLDNAMES

\orawin95\forms60\userexit\f60r.LIB

\orawin95\pro20\userexit\sqllib18.lib

\orawin95\pro20\userexit\sqxlib18.lib

After building the UE_SAMP.MAK project, the result is a DLL named UE_SAMP.DLL. Add the UE_SAMP.DLL entry to the list of DLLs defined by the FORMS60_USEREXITS parameter in the registry.

Alternatively, you can rename UE_SAMP.DLL to F60XTB32.DLL, backup the F60XTB32.DLL in the c:\orawin95\bin directory, and copy the new F60XTB32.DLL to the c:\orawin95\bin directory.

8. Make sure you include the name of the DLL in the FORMS60_USEREXITS variable in the registry, or rename the DLL to F60XTB32.DLL. If you rename the DLL to F60XTB32.DLL, replace the existing F60XTB32.DLL in the \ORAWIN95\BIN directory with the new F60XTB32.DLL.

9. Invoke the foreign function from a user exit in Form Builder.

In this case, a When-Button-Pressed Trigger calls the foreign function from a user exit. The following statement demonstrates how to invoke the AddColumn foreign function by specifying the user exit name Add_ID_Column in the USER_EXIT built-in subprogram:

/* Trigger: When-Button-Pressed */

USER_EXIT('Add_ID_Column');


Microsoft Windows user exit interface files Microsoft Windows user exit interface files

Related Topics

During the installation of Form Builder for Windows, a group of files related to the user exit interface (with the exception of F60XTB32.DLL) are copied to the \ORAWIN95\FORMS60\USEREXIT directory. You may not require all of the files contained in this directory. All foreign functions that can be invoked from a user exit interface from Form Builder for Windows must be contained in a DLL.

F60XTB32.DLL
is the default file containing foreign functions that can be invoked from a user exit interface. This file is a DLL that ships with Form Builder, and does not initially contain user-defined foreign functions. This file is placed in the \ORAWIN95\BIN directory during installation. When you create new foreign functions, replace the existing F60XTB32.DLL file with a new F60XTB32.DLL.

To assist you in creating the IAPXTB control structure, Form Builder provides you with two IAPXTB control structure source files, UE_XTB.C and UE_XTBN.C. Each file serves as a template for creating an IAPXTB control structure. Modify a IAPXTB control structure source file to include the foreign functions you define. Include the appropriate file in your project. You only need one of the two source files to create the IAPXTB control structure.

UE_XTB.C
is a file that contains an example of an entry for the IAPXTB control structure. Modify this file and add your foreign function entries. This is the file that is in the UE_SAMP.MAK project file.
UE_XTBN.C
is a file that contains an empty IAPXTB control structure. Add your foreign function entries to create an IAPXTB control structure. This is the file that is in the UE_XTBN.MAK project file.

The following files are project files that contain all the required files to create a DLL containing foreign functions that you can invoke from a user exit interface in Form Builder.

UE_SAMP.MAK
is a project file that includes the IAPXTB control structure from the UE_XTB.C file. Building this project generates UE_SAMP.DLL. You can rename the DLL from UE_SAMP.DLL to F60XTB32.DLL and replace the existing F60XTB32.DLL in the \ORAWIN95\BIN directory, or you can add UE_SAMP.DLL to the list of DLLs defined by the FORMS60_USEREXITS parameter in the registry.
UE_XTBN.MAK
is a project file that includes the IAPXTB control structure from the UE_XTBN.C file. Building this project generates UE_XTBN.DLL. This is the project file that is used to generate the initial F60XTB32.DLL that resides in the \ORAWIN95\BIN directory. You can rename the DLL from UE_XTBN.DLL to F60XTB32.DLL and replace the existing F60XTB32.DLL in the \ORAWIN95\BIN directory, or you can add UE_XTBN.DLL to the list of DLLs defined by the FORMS60_USEREXITS parameter in the registry.

In addition to your foreign function object code files and an IAPXTB control structure object code file, you need the following files in your project file to generate a user exit interface DLL (These files are included in UE_SAMP.MAK and UE_XTBN.MAK):

UE_SAMP.DEF
contains definitions you need to build your own DLL.
OSSWEP.OBJ
is the Dynamic Link Library Windows Entry Point .OBJ file you need to build your own DLL. (You may replace OSSWEP.OBJ with an .OBJ file of your own.)
UEZ.OBJ
is an .OBJ file that you link to your own .OBJ files.


Compiling Microsoft Windows foreign functions Compiling Microsoft Windows foreign functions

Related Topics

When compiling your foreign functions, be sure to specify the large memory model. Refer to your Microsoft Windows compiler documentation for additional information, such as restrictions on building a Microsoft Windows DLL, and the use of #define statements. (Your foreign function code may need to include the UE.H file to access typedefs and #define statements.)


Creating the IAPXTB control structure for Microsoft Windows Creating the IAPXTB control structure for Microsoft Windows

Related Topics

Create the IAPXTB control structure by using the UE_XTB.C or the UE_XTBN.C file as a template. Alternatively, create your own IAPXTB control structure in a self-defined file.

Note: On Microsoft Windows, an IAPXTB control structure is required for building each DLL that contains foreign functions that can be invoked from a user exit. Include only those entries in the IAPXTB control structure used for corresponding foreign functions that are contained in a DLL.

The following is an excerpt from a slightly modified UE_XTB.C file:

extern exitr iapxtb[] = { /* Holds exit routine pointers */

"UE_Name", UE_Funct, XITCC,

"USEREXECSQL", uxsql, XITCC,

(char *)0, 0, 0 /* zero entry marks the end */

} /* end iapxtb */

The file includes the user exit name UE_Name. In this example, the following line was added to the original UE_XTB.C file:

"UE_Name", UE_Funct, XITCC,

UE_Name
is the user exit name for use by the USER_EXIT built-in subprogram to invoke the foreign function from Form Builder.
UE_Funct
is the name of the foreign function that temporarily takes over processing control from Form Builder.
XITCC
specifies the C programming language that is used to develop the foreign function.


About building a Microsoft Windows dynamic link library About building a Microsoft Windows dynamic link library

Related Topics

Two project files, UE_SAMP.MAK and UE_XTBN.MAK, are guides to help you create a DLL containing foreign functions that can be invoked from a user exit.

You also have the option of defining your own project file. When creating your own project file, remember to include a IAPXTB control structure object code file, the foreign function object code files, and the required files for integrating foreign functions that can be invoked from a user exit in Form Builder.

One of the required files for integrating foreign functions with Form Builder is the UE_SAMP.DEF file. Use the UE_SAMP.DEF file to export foreign functions. Some export statements for Form Builder already exist. Do not modify the existing export statements, because the functions are used by Form Builder to access user exits.

The UE_SAMP.MAK project file is used here as an example. In addition to the object code files containing your foreign functions, UE_SAMP.MAK includes the following files:

\orawin95\forms60\userexit\uez.obj

\orawin95\forms60\userexit\osswep.obj

\orawin95\forms50\userexit\f60xtb.def

\orawin95\forms60\userexit\ue_xtb.c

You must also link the following files:

LDLLCEW.LIB

LIBW.LIB

OLDNAMES

\orawin95\forms60\userexit\F60R.LIB

If you are creating an Oracle Precompiler foreign function, you must link the following libraries:

\orawin95\forms60\userexit\sql18win.lib

\orawin95\forms60\userexit\sqx18win.lib

You create UE_SAMP.DLL after building the UE_SAMP.MAK project file. You can rename UE_SAMP.DLL to F60XTB32.DLL, make a backup copy of F60XTB32.DLL located in \ORAWIN95\BIN, and replace the existing F60XTB32.DLL with the new F60XTB32.DLL. Alternatively, you can add UE_SAMP.DLL to the list of DLLs defined by the FORMS60_USEREXITS parameter in the registry.


Defining foreign functions in multiple dynamic link libraries Defining foreign functions in multiple dynamic link libraries

Foreign functions developed for use in Form Builder for Windows are contained in DLLs. Form Builder establishes a single DLL, F60XTB32.DLL, for containing foreign functions. F60XTB32.DLL is the default DLL for containing foreign functions. Multiple foreign functions can be contained in a single DLL.

Using a single DLL that contains all foreign functions can cause conflicts, especially when two programs try to access the same DLL. To alleviate dynamic library conflicts, Form Builder supports multiple user exit DLLs; foreign functions can be contained in multiple DLLs without restrictions on the name of the DLL.

FORMS60_USEREXITS parameter The FORMS60_USEREXITS parameter in the registry allows you to define multiple DLLs to contain foreign functions that can be invoked from a user exit. The FORMS60_USEREXITS parameter includes a semicolon delimited list of user exit DLLs.

This is an example of defining multiple user exit DLLs

FORMS60_USEREXITS = C:\mathlib\add.dll;C:\mathlib\mult.dll;

A DLL loads into memory when any one of the foreign functions it contains is invoked from the user exit. Although the FORMS60_USEREXITS parameter can list many DLLs that each contain multiple user exit foreign functions, only one such DLL is in memory at any time.

Form Builder determines the foreign function to invoke from a user exit using the following criteria:

frm90000.gif If the FORMS60_USEREXITS parameter does not exist in the registry, foreign functions must be contained in a single user exit DLL named F60XTB32.DLL and located in the \ORAWIN95\BIN directory.

frm90000.gif If the FORMS60_USEREXITS parameter exists in the registry and there are multiple user exit DLLs define, the first occurrence of the foreign function in the list of DLLs is invoked.

frm90000.gif If there are multiple user exit DLLs that contain non-unique foreign function names, the non-unique function name that is invoked is the first occurrence of function that follows the content in the user exit cache memory.

NOTE: To avoid calling an unexpected foreign function, do not use the same foreign function name more than once in any of your user exit DLLs. An example of a non-unique function name is when two different functions have the same name, but are contained in different user exit DLLs.

User Exit Cache Memory Form Builder deals with non-unique function names by maintaining a user exit cache memory. Exiting a form clears the user exit cache memory, otherwise the user exit cache memory retains the last called foreign function in memory until you call another foreign function.

Invoking a foreign function that has a non-unique function name depends on what is in the user exit cache memory. The first occurrence of a foreign function with a non-unique function name that follows the foreign function in the user exit cache memory is invoked.

If the user exit cache memory is empty, the first occurrence of a function with the non-unique function name in the list of DLLs is invoked. Because the cache memory is not cleared until you exit a form, subsequent calls to a non-unique function name may result in an unexpected foreign function call. For instance, you may accidentally call a function that follows a function with a unique name as opposed to calling a function that appears earlier in the sequence of user exit DLLs. Although in many cases, the user exit cache memory correctly identifies foreign functions with non-unique names, you should use unique foreign function names in the list of DLLs that are members of the FORMS60_USEREXITS variable whenever possible.


Accessing the Microsoft Windows SDK from a User Exit Accessing the Microsoft Windows SDK from a User Exit

Related Topics

You can invoke Microsoft Windows SDK functions from a user exit. Invoking Microsoft Windows SDK functions is similar to invoking user-defined foreign functions from a user exit on Microsoft Windows. Instead of including the object code files of your user-defined foreign function when building a dynamic link library, you must include the source files of the Microsoft Windows SDK function.

Parameter values for Microsoft Windows SDK functions can be passed to or received from Form Builder like other foreign functions. For Microsoft Windows SDK functions that require a window handle parameter, you can obtain the window handle from Form Builder using the GET_ITEM_PROPERTY function to examine the Window_Handle property. A window handle is a unique internal character constant that is used to refer to objects.

There are many reasons for accessing the Microsoft Windows SDK. For example, by obtaining a window handle from Form Builder, you can invoke Microsoft Windows SDK functions to externally modify the properties of objects in your Form Builder applications. The following is an example of calling the Microsoft Windows SDK function GetWindowRect from a Form Builder trigger or user-defined subprogram:

:block1.item_handle := get_item_property('block1.item1',Window_Handle);

USER_EXIT(GetWinRec || :block1.item_handle,'error_message');


VBX Controls

Form Builder for Microsoft Windows provides support for VBX controls. This chapter includes the following topics:

frm90000.gif About VBX Controls 13 - 569

frm90000.gif VBX Controls in Form Builder 13 - 570

frm90000.gif VBX Controls in the Form Builder 13 - 572

frm90000.gif VBX Controls in Form Builder at Runtime 13 - 574

frm90000.gif Creating a VBX Control in Form Builder 13 - 582


About VBX Controls About VBX Controls

VBX controls provide a simple method of building and enhancing user interfaces. VBX controls are only supported on Microsoft Windows 3.x (16-bit). The controls can be used to obtain user input and display program output. VBX controls were originally developed as extensions for the Microsoft Visual Basic environment, and include such items as sliders, grids, and knobs.

VBX controls are a special type of dynamic link library distributed on files with the .VBX extension. A single VBX file can contain many different VBX controls, and each VBX control is defined by a set of properties, events, methods, and error messages. Refer to the documentation that accompanies your VBX control for more information on properties, events, methods, and error messages.

Although you can develop your own VBX controls for use in Form Builder, developing VBX controls requires a significant amount of effort. The procedure for developing VBX controls is documented in the Microsoft Visual Basic Professional Edition Manuals. However, it is recommended that you use VBX controls developed by third party vendors.


VBX Controls in Form Builder VBX Controls in Form Builder

Related Topics

A VBX control is an item in Form Builder. Like other Form Builder items, VBX controls serve as a way to represent and manipulate data that displays on a form. VBX controls can be datasource items or control items.

You can interchange a VBX control with other Form Builder items without affecting the intended use for the item. A text item in Form Builder displays data from the database on a form. A VBX control can accomplish the same task. For example, a text item displaying the number 10 can be depicted by a VBX control that is a knob. Both items can reflect changes in the data from the database. When the number 10 changes to the number 5, the number 5 appears in the text item on the form, and the knob control redirects its position to represent the number 5.

A VBX control, like some Form Builder items, can also be used to input data. An item on a form can require the entry of a number in the range from 1 to 10. Using a drop-down list, you can display the choices on a list for selection. Similarly, a VBX control that is a knob can be used to provide choices by turning the knob. Instead of the choices appearing in the drop-down list, the choices are depicted by the position of the knob.

VBX controls can be used in place of Form Builder items when any of the following conditions are met:

frm90000.gif A VBX control is the best representation for your data in Form Builder.

frm90000.gif A VBX control is the best method of data input into Form Builder.

frm90000.gif You want a simple method of enhancing the user interface to build professional Form Builder applications.

The Value of a VBX Control

Like other items in Form Builder, a VBX control can store values such as the number 10 or the character string 'BLUE'. The value of a VBX control is derived from the item property, VBX Control Value Property. Form Builder uses the setting of the VBX Control Value Property for database querying and setting. Use standard PL/SQL bind variable syntax to set the value of a VBX control.

The value of the VBX Control Value Property can be any one of the control's scalar-valued properties. Many scalar-valued properties can exist for any single VBX control, but not all the properties make sense as the VBX Control Value Property for a control's intended use.

Form Builder sets the VBX Control Value Property after a VBX control name is specified. In many cases, a VBX control has a default property that denotes the value of the control. If there exists a default property that denotes the value of the control, the default property is set to the VBX Control Value Property.

For example, the knob VBX control has a property called Value Current which is the default property that denotes the value of the knob control. After selecting to use the knob control, the VBX Control Value Property is set to the knob control property, Value Current. Other properties of the knob control, such as Value Initial, Value Maximum, and Value Minimum, are valid values to assign to the VBX Control Value Property. However, these VBX control properties may not provide meaningful data as the VBX Control Value Property.

As previously illustrated, the VBX control that is a knob can be used to represent a number in a range of values. If you expect the knob control to represent the current value, Value Current is the appropriate setting for the VBX Control Value Property. In this scenario, if the VBX Control Value Property is set to the knob control property Value Minimum, the knob always represents the minimum value in the range. Although the Value Minimum knob control property is a valid setting for the VBX Control Value Property, it is not meaningful in this particular instance.

You can set the VBX Control Value Property from Form Builder. In addition, you can programmatically get and set the VBX Control Value Property by using the VBX.GET_VALUE_PROPERTY and VBX.SET_VALUE_PROPERTY built-in subprograms from the VBX package in Form Builder.


About VBX control properties About VBX control properties

Related Topics

VBX control properties are the properties that are part of a VBX control definition. VBX control properties vary with each VBX control, although some properties are common to several VBX controls. For information about the properties of a particular VBX control, refer to the documentation for the specific VBX control.

Use the Form Builder to create a VBX control for use with Form Builder. From the Form Builder, you can see both the Form Builder VBX control properties and VBX control properties.

Form Builder VBX control properties are listed in the Functional section of the Property Palette. Form Builder VBX control properties include VBX Control File, VBX Control Name, and VBX Control Value Property.


VBX Controls in Form Builder at Runtime VBX Controls in Form Builder at Runtime

Examples Related Topics

VBX controls raise events in response to runtime interaction. VBX events can also be raised explicitly in PL/SQL to cause a particular course of action. For example, you can explicitly raise the VBX ClickIn event of the knob VBX control.

Because VBX controls are defined with a set of properties, events, and methods, you can determine the behavior of a VBX control in a Form Builder application. Interact with a VBX control in Form Builder by doing any of the following:

frm90000.gif respond to VBX control events

frm90000.gif fire VBX control events

frm90000.gif get VBX control properties

frm90000.gif set VBX control properties

frm90000.gif invoke VBX control methods

You can define the course of action that takes place following any VBX control event, for instance, to increase a value in a field on a form when the spin button VBX control spins upward. Similarly, you can decrease a value in a field on a form when the spin button spins downward. You respond to the events raised by the spin button VBX control to detect whether a spin button spins upward or downward and perform the appropriate action. In this case, the spin button VBX control raises a SpinUp event when a button spins upward and a SpinDown event when a button spins downward. Events vary among VBX controls. For information about the events of a particular VBX control, refer to the documentation for the specific VBX control.


Capturing a VBX control event Capturing a VBX control event

Examples Related Topics

To capture a VBX control event:

  1. Create a VBX control.

  2. Create a When-Custom-Item-Event trigger attached to the VBX control item.

  3. In the When-Custom-Item-Event trigger, read the value of the system variable SYSTEM.CUSTOM_ITEM_EVENT to determine the case-sensitive name of the event that fires the trigger.


    Capturing a VBX control event example
Capturing a VBX control event example

Example

/*

  • TRIGGER: When-Custom-Item-Event
    ** ITEM: SpinButton VBX Control
    ** EXAMPLE: Capture events and determine course of action
    */
    IF :System.Custom_Item_Event = 'SpinDown' THEN
    :QTY := :QTY - 1;
    ELSE
    IF :System.Custom_Item_Event = 'SpinUp' THEN
    :QTY := :QTY + 1;
    END IF;
    END IF:


    Creating a VBX Control
Creating a VBX Control

Related Topics

To create a VBX control:

  1. In the Form Editor tool palette, click the VBX control tool.

  2. Locate and size the VBX control container on the canvas.

  3. Double-click on the VBX control container to open the Property Palette

  4. Specify the VBX control file name in the VBX Control File property or double-click on the VBX Control File property to browse the file system for .VBX files.

  5. Specify the VBX control name in the VBX Control Name field of the Property Palette. Double-click on the VBX Control Name field for a listing of valid VBX controls. You must explicitly select a VBX control name even if the VBX control file contains a single VBX control.

  6. Once you have defined the VBX control, associate a trigger to the VBX control by creating a VBX control item-level When-Custom-Item-Event trigger. Provide the appropriate built-in or user-defined program code in the trigger to suit your needs.



    Deploying Forms on the Web
Deploying Forms on the Web

Deploying Forms Applications to the Web with Forms Server Release 6i provides both conceptual and reference information to help you deploy your new and existing Forms applications on the Web. Documentation specific to deploying Forms applications on the Web is found here.



Introducing windows and canvases Introducing windows and canvases

When you build a form, you use windows and canvases to present the visual elements of a form (i.e., interface items and boilerplate objects) to end users. A single form can include any number of windows and canvases.

The Relationship Between Windows and Canvases For each window you create, you also must create at least one canvas; similarly, each canvas you create must be assigned to a window. At runtime, windows and canvases are displayed and closed in response to navigation events and programmatic control.

To define the relationships between interface items, canvases, and windows, you must set a variety of their properties. For example, each interface item (text item, check box, etc.) has a Canvas property that specifies the canvas on which the item is displayed. (Note that when you create an item in the Layout Editor, Form Builder sets this property for you automatically, depending on the current canvas.) Similarly, each canvas has a Window property that specifies the window in which it is displayed.


What is a window? What is a window?

Related Topics

A window is a container for all visual objects that make up a Form Builder application, including canvases. A single form can include any number of windows. While every new form automatically includes a default window named WINDOW1, you can create additional windows as needed by inserting them under the Windows node in the Object Navigator.

By itself, the window object is an empty frame. The frame provides a title bar and handles for interacting with the window, making it possible for end users to scroll, move, and resize the window.

A windows typically contains a canvas with navigable items, and thus is invoked at runtime in response to navigation to items on that canvas. Windows also can be displayed and closed programmatically, independent of any item navigation events. At runtime, when a window is displayed programmatically, or when navigation occurs to an item on a canvas assigned to that window, Form Builder displays the window with the appropriate canvas background.

To define the appearance and functionality of the windows you create, you can specify numerous window properties, including size, display position, and title. You also can get (examine) and set most properties programmatically at runtime. Finally, you can dynamically show and hide windows as required.


About window types About window types

Related Topics

When you create a window, you specify its type by setting the Window Style property.

There are two window styles:

frm90000.gif Document

frm90000.gif Dialog

Document Windows Document windows typically display the main canvases and work areas of your application where most data entry, and data retrieval is performed.

Dialog Windows Dialog windows are free-floating, containers typically used for modal dialogs that require immediate user interaction.


What is a canvas? What is a canvas?

A canvas is a surface--inside a window container--on which you place the interface items and boilerplate objects that end users interact with when they run the form. By default, any canvas you create at runtime is assigned to the window named WINDOW1. To explicitly associate a canvas to a specfic window, set the canvas' Window property accordingly.


About canvas types About canvas types

Related Topics

Form Builder provides four types of canvases, all of which can be displayed in the same window at runtime. A canvas' type defines how Form Builder will display it in the window to which it is assigned. When you create a canvas, you specify its type by setting the Canvas Type property. The four canvas types are:

frm90000.gif Content

frm90000.gif Stacked

frm90000.gif Tab

frm90000.gif Toolbar

Content Canvas The most common canvas type is the content canvas (the default type). A content canvas is the "base" view that occupies the entire content pane of the window in which it is displayed. You must define at least one content canvas for each window you create.

Stacked Canvas A stacked canvas is displayed atop—or stacked on—the content canvas assigned to the current window. Stacked canvases obscure some part of the underlying content canvas, and often are shown and hidden programmatically. You can display more than one stacked canvas in a window at the same time.

Tab Canvas A tab canvas—made up of one or more tab pages—allows you to group and display a large amount of related information on a single dynamic Form Builder canvas object. Like stacked canvases, tab canvases are displayed on top of a content canvas, partly obscuring it. Tab pages (that collectively comprise the tab canvas) each display a subset of the information displayed on the entire tab canvas.

Toolbar Canvas A toolbar canvas often is used to create toolbars for individual windows. You can create two types of toolbar canvases: horizontal or vertical. Horizontal toolbar canvases are displayed at the top of a window, just under its menu bar, while vertical toolbars are displayed along the far left edge of a window.


About views About views

Related Topics

When you work with canvases in Form Builder, the relationship between a canvas and its view is a fundamental concept. Think of the view as a rectangle positioned over the canvas; the area of the canvas visible within the view is what end users see when the canvas is displayed at runtime.

Modifying the View Size and Position For a stacked canvas, you can specify the size of the view at design time by setting the View Width and View Height properties. For a content, tab or toolbar canvas, these properties are ignored because the view size is determined by the size of the window itself. Changing the size of the window at runtime (e.g., resizing it with the mouse) effectively changes the size of the view for that window's content canvas.

For any type of canvas, you can set properties that specify the view's point of origin on the canvas; that is, to position the view rectangle at a specific location on its canvas. Moving the view, like resizing the view, changes the part of the canvas that end users see in the window at runtime. When a content canvas is larger than its view (that is, larger than its window), the window can be scrolled to change the position of the view on the canvas, thus making a different part of the canvas visible.


About MDI and SDI windows About MDI and SDI windows

Related Topics

Form Builder fully supports both the Microsoft Windows MDI (Multiple Document Interface) and SDI (Single Document Interface) systems of window management.

Multiple Document Interface

MDI applications display a default parent window, called the application window. All other windows in the application are either document windows or dialog windows.

Document windows always are displayed within the MDI application window frame. If the end user resizes the MDI window so it is smaller than a document window, the document window is clipped. end users can maximize a document window so that it occupies the entire content area of the application window. Dialog windows are free-floating, and the end user can move them outside the application window if they are defined as movable. If the end user resizes the MDI window to make it smaller than a dialog window, the dialog window is not clipped.

The MDI application window is created by the window manager at runtime, and does not appear in a form's list of windows. However, you can use the SET_WINDOW_PROPERTY built-in to resize, minimize, and maximize the MDI window programmatically.

Single Document Interface

Although MDI is the default system of window management during Forms Runtime, Form Builder also provides support for an SDI root window on Microsoft Windows.

You can set the system of window management to SDI by specifying the USESDI command line option. When SDI is enabled, calls to the FORMS_MDI_WINDOW constant returns NULL for the MDI window handle. There is no multiple interface root window, MDI toolbars exist in parent windows, and MDI menus are attached to each window.


About the root window About the root window

Note
: the concept of a root window is no longer used in Form Builder Release 5 and later. However, for purposes of forward compatibility, the name ROOT_WINDOW, the associated properties and built-ins, and the root window behavior are still supported.

A root window displays the console for the currently-active form in your application. Creating a root window in a form is optional, and is used most often in multiple-form applications (which are designed to run several form modules simultaneously).

A root window has special characteristics. In a multiple-form application, using a root window allows you to have a single window that always displays the console for the currently-active form. This is an advantage only on platforms other than Microsoft Windows, since on Microsoft Windows the console always appears on the MDI application window.

At runtime, only one root window can be displayed at a time. When several forms, each of which has a root window, are running at the same time, the result is a single root window that displays the console for whichever form is currently the active form in the application.

In addition to displaying the active form's console, the root window in a multiple-form application also displays the current form's current content canvas. As the end user navigates between open forms, the background area of the root window updates to display the canvas that is assigned to the root window in the currently active form.

In a multiple-form application, the fact that there can be only one root window displayed at a time also affects the behavior of forms that invoke other forms by executing the OPEN_FORM or CALL_FORM built-ins. If both the called form and the calling form have a root window, and the first navigable item in the called form is on a canvas assigned to the root window, then executing OPEN_FORM or CALL_FORM causes the called form to take over the root window from the calling form.

Creating a Root Window You create a root window by creating a default window and giving it the name ROOT_WINDOW.

For non-Microsoft Windows forms, you indicate the window on which you want the console to display by setting the Console Window form property. In a multiple-form application, you can create a root window in each form, and assign the console to it by setting the Console Window property to ROOT_WINDOW.

Due to the root window's unique characteristics, some of its properties have fixed settings. Overriding these settings in the Form Builder has no effect on the window's runtime behavior. The properties (and their default settings) are as follows:

frm90000.gif Closeable (Yes)

frm90000.gif Fixed Size (No)

frm90000.gif Iconifiable (Yes)

frm90000.gif Inherit Menu (Yes)

frm90000.gif Movable (Yes)

frm90000.gif Name

frm90000.gif Remove on Exit (No)

frm90000.gif Style (Document)

frm90000.gif Vertical/Horizontal Scroll Bar (No)

frm90000.gif Zoomable (Yes)

Displaying the Root Window Form Builder displays the root window at form startup, and it remains displayed throughout the session. This is true even if the root window does not contain navigable items or even any canvases. For example, an application might use the root window only as a menu bar that displays the Form Builder status and message lines, and then use secondary windows to display the main application canvases.


About the console About the console

Related Topics

The console includes the status line and message line, and is displayed at the bottom of the window to which it is assigned.

On Microsoft Windows, the console is displayed on the MDI application window by default; you cannot display it on individual document or dialog windows in the form. To hide the console, set the form-level property Console Window to NULL.

On non-Windows platforms, you can display the console in one window only, and you cannot change the console assignment at runtime. To display the console in a window, set the form-level property Console Window to the appropriate window. To hide the console, set the form property Console Window to NULL.


About window modality About window modality

Related Topics

A window can be either modeless or modal. A modal window (often a dialog) requires the end user to respond before continuing to work in the current application. A modeless window requires no such response. When you create a window, you specify its modality by setting the Modal property to Yes or No. The default is No (modeless).

Modeless Windows You can display multiple modeless windows at the same time, and end users can navigate freely among them (provided your application logic allows it). On most GUI platforms, you can layer modeless windows so that they appear either in front of or behind other windows.

Modeless windows remain displayed until they are dismissed by the end user or hidden programmatically. You can set the Hide on Exit property for a modeless window to specify whether it should remain displayed when the end user navigates to another window. You also can set the properties of a modeless window to specify its border and title, and whether end users should be allowed to scroll, resize, move, close, iconify, and zoom the window.

Modal Windows Modal windows are usually used as dialogs, and have restricted functionality compared to modeless windows. On some platforms, for example, end users cannot resize, scroll, or iconify a modal window. Modal windows are often displayed with a platform-specific border unique to modal windows. On some platforms, modal windows are "always-on-top" windows that cannot be layered behind modeless windows.

In addition to platform-specific restrictions, modal windows have the following characteristics:

frm90000.gif The Hide on Exit property does not apply to modal windows. By default, Form Builder prevents end users from navigating out of modal windows with the mouse, but does allow them to navigate to another window with keyboard commands. When such navigation occurs, Form Builder always closes the modal window, unless the target window is itself a modal window.

frm90000.gif Modal dialog windows cannot have scroll bars, thus setting the Scroll Bar properties has no effect. (Modal non-dialog windows, however, can have scroll bars.)

System-level vs. Application-level Modality On some platforms, modal windows are modal only with respect to other windows in the same application. That is, when Form Builder displays a modal window, the end user is still allowed to work in windows owned by other applications.

On other platforms, modal windows are modal with respect to the entire system, and must be dismissed before end users can send input to windows that belong to other applications.


About scrolling windows About scrolling windows

A scrolling window allows an end user to use scroll bars to scroll the content canvas currently displayed in that window. Conceptually, think of scrolling as moving the content canvas to change the X,Y coordinates of the view's point of origin, thereby revealing a different part of that canvas. Note that scrolling does not change the size of the view, merely its location on the canvas.

A window can be scrolled horizontally only when its display width is less than the width of the content canvas currently displayed in the window. Similarly, it can be scrolled vertically only when its height is less than the height of its current content canvas. (Remember that end users can change the size of a window at runtime.)

When a window is the same size as or larger than its current content canvas, scrolling has no effect since no portion of the canvas is outside the current view (that is, outside the window itself).

The scroll bars on a window scroll only the window's content canvas; however, any stacked canvases displayed in the window will move up/down and left/right as if they were part of the content canvas. (You can also define scroll bars on stacked canvases, but these are independent of the window's scroll bars.)


Creating a window Creating a window

Related Topics

To create a window:

  1. In the Object Navigator, click the Windows node.

  2. Click the Create button rcreate.gif in the toolbar.

Form Builder creates a window, and gives it a default name, such as WINDOW3.

  1. Double-click the window's object icon.

  2. In the Property Palette, set the window properties as desired.

The properties under the Functional and Physical nodes control the window's appearance and functionality at runtime. Some window managers may not support all of these properties.

Note: You must assign at least one content canvas to every window you create. To assign a canvas to a window, set the canvas' Window property to the appropriate window.


Creating a scrolling window Creating a scrolling window

To create a scrolling window:

  1. Create a window and set its properties as follows:

Width/Height The initial display size. (Remember that end users can resize a window at runtime if you allow them to.)

Modal No. (A modal window cannot be scrollable.)

H/V Scroll Bar Yes, for one or both. (Controls the direction in which end users should be able to scroll the window.)

  1. Create a canvas for the window and set its properties as follows:

Canvas Type Content.

Width/Height Set so the canvas is larger than its window.

Window The name of the window you created in Step 1.

View H/V Scroll Bar Ignore. (These properties apply only to a stacked canvas.)


Associating an icon with a window Associating an icon with a window

Related Topics

On GUI platforms, end users can iconify, or minimize, a modeless window so that it is represented on the screen by only a bitmap icon. Once iconified, the end user can redisplay the window by double-clicking the icon.

To create an iconifiable window, you must associate the window with an icon resource file that exists in your runtime operating system. To do so, set the following window properties:

Minimize Allowed Yes.

Icon Filename Name of the bitmap icon file. (Form Builder searches for this file in your system's default resource path.)

Minimized Title Text that displays with the icon at runtime. (If you do not specify a title, some window managers use a default title for the icon.)

To prevent end users from iconifying a window, set the Minimize Allowed property to No. (The Icon Filename and Minimized Title properties are ignored if the Minimize Allowed property is set to No.)

Note: On Microsoft Windows, the lookup path for icon files is defined by the TK21_ICON environment variable in the ORACLE.INI file. When you enter the name of the icon file in the Icon Fileame property, do not include the path or .ICO file extension.


About modal dialog windows About modal dialog windows

Modal dialog windows often are used as interactive dialog boxes. When an application needs information from the end user before it can continue, you can display a modal dialog window to allow the end user to enter the required information. Most dialogs require the end user to either provide the necessary information or dismiss the dialog and cancel the operation.

File and Print dialogs are examples of interactive windows that—on most GUI platforms—are implemented as modal dialogs. Alerts and lists of values (LOVs) are examples of specialized modal dialog windows that are native objects in Form Builder.


Displaying a modal dialog window Displaying a modal dialog window

Related Topics

When you create a modal dialog, decide how the dialog will be displayed and closed. Since a modal dialog requires input from the end user, its content canvas always should contain navigable items. For this reason, the simplest way to display a modal dialog is through navigation from an item in the current window to the first navigable item in the dialog window. When such navigation occurs, Form Builder automatically displays the window (in this case, the modal dialog) that contains the target item.

The navigation event might be the end user pressing the Tab [Next Item] key, or, more likely, a button trigger or menu command that navigates programmatically. For example, you might call the NEXT_BLOCK, GO_BLOCK, or GO_ITEM built-ins from a When-Button-Pressed trigger to navigate to a target item in the dialog.

You can also execute the SHOW_WINDOW built-in to display the modal window. When you use SHOW_WINDOW to display a modal window, it implicitly navigates to the first navigable item on the canvas for that window.

Invoking a Modal Window from a Modal Window You can invoke a modal window from another modal window. For example, the standard Microsoft Windows Printer Setup modal dialog has an Options button that invokes a second modal dialog. When a modal window has been invoked from another modal window, navigation to any modeless window in the same form automatically closes both the parent and child modal windows.


Closing a modal dialog window Closing a modal dialog window

Most application designs call for modal dialogs to remain displayed until the end user either accepts or cancels them. When you create such a window, you must ensure that the end user is only allowed to close it in response to the desired events.

By default, setting the Modal property to Yes prevents end users from navigating out of the window with the mouse, but does not prevent them from navigating to another window by pressing keys such as [Next Item] (Tab) or [Next Block]. When end users are allowed to use keys to navigate to another window, Form Builder always closes the modal window, unless the target window is itself a modal window. (Note that the Hide on Exit property is ignored for a modal window.)

If you navigate to a new modal window, the old modal window stays up. However, trying to navigate from a modal window to a different modal window which was already up causes the current window to be hidden.

Defeating Keyboard Navigation When you implement a modal dialog, usually you want to prevent the end user from navigating out of the window with navigation keys; you want the dialog to be closed only in response to specific events, such as the end user pressing an OK or Cancel button.

You can defeat keyboard navigation out of a modal dialog in several ways:

frm90000.gif Set the Previous Navigation Block and Next Navigation Block properties for the blocks in the dialog to prevent end users from navigating with the [Next Block] and [Previous Block] keys. For example, for a block named DIALOG, you could set both properties to DIALOG to make navigation circular, thus preventing end users from using keys to navigate to any other block.

frm90000.gif Write appropriate block-level triggers for each block in the modal window. For example, you might define a block-level Key-Others trigger that would disable all keys except those keys for which you had also defined a key-trigger (such as Key-Nxt-Item) to enable tabbing between items in the modal window.

Once you have prevented end users from closing a dialog through keyboard navigation, you must write the commands to close the dialog in response to the desired events. You can close a modal dialog programmatically by navigating to an item or block in a modeless window with built-ins such as GO_ITEM and GO_BLOCK. For example, a modal window might contain an OK button with a When-Button-Pressed trigger that executes a GO_BLOCK statement to navigate out of the modal window.


Creating a modal dialog window Creating a modal dialog window

To create a modal dialog window:

  1. Create a new window and set its properties as follows:

Window Style Dialog. (Valid only on Microsoft Windows.)

Modal Yes.

Width/Height Optional. (A dialog typically is smaller than the modeless window from which the end user invokes it.)

  1. Create a content canvas and set its Window property to the modal window you created in Step 1.

  2. Create the items that will appear in the window.

  3. Decide on the events that will display and close the modal dialog at runtime.


    About working with canvases
About working with canvases

While you can create and delete canvases in the Object Navigator, you will use the Layout Editor to accomplish most of your canvas-related tasks.

Editing Canvases In the Layout Editor, you edit one canvas at a time. By default, the canvas itself is an object that can be selected and formatted. You can hide the canvas object by toggling the Viewfrm00001.gifShow Canvas menu option. Many canvas properties can be set graphically in the Layout Editor, as well as in the Property Palette.

Note: You cannot clear, cut, copy, export, or duplicate the canvas or view objects in the Layout Editor.


Creating a canvas Creating a canvas

Related Topics

To create a canvas in the Object Navigator:

  1. In the Object Navigator, click the Canvases node, and Click the Create button rcreate.gif in the toolbar.

Form Builder creates a new canvas, and gives it a default name, such as CANVAS4.

  1. Click the canvas' object icon, and choose Toolsfrm00001.gifProperty Palette.

  2. In the Property Palette, under the General node, set the Canvas Type property to the desired type.

Note: The default canvas type is Content. For a content canvas, the properties that appear under the Stacked View heading do not apply.

  1. Set the Window property to the window in which you want to display the canvas.

By default, new canvases are assigned to the first window listed under the Windows node in the Object Navigator.

Note: To display the new canvas in the Layout Editor, double-click the canvas' object icon in the Object Navigator.


Defining a primary canvas Defining a primary canvas

Related Topics

To define the primary canvas for a window, set its Primary Canvas property to the desired canvas. Form Builder displays a window with its primary canvas when the window is being displayed programmatically, rather than in response to a navigation event.

When to Set the Primary Canvas Property Setting the Primary Canvas property is optional. Most windows are displayed in response to navigation to an item on a specific canvas. In such cases, setting the Primary Canvas property is not required, since the canvas to be displayed is never ambiguous.

The first time you display a window during a session by using the SHOW_WINDOW built-in, Form Builder displays the window with its primary canvas. If the Primary Canvas property is left unspecified, the window is displayed without a view, and appears empty.

You also might want to set the Primary Canvas property in the situation when a window is displayed due to navigation to an item on a stacked canvas. If you want the window's content canvas to be displayed behind the stacked canvas, you must set the Primary Canvas property accordingly.

Form Builder always displays the target item and canvas during a navigation event. So even if you have set the Primary Canvas property to specify a primary canvas, Form Builder will display a different canvas if necessary to make the target item visible.


Deleting a canvas Deleting a canvas

Related Topics

To delete a canvas:

  1. In the Object Navigator, click the object icon of the canvas you want to delete.

  2. Click the Delete icon in the toolbar.

Note: When you delete a canvas, Form Builder also deletes any boilerplate items that are part of the canvas. However, interface items assigned to the canvas are not deleted; rather, they become NULL-canvas items (items that are not assigned to any canvas). Note that NULL-canvas items are not displayed at runtime.


Working with stacked and tab canvases in the Layout Editor Working with stacked and tab canvases in the Layout Editor

You can create and edit both stacked and tab canvases directly in the Layout Editor.

Creating To create stacked or tab canvases, you can use the Stacked Canvas or Tab Canvas buttons on the Layout Editor toolbar. To create a tab canvas, for example, first display the Layout Editor. Next, click tabc_but.gif in the toolbar, then click-drag a rectangular region where you want the tab canvas to appear on the underlying content canvas. Once you have created the tab canvas in this manner, you can immediately resize or move it while still in the Layout Editor.

Editing You can use the Layout Editor to edit items on a stacked or tab canvas in two ways: (1) directly, or (2) on the stacked view of a content canvas. To directly edit a stacked or tab canvas, invoke the Layout Editor, select the appropriate canvas from the Canvas combination box at the top of the window, then move, resize or manipulate the items of the canvas. To edit a stacked or tab canvas on the stacked view of a content canvas, invoke the Layout Editor, display the appropriate content canvas, choose Showfrm00001.gifStacked Views, select the appropriate canvas from the Stacked Canvases dialog, then move, resize, or manipulate the items of the canvas.

Automatic Synchronization Form Builder automatically synchronizes items on the stacked view of the content canvas and the corresponding item on the actual stacked canvas. For example, any movement, resizing or changes in visual attributes to an item on a stacked canvas from the stacked view on the content canvas is reflected in the stacked canvas when invoked from a Layout Editor. Similarly, when changes are made to items on a stacked canvas from a Layout Editor, the changes are reflected in the stacked view on the content canvas.


Resizing a canvas in the Layout Editor Resizing a canvas in the Layout Editor

To resize a canvas in the Layout Editor:

  1. In the Layout Editor, make sure the canvas object is displayed by choosing View and checking the Show Canvas option (the default).

  2. Scroll the Layout Editor window until the lower right corner of the canvas is visible, then click on the right edge or bottom edge of the canvas to select it.

When the canvas is selected, a black selection handle is displayed at its lower-right corner.

  1. Click and drag the selection handle to resize the canvas as desired.


    Setting a canvas' visual attributes in the Layout Editor
Setting a canvas' visual attributes in the Layout Editor

To set a canvas' visual attributes in the Layout Editor:

  1. In the Layout Editor, make sure the canvas is displayed in the Canvas combination box (i.e., it is the current canvas in the Layout Editor).

  2. Choose the desired colors from the color palettes.


    Adjusting the view in the Layout Editor
Adjusting the view in the Layout Editor

Related Topics

Displaying the View To display the view for the current canvas as a 1 point black rectangle in the Layout Editor, enable the Viewfrm00001.gifShow View menu option.

Resizing the View For a content or toolbar canvas, the view rectangle represents the window to which the canvas is assigned. Resizing the view in the Layout Editor changes the Width and Height properties of the window. Conversely, changing the Width or Height properties of the window resizes the view rectangle in the Layout Editor. For a stacked canvas, the view is independent of the window in which the canvas is displayed, and its size is controlled by the Viewport Width and Viewport Height properties.

Moving the View To move the view, drag it to the desired location. Moving the view changes the Viewport X/Y Position on Canvas properties. To resize the view, click on it to select it, then drag one of the selection handles.


About content canvases About content canvases

When building an application, one of the first steps is to create content canvases that will be displayed in the windows of your form(s). While you can assign more than one content canvas to the same window at design time, at runtime only one content canvas is displayed at one time in the window.

Creating a content canvas

There are three ways to create a content canvas in Form Builder:

frm90000.gif Layout Wizard When you use the Layout Wizard to arrange data block items on a canvas, the Layout Wizard allows you to place data block items on a new content canvas (which the Layout Wizard will create for you and give a default name, such as CANVAS3).

frm90000.gif Layout Editor In the Layout Editor, you can create items and boilerplate objects on a specific canvas. (If there are no canvases in a form when you invoke the Layout Editor, Form Builder automatically creates a default content canvas for you to work on.)

frm90000.gif Object Navigator To create a content canvas in the Object Navigator, first you create the canvas, then you specify its type by setting the Canvas Type property in the Property Palette.


Assigning multiple content canvases to a window Assigning multiple content canvases to a window

Related Topics

If you decide to assign more than one content canvas to the same window at design time, you are designating potential content canvases for that window. At runtime, you can display only one content canvas in a single window at a time. In other words, when more than one content canvas is assigned to the same window, runtime events determine which is the current content canvas displayed in that window.

Consider a form with one window and two content canvases (both assigned to the window). At form startup, Form Builder must determine which canvas initially should be displayed in the window. By default, Form Builder sets the input focus to the first navigable item in the first block in the form. In this example, the content canvas that contains the first navigable item in the form (as defined by navigation sequence) becomes the current content canvas for the window.

Now consider an online Help window to which two content canvases are assigned. Each content canvas displays boilerplate Help text, and neither contains navigable items. End users can invoke the Help window by pressing a button that executes the SHOW_WINDOW built-in procedure. Again, Form Builder must determine which canvas initially should be shown when the window is invoked. Since navigation is not occurring, the content canvas designated as the window's primary canvas is displayed in the window. (To designate a primary canvas for a window, set the optional Primary Canvas property.)


About stacked canvases About stacked canvases

Related Topics

Stacked canvases are displayed in a window along with the window's content canvas(es) and any number of other stacked canvases. You can set the bevel, color, and pattern attributes of a stacked canvas to make it look different than the underlying content canvas. Contrarily, you can make the stacked canvas look like the content canvas, and then show and hide the stacked canvas programmatically so end users are unaware that a separate canvas is being displayed. This technique can be used to make items or boilerplate appear to change dynamically.

Creating a stacked canvas is similar to creating a content canvas. To define a stacked canvas, you need to set certain canvas properties that apply only to stacked canvases, and create items and boilerplate text and graphics as you would for a content canvas.

Note: To convert an existing content canvas to a stacked canvas, simply change its Canvas Type property from Content to Stacked.

At runtime, stacked canvases are displayed automatically in response to navigation in the same manner as content canvases. To show and hide stacked canvases programmatically, use the SHOW_VIEW, HIDE_VIEW, and SET_VIEW_PROPERTY built-ins.

Uses for Stacked Canvases

You can use stacked canvases to do the following:

frm90000.gif Display items or boilerplate graphics that end users need to see only in certain situations. (Define a stacked canvas that displays help text or images that remain hidden until they are explicitly invoked by the end user.)

frm90000.gif Display headers that display constant information such as company names, dates, and status information. (Define a stacked canvas that always appears in front of the current content canvas. When the current content canvas is replaced by another, the stacked canvas remains visible in the window. Use this technique to avoid duplicating interface elements on multiple content canvases in the same window.)

frm90000.gif Create a block with items that scroll dynamically in the window where they are displayed, much like a spreadsheet. (If a block contains more items than fit in a window, Form Builder automatically scrolls the window as the end user tabs to items outside the window's frame. This can cause important fields—such as primary key values—to be scrolled out of the window and thus out of the end user's view. For example, for a block that displays information about orders, the Order ID always should be visible, regardless of navigation by the end user. By placing the Order ID item on the underlying content canvas, and placing items that can be scrolled out of sight on a stacked canvas, the stacked canvas becomes the scrolling region, rather than the window itself. Note that stacked canvases can have their own scroll bars, independent of the window's scroll bars.)


Creating a stacked canvas Creating a stacked canvas

Related Topics

To create a stacked canvas:

  1. In the Object Navigator, under the Canvases node, double-click the object icon of the content canvas on which you wish to create a stacked canvas.

  2. In the Layout Editor, click the Stacked Canvas button in the toolbar.

  3. Click-drag the region where you want to place the stacked canvas.

Form Builder creates a stacked canvas, and gives it a default name, such as CANVAS6.

  1. In the Object Navigator, under the Canvases node, click the stacked canvas' object icon, then choose Toolsfrm00001.gifProperty Palette.

  2. In the Property Palette, under the Physical, Viewport and Miscellaneous nodes, set properties as follows:

Visible Yes (stacked canvas will be visible when window is invoked), or No (stacked canvas remains hidden until displayed in response to navigation or programmatic events).

Width/Height Canvas dimensions. Stacked canvases typically are smaller than the content canvas(es) in the same window.

Bevel Canvas border type. Use a border to visually separate a stacked canvas from other canvases in the same window.

Viewport Width/Height Dimensions of the stacked canvas' view. If the view is smaller than the canvas, end users can scroll the canvas at runtime.

Viewport X/Y Position on Canvas X,Y display coordinates of the view's upper-left corner (relative to the upper-left corner of the content canvas currently displayed in the window). 0,0 (the default) displays the stacked canvas at the upper-left corner of the content canvas.

View H/V Scroll Bar Will the stacked canvas have a scroll bar (horizontal, vertical, both, none)? End users can scroll the stacked canvas independently of the underlying content canvas.

  1. Define the stacked canvas' position in the stacking order.

If the stacked canvas is not displayed programmatically or in response to navigation, make sure that its position in the stacking order places it in front of the content canvas assigned to the same window. If not, it will be shown behind the content canvas, and will not be visible at runtime. Recall that the stacking order of canvases in a window is defined by the sequence in which they are listed under the Canvases node in the Object Navigator.


Editing a stacked canvas in the Layout Editor Editing a stacked canvas in the Layout Editor

To edit a stacked canvas in the Layout Editor:

  1. In the Object Navigator, open the Canvases node and click the object icon of the desired stacked canvas.

  2. Double-click the object icon for the stacked canvas.

You now can create items and boilerplate graphics as you would for a content canvas. You can also graphically change the size of the canvas or of the view itself.


Displaying a content canvas' stacked views in the Layout Editor Displaying a content canvas' stacked views in the Layout Editor

Related Topics

To display stacked views assigned to a content canvas' window:

  1. In the Object Navigator, under the Canvases node, double-click the content canvas' object icon.

  2. In the Layout Editor, choose Viewfrm00001.gifStacked Views.

Form Builder displays the Stacked Canvases dialog, which shows all stacked canvases assigned to the same window as the content canvas currently displayed in the Layout Editor.

  1. Select the stacked canvas(es) that you want to display in the Layout Editor. (Deselect those you do not want to display).

To select a stacked canvas, click it in the Stacked Canvases dialog. Control-click multiple stacked canvases to display them on the same content canvas.

To deselect a stacked canvas already displayed on the content canvas, Control-click the selected stacked canvas in the Stacked Canvases dialog.

When you display a stacked canvas this way, you see exactly what the end user will see at runtime. That is, you see only the portion of the stacked canvas that is within its view, as defined by the Viewport Width and Viewport Height properties.

Once the stacked canvas is displayed, you can change its properties in the Layout Editor by manipulating it graphically, as follows:

frm90000.gif Move the stacked canvas to change its Viewport X Position and Viewport Y Position properties.

frm90000.gif Resize the stacked canvas to change its Viewport Width and Viewport Height properties. Resizing the view this way does not change the size of the canvas, only the size of the view. To resize the canvas, set the Width and Height canvas properties in the Property Palette. Only items and boilerplate that are completely on the canvas will display at runtime, even if the view is larger than the canvas.

frm90000.gif For a stacked canvas with scroll bars, scroll the canvas to change the initial runtime settings for the Viewport X Position on Canvas and Viewport Y Position on Canvas properties.


About tab canvases About tab canvases

Related Topics

A tab canvas, made up of one or more tab pages, allows you to group and display a large amount of related information on a single, dynamic canvas object. Like stacked canvases, tab canvases are displayed on top of a content canvas, partly obscuring it. Tab pages each display a subset of the information displayed on the entire tab canvas.


About tab pages About tab pages

Related Topics

A tab canvas can have many tab pages, and must have at least one. Think of tab pages as the folders in a filing system. Each individual tab page (folder) has a labelled tab that developers and end users click to access the page. At design time or runtime, you click the labelled tab to display the page at the front of the tab canvas, thereby obscuring any other page(s).

Each tab page occupies an equal amount of space on the tab canvas, roughly equal to the size of the canvas itself. This layering of related canvas sections enables you to display more information on a single canvas.

Tab pages are sub-objects of a tab canvas. Like the canvas to which it is attached, each tab page has properties; similarly, any item you place on a tab canvas has a canvas property as well as tab page properties. The ordering of tab pages in the Object Navigator determines the left-to-right (or top-to-bottom) order of the tabs at runtime.


Creating a tab canvas Creating a tab canvas

Related Topics

To create a tab canvas:

  1. In the Object Navigator, under the Canvases node, double-click the object icon of the content canvas on which you wish to create a tab canvas.

  2. In the Layout Editor, click tabc_but.gif in the toolbar.

  3. Click-drag the region where you want to place the tab canvas.

Form Builder creates a tab canvas (with two tab pages), and gives it a default name, such as CANVAS6.

  1. In the Object Navigator, under the Canvases node, click the tab canvas' object icon, then choose Toolsfrm00001.gifProperty Palette to display the Property Palette.

  2. Under the Viewport node:

frm90000.gif Set the Viewport X/Y Position on Canvas properties. (Enter X,Y display coordinates of the view's upper-left corner, relative to the upper-left corner of the content canvas currently displayed in the window. 0,0 (the default) displays the tab canvas at the upper-left corner of the content canvas.)

frm90000.gif Set the Viewport Width/Height properties. (Enter dimensions of the tab canvas' view. If the view is smaller than the canvas, end users can scroll the canvas at runtime.)

  1. Under the Physical node:

frm90000.gif Set the Visible property to Yes (tab canvas will be visible when window is invoked), or No (tab canvas remains hidden until displayed in response to navigation or programmatic events).

frm90000.gif Set the Width/Height properties. (Enter dimensions of the canvas. Tab canvases typically are smaller than the content canvas(es) in the same window.)

  1. Define the tab canvas' position in the stacking order.

If the tab canvas is not displayed programmatically or in response to navigation, make sure that its position in the stacking order places it in front of the content canvas assigned to the same window. If not, it will be shown behind the content canvas, and will not be visible at runtime. Recall that the stacking order of canvases in a window is defined by the sequence in which they are listed under the Canvases node in the Object Navigator.


Creating a tab page Creating a tab page

Related Topics

To create a tab page:

  1. In the Object Navigator, under the Canvases node, click the Tab Pages node of the tab canvas.

  2. Click the Create button rcreate.gif in the toolbar once for each tab page you wish to create.

Form Builder creates the tab page(s) and provides a default name for each, such as PAGE3.

  1. Choose Toolsfrm00001.gifProperty Palette.

  2. In the Property Palette, under the Functional node, set the Label property to the text you want to appear on the tab page's tab area at runtime. (End users will click the tab area to navigate between the pages of a tab canvas.)


    Placing an item on a tab page
Placing an item on a tab page

To place an item on a tab page:

  1. In the Object Navigator, double-click the item's object icon.

  2. In the Property Palette, under the Physical node, set the item's Canvas and Tab Page properties to the correct values to make sure the item appears on the desired tab canvas and tab page.

Note: When you add an item to a tab page, be sure the entire item (and any associated boilerplate graphics) is completely within the tab page region.


Moving an item to another tab page Moving an item to another tab page

To move an item to another tab page:

  1. In the Object Navigator, click the item's object icon, and choose Toolsfrm00001.gifLayout Editor.

  2. In the Layout Editor, click the item(s) and click the Cut or Copy buttons in the toolbar.

Form Builder cuts or copies the item to the clipboard.

  1. Click the tab of the tab page on which you wish to paste the item(s), then click the tab page itself once Form Builder displays it.

  2. Click the Paste tool in the toolbar.

Form Builder pastes the item to the selected tab page, in the same X,Y position where the item was located on its previous tab page.

Note: You also can move an item to another tab page by changing the item's Tab Page property in the Property Palette.


Reordering tab pages Reordering tab pages

To reorder tab pages:

  1. In the Object Navigator, under the Canvases node, click the Tab Pages node of the tab canvas.

  2. Click-drag the object icon of a tab page, and reposition it in the hierarchy to change its place in the order

Note: The ordering of tab pages in the Object Navigator determines the left-to-right (or top-to-bottom) order of the tabs at runtime. The highest tab in the Object Navigator will be displayed either at the top or far left of the tab stack at runtime, depending on the orientation of the tabs.


Deleting a tab page Deleting a tab page

To delete a tab page:

  1. In the Object Navigator, under the Canvases node, click the Tab Pages node of the tab canvas.

  2. Click the tab page's object icon, and click the Delete button in the toolbar.

Form Builder displays a confirmation alert.

  1. Click Yes to delete the tab page.

Form Builder deletes the tab page.

Note: Deleting the last page of a tab canvas does not delete the canvas itself.


Displaying a tab canvas Displaying a tab canvas

To display a tab canvas in the Layout Editor:

  1. In the Object Navigator, double-click the tab canvas' object icon,

or

Double-click the object icon of a content canvas that is assigned to the same window as the tab canvas, then choose Viewfrm00001.gifStacked Views and select the tab canvas(es) you want to view on the content canvas,

or

Double-click the object icon of a content canvas that is assigned to the same window as the tab canvas, then select the tab canvas from the Canvas combination box at the top of the Layout Editor.


Switching tab pages at design time Switching tab pages at design time

Once you display a tab canvas at runtime, you can display a tab page by clicking its labelled tab. You also can use the right- and left-arrow keys to switch between the tab pages of a tab canvas, but only if focus already is in a labelled tab itself (as opposed to focus being in an item or the tab canvas itself).


Resizing a tab canvas Resizing a tab canvas

To resize a tab canvas in the Layout Editor:

  1. In the Object Navigator, under the Canvases node, double-click the tab canvas' object icon.

The Layout Editor appears.

  1. Choose Viewfrm00001.gifShow View.

  2. Select the tab canvas view.

  3. Select a point and click-drag the tab canvas to the desired size.

Note: Keep in mind that when you resize a tab canvas, Form Builder resizes each of its tab pages automatically. Objects previously within the borders of a tab page may therefore fall outside the tab page border if you resize the tab canvas.


Moving a tab canvas Moving a tab canvas

To move a tab canvas on the content canvas:

  1. In the Object Navigator, under the Canvases node, double-click the content canvas' object icon.

The Layout Editor appears.

  1. Choose Viewfrm00001.gifShow View.

  2. Select the tab canvas view.

  3. In the Layout Editor, click and drag the tab canvas view to the desired position on the content canvas.

Note: By moving the tab canvas, you are changing the Viewport X Position and the Viewport Y Position of its view.


Displaying Canvases Displaying Canvases

Displaying a stacked canvas' views

Displaying a tab canvas


About toolbar canvases About toolbar canvases

You can create toolbar canvases, both horizontal and vertical, for any window in a form. Form Builder displays horizontal toolbar canvases across the top of a window, and vertical toolbar canvases on the left edge of a window. (The Form Builder has several toolbars: for example, the Object Navigator window has both horizontal and vertical toolbars; the Property Palette has a horizontal toolbar only.)

When you create a toolbar canvas, you assign it to a window by setting the canvas Window property, and then register it with the window by setting the window's Vertical Toolbar Canvas or Horizontal Toolbar Canvas properties as appropriate.

You can change the appearance of a toolbar at runtime by dynamically showing and hiding different items on the toolbar. You also can create more than one toolbar for the same window, and display them in response to navigation events and programmatic control, much like stacked canvases assigned to the same window.

MDI Window Toolbar Canvas On Microsoft Windows, you can create toolbars for the MDI application window as well as for any document windows in the form. The MDI application window is created and managed by the window manager, and does not appear in the list of window objects in a form module.

Note: In multiple-form applications, each form can potentially have its own MDI toolbar. As the end user navigates among forms, the MDI window is updated to display the MDI toolbar defined in the current form. If an MDI toolbar is not defined in the current form, the MDI window is displayed without a toolbar whenever that form has focus.


Creating a toolbar canvas Creating a toolbar canvas

Related Topics

To create a toolbar canvas:

  1. In the Object Navigator, click the Canvases node, and Click the Create button rcreate.gif in the toolbar.

  2. Choose Toolsfrm00001.gifProperty Palette.

  3. In the Property Palette, under the General and Physical nodes, set properties as follows:

Canvas Type—Horizontal Toolbar or Vertical Toolbar.

Window—the name of the window in which you will display the toolbar canvas.

Width/Height—the dimensions of the toolbar canvas. A toolbar canvas generally is as wide (or tall) as the window to which it is assigned, and as deep (or wide) enough to display a single row (or column) of items. (Note that Form Builder accepts any dimensions you specify, even if the resulting toolbar completely obscures the window's content canvas.)

  1. In the Object Navigator, under the Windows node, click the window to which you assigned the toolbar canvas in Step 3.

  2. Double-click the window's object icon to display the Property Palette.

  3. In the Property Palette, under the Functional node, set the Horizontal Toolbar Canvas and/or Vertical Toolbar Canvas properties to the name of the toolbar you created in Step 1.

  1. Add items and boilerplate graphics to the toolbar canvas as you would for any other canvas.

Note: Use of navigable and mouse-navigable items in a toolbar canvas is not supported.


Creating a toolbar canvas for the MDI window Creating a toolbar canvas for the MDI window

Related Topics

To create an MDI toolbar canvas:

  1. In the Object Navigator, click the Canvases node, and Click the Create button rcreate.gif in the toolbar.

  2. Choose Toolsfrm00001.gifProperty Palette.

  3. In the Property Palette, under the General node, set the Canvas Type property to Horizontal Toolbar or Vertical Toolbar.

  4. In the Object Navigator, under the Forms node, double-click the current form module's object icon to display the Property Palette.

  1. In the Property Palette, under the Physical node, set the Form Horizontal Toolbar Canvas and/or Form Vertical Toolbar Canvas properties to the name of the toolbar you created in Step 1.

Note: When you create a canvas toolbar to display on the MDI window, Form Builder will ignore the window assignment for that canvas (specified by its Window property setting) at runtime, and will automatically map the toolbar canvas to the MDI window instead.

  1. Add items and boilerplate to the new toolbar canvas as you would to a content or stacked canvas.

Note: Use of navigable and mouse-navigable items in an MDI toolbar canvas is not supported.


Creating multiple toolbar canvases for the same window Creating multiple toolbar canvases for the same window

Related Topics

It is possible to create two or more toolbar canvases of the same type (horizontal or vertical) and assign them to the same form window by setting the canvas Window property.

When two or more toolbars are assigned to the same form window, Form Builder will attempt to display the primary toolbar canvas on the window at runtime. You specify the primary toolbar canvas for a window by setting the window's Horizontal Toolbar Canvas or Vertical Toolbar Canvas property.

However, Form Builder may display a toolbar canvas other than the primary toolbar canvas if navigation occurs to an item on another toolbar, or if the application programmatically shows or raises a different toolbar canvas by executing SHOW_VIEW or SET_VIEW_PROPERTY.

Defining MDI toolbars also can result in a situation where more than one toolbar canvas is being mapped to the same form window. For example, you might create a form with two toolbar canvases of the same type (horizontal or vertical) that are assigned to the same form window, one of which is designated as the MDI toolbar (by setting the form module Form Horizontal/Vertical Toolbar Canvas properties). On Microsoft Windows, the MDI toolbar is always mapped to the MDI window, and is not displayed on the window to which it is assigned (as indicated by its Window property setting). However, on non-Windows platforms that support toolbars, such as Motif, the MDI toolbar is mapped to the window to which it is assigned, and becomes one of that window's potential toolbar canvases. In this case, Form Builder will attempt to display the window with the toolbar that you designated as the primary toolbar, but may display a different toolbar in response to navigation or programmatic events.


About stacking order About stacking order

When you work with canvases, you must define each canvas' position in the stacking order, with respect to other canvases assigned to the same window. The stacking order determines which canvases are displayed in front of (or "on top of") other canvases in the same window. The stacking order of canvases can change at runtime in response to navigation and programmatic events.

Stacking order is important, particularly when you have multiple content and stacked canvases assigned to the same window. You always should position a stacked canvas in front of any content canvas(es) assigned to the same window; if not, the content canvas(es) will completely obscure the stacked canvas(es) at runtime.

Initial Stacking Order The initial stacking order of canvases is determined by the order they are listed under the Canvases node in the Object Navigator: the first canvas listed under the Canvases node is displayed behind all other canvases assigned to the same window. The last canvas in the list is displayed in front of all other canvases.

Changing the Stacking Order To change the stacking order, drag canvases in the Object Navigator to position them in the desired sequence. To re-sequence canvases this way, make sure the Object Navigator is in Ownership View (the default).


About content canvases in the stacking order About content canvases in the stacking order

Related Topics

When you assign multiple content canvases and at least one stacked canvas to the same window, be aware of how Form Builder manages content canvases in the stacking order. Since Form Builder can display only one content canvas at a time in a single window, it treats all content canvases assigned to the same window as if each one had the same position in the stacking order, relative to the stacked canvases assigned to that window.

Consider a window with four canvases: CNT_A and CNT_C are content canvases; STK_B is a stacked canvas; TAB_D is a tab canvas.

At runtime, Form Builder displays one content canvas at a time in the window. If, at form startup, the application navigates to an item on CNT_A, it becomes the current content canvas displayed in the window. If the end user then navigates to an item on CNT_C, it replaces CNT_A, but at the same position in the stacking order, rather than at its design-time position as specified in the Object Navigator.

This functionality allows the current content canvas to be replaced without hiding stacked canvases currently displayed in the same window. When CNT_C replaces CNT_A, the stacked and tab canvases, which are positioned above CNT_A at design time, remain visible.

When you use this technique, make sure that the stacked and tab canvases are sequenced in front of (above) the first content canvas that will be displayed in the window.


How stacking order changes at runtime How stacking order changes at runtime

At runtime, the stacking order you established at design time changes as canvases are raised in response to navigation and programmatic control.

When an end user or the application navigates to an item on a canvas that is hidden behind another canvas, Form Builder automatically raises the target canvas to the front of the window, thus changing the current stacking order. (Therefore, if you design your form such that stacked or tab canvases always are invoked in response to navigation, the design-time stacking order is unimportant.)

Similarly, if you execute the SHOW_VIEW or SET_VIEW_PROPERTY built-in procedures to display a canvas programmatically, Form Builder displays the indicated canvas in front of all other canvases displayed in that same window.


Displaying and closing a window in response to navigation Displaying and closing a window in response to navigation

Related Topics

Displaying a Window in Response to Navigation At runtime, Form Builder always keeps the item that currently has focus visible to the end user. To make the target item visible when a navigation event occurs, Form Builder will invoke, raise or show windows that are currently hidden or are currently behind other windows.

When a navigation event occurs, Form Builder first determines which canvas the target item is on, and then displays the window to which that canvas is assigned. For example, at form startup, Form Builder identifies the item that is the first navigable item in the first navigable block in the form, and then displays the canvas and window to which that item is assigned.

You can take advantage of this behavior by using navigation events to invoke windows, without having to write code to display them explicitly.

Examples of navigation events include Next Item, Previous Item, Next Block, and Previous Block. The end user can issue these commands by pressing keys or selecting commands on the Default menu. You can also initiate navigation programmatically by calling the appropriate built-ins, including GO_ITEM and GO_BLOCK.

Closing a Window in Response to Navigation When an end user or the application navigates out of a modeless window, the window's Hide on Exit property determines whether the window remains displayed or is closed automatically.

If Hide on Exit is set to Yes, Form Builder closes the window automatically when the end user or the application navigates to an item in another window. If Hide on Exit is set to No (the default), Form Builder does not close the window when navigation to an item in another window occurs.

Note that the Hide on Exit property is ignored for modal windows (windows with the Modal property set to Yes).


Displaying and closing a window programmatically Displaying and closing a window programmatically

Examples Related Topics

Displaying a Window To display a window that does not contain navigable items, you must display it programmatically. For such windows, you also must set the Primary Canvas property to specify the content canvas that you want displayed in the window.

To display a window at runtime, use either the SHOW_WINDOW or SET_WINDOW_PROPERTY built-in procedures. (When you use SHOW_WINDOW, you have the option to specify X,Y display coordinates. If you do not, Form Builder uses the window's current display coordinates.)

When you display a window programmatically, Form Builder displays the following canvases in the window:

frm90000.gif the window's current content canvas

frm90000.gif any stacked canvases assigned to the window that have the Visible property set to Yes

Note: If you programmatically display a window that is already displayed, but is layered behind other windows, Form Builder raises the window in front of the other windows.

Closing a Window To close a window, you can use either the HIDE_WINDOW or SET_WINDOW_PROPERTY built-in procedures.

The Current Item When you display and hide windows programmatically, keep in mind that Form Builder always keeps the item that currently has focus visible to the end user. If you attempt to programmatically close the window that contains the current item, Form Builder ignores the call. If you display a window that obscures the current item, Form Builder executes the call, but then immediately raises windows or canvases as necessary to keep the current item visible.


Displaying and closing a window programmatically examples Displaying and closing a window programmatically examples

/*

  • Example 1: These 2 procedure calls display a window named
    ** MY_WIN, with equivalent results:

    SHOW_WINDOW('my_win');
    SET_WINDOW_PROPERTY('my_win', visible, property_true);

    ** Example 2: This procedure call displays the same window at
    ** screen coordinates 5 and 10:

    SHOW_WINDOW('my_win', 5, 10);

    ** Example 3: The SET_WINDOW_PROPERTY built-in sets only one
    ** window property at a time; you must call it twice to achieve
    ** the same result as the previous example:

    SET_WINDOW_PROPERTY('my_win', visible, property_true);
    SET_WINDOW_PROPERTY('my_win', window_position, 5, 10);

    ** Example 4: These 2 procedure calls close a window named MY_WIN,
    ** with equivalent results:

    HIDE_WINDOW('my_win');
    SET_WINDOW_PROPERTY('my_win', visible, property_false);

    */


    Moving and resizing a window programmatically
Moving and resizing a window programmatically

Examples Related Topics

Moving a Window To move a window, use the built-in procedures MOVE_WINDOW or SET_WINDOW_PROPERTY.

Resizing a Window To resize a window, use the built-in procedures RESIZE_WINDOW or SET_WINDOW_PROPERTY.

Minimizing/Maximizing a Window To programmatically minimize (iconify) or maximize (enlarge to full-screen) a window, use the SET_WINDOW_PROPERTY built-in to set the Window State property to Minimize or Maximize.

Manipulating the MDI Application Window On Microsoft Windows, you can manipulate the MDI application window programmatically. To do so, refer to the window name as FORMS_MDI_WINDOW. You can programmatically set selected MDI windows properties. For details, refer to the online help for the SET_WINDOW_PROPERTY built-in.

Manipulating Windows at Application Startup To set the size, position, and display state of a window at application start-up (i.e., before the end user sees the form), call the appropriate built-ins from a When-New-Form-Instance trigger. If you are developing an application to run on different operating systems and display devices, you can use the GET_APPLICATION_PROPERTY built-in to examine the following properties, and then size your windows accordingly:

frm90000.gif DISPLAY_HEIGHT

frm90000.gif DISPLAY_WIDTH

frm90000.gif OPERATING_SYSTEM

frm90000.gif USER_INTERFACE

Note: The built-in subprograms that change the size and position of objects require arguments for X,Y display coordinates and width/height dimensions. At runtime, Form Builder interprets these arguments in the units specified by the form module Coordinate System property: either in character cells, centimeters, inches, pixels, or points.


Moving and resizing a window programmatically examples Moving and resizing a window programmatically examples

/*

  • Example 1: These 2 procedure calls move the window MY_WIN to
    ** X,Y coordinates 6 and 8:

    MOVE_WINDOW('my_win', 6, 8);
    SET_WINDOW_PROPERTY('my_win', position, 6, 8);

    ** Example 2: These 2 procedure calls resize MY_WIN to a width
    ** of 80 and a height of 20:

    RESIZE_WINDOW('my_win', 80, 20);
    SET_WINDOW_PROPERTY('my_win', window_size, 80, 20);

    ** Example 3: This procedure call minimizes the document window
    ** MY_WIN:

    SET_WINDOW_PROPERTY('my_win', window_state, minimize);

    ** Example 4: This procedure call uses the Form Builder constant
    ** FORMS_MDI_WINDOW to maximize the MDI window (applies only to
    ** Microsoft Windows):

    SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);

    */


    Scrolling a window programmatically
Scrolling a window programmatically

Examples Related Topics

When you scroll a window programmatically, you actually change the position of the view on the window's canvas (i.e., changing the Viewport X Position on Canvas and Viewport Y Position on Canvas property settings).

To scroll a window programmatically, use one of two built-in procedures:

frm90000.gif SCROLL_VIEW scrolls the window to X,Y coordinates you specify.

frm90000.gif SET_VIEW_PROPERTY allows to set either the X or Y coordinates of the view by setting the Viewport X Position on Canvas or Viewport Y Position on Canvas properties. (Note that to set both X and Y coordinates of the view, you must call this built-in twice.)

Dynamic Scrolling When end users or the application navigate among items, Form Builder always keeps the target item visible to the end user. If necessary, Form Builder will automatically scroll a canvas to bring the target item within the view. For example, when an end user presses [Next Item] (Tab) to move to an item that is on the same canvas but currently outside the window, Form Builder dynamically scrolls the canvas to make the target item visible.

The only exception to this rule is if the end user or the application scrolls the window explicitly, rather than in response to navigation. In this case, Form Builder does allow the item that currently has input focus to be scrolled out of the view. However, the next navigational event will again cause the target item to be scrolled within the view.


Scrolling a window programmatically examples Scrolling a window programmatically examples

/*

  • Example 1: This procedure call scrolls a window's content
    ** canvas horizontally to X,Y coordinates 14 and 10:

    SCROLL_VIEW('my_con_view', 14, 10);

    ** Example 2: These 2 procedure calls also reposition the content
    ** canvas' view to X,Y coordinates 14 and 10:

    SET_VIEW_PROPERTY('my_con_view', x_pos_on_canvas, 14);
    SET_VIEW_PROPERTY('my_con_view', y_pos_on_canvas, 10);

    */


    Using triggers to respond to window events at runtime
Using triggers to respond to window events at runtime

You can use the following triggers to respond to window events:

frm90000.gif When-Window-Activated

frm90000.gif When-Window-Closed

frm90000.gif When-Window-Deactivated

frm90000.gif When-Window-Resized

When working with these triggers, you can examine the built-in system variable SYSTEM.EVENT_WINDOW to determine the name of the window for which the trigger fired.


Showing and hiding a canvas programmatically Showing and hiding a canvas programmatically

Examples Related Topics

Showing a Canvas To programmatically display a canvas in the window to which it is assigned, use either the built-in procedures SHOW_VIEW or SET_VIEW_PROPERTY.

Note: With one exception, when you display a canvas programmatically, Form Builder raises it in front of any other canvases in the same window, regardless of the stacking order you specified at design time, of whether the canvas was already displayed (but hidden behind another canvas) when the built-in was called. The exception is when you try to programmatically display a canvas that would obscure the current item's canvas; in this case Form Builder will display the canvas, but behind the current item's canvas.

If you use the SHOW_VIEW or SET_VIEW_PROPERTY built-ins to display a content canvas, it replaces the window's current content canvas.

Hiding a Canvas To programmatically hide a canvas, use the built-in procedures HIDE_VIEW or SET_VIEW_PROPERTY.


Showing and hiding a canvas programmatically examples Showing and hiding a canvas programmatically examples

/*

  • Example 1: These 2 procedure calls both display a content
    ** canvas named A_STACK:

    SHOW_VIEW('a_stack');
    SET_VIEW_PROPERTY('a_stack', visible, property_true);

    ** Example 2: These 2 procedure calls both hide a content canvas
    ** named A_STACK:

    HIDE_VIEW('a_stack');
    SET_VIEW_PROPERTY('a_stack', visible, property_false);

    */


    Working with the Raise on Entry canvas property
Working with the Raise on Entry canvas property

Related Topics

The canvas property Raise on Entry determines how stacking order is affected by navigation (by the end user or the application) to an item on the canvas. If you set Raise on Entry to:

frm90000.gif No, Form Builder raises the canvas to the front of the window only if the target item is hidden behind another canvas in that same window (when the end user or application navigates to an item on that canvas.

frm90000.gif Yes, Form Builder raises the canvas to the front of the window whenever the end user or the application navigates to an item on that canvas. (Be careful about setting Raise on Entry to Yes for a content canvas; since a content canvas occupies the entire content area of its window, it always will obscure any stacked canvases when Form Builder raises it to the front of the canvas stack.)

Stacked Canvases

Setting the Raise on Entry property for a stacked canvas can be tricky. To get it right, you may have to consider window interaction, default navigation, stacking order, and programmatic manipulation of windows and canvases.

A stacked canvas with Raise on Entry property set to No can be displayed only through navigation or programmatic control.

Recall that when an end user (or your application) navigates to an item on the stacked canvas, Form Builder displays the canvas in its assigned window. But a window also can be shown programmatically, or in response to navigation to an item on the window's content canvas. In these situations, you must set Raise on Entry to Yes so Form Builder will display the stacked canvas when the window is first displayed.

Note that a stacked canvas with its Raise on Entry property set to Yes might still be hidden in the following situations:

frm90000.gif If the stacked canvas' position in the stacking order places it behind a content canvas or other stacked canvas in the same window.

frm90000.gif If the window is displayed because of navigation to an item on another of its canvases, Form Builder will hide the stacked canvas if it overlaps the target item. (Form Builder at first displays the stacked canvas, then immediately raises the target canvas in front of the stacked canvas so that the target item visible.)

frm90000.gif If the window is displayed because of navigation to an item on another of its canvases, and the target canvas has Raise on Entry set to Yes, Form Builder will raise the target canvas in front of the stacked canvas, even if the stacked canvas does not overlap the target item.


Events that change the current content canvas Events that change the current content canvas

Related Topics

When a content canvas is displayed in a window—in response to navigation or programmatic control—it becomes the window's current content canvas. Unless it is replaced by another content canvas, it remains the current content canvas for the duration of the runtime session (even if the end user closes or iconifies the window).

When multiple content canvases are assigned to the same window, the current content canvas can be replaced by another content canvas under the following circumstances:

frm90000.gif the end user or the application navigates to an item on another content canvas assigned to the same window

frm90000.gif a trigger or user-named subprogram executes the REPLACE_CONTENT_VIEW built-in procedure.

For example, the end user might press [Next Item] (Tab) to navigate to an item on a different content canvas. Since a window can display only one content canvas at a time, Form Builder replaces the window's current content canvas with the new content canvas that contains the target item.


Replacing the current content canvas programmatically Replacing the current content canvas programmatically

Examples Related Topics

To replace a window's current content canvas programmatically, use the built-in procedure REPLACE_CONTENT_VIEW.

The canvas specified must be a content canvas, and it must be assigned to the window indicated. (You cannot replace a window's current content canvas with a canvas assigned to a different window.)

You also can use the SHOW_VIEW and SET_VIEW_PROPERTY built-ins to replace a window's content canvas. If the window contains stacked canvases, however, there is an important functional difference between these built-ins and the REPLACE_CONTENT_VIEW built-in:

frm90000.gif SHOW_VIEW and SET_VIEW_PROPERTY display the indicated content canvas in front of any stacked canvases in the window, thereby hiding those stacked canvases.

frm90000.gif In contrast, REPLACE_CONTENT_VIEW displays the indicated content canvas at the same position in the stacking order as the content canvas it replaces.

Remember that Form Builder always keeps the current item visible to the end user. If you programmatically replace the content canvas that contains the current item, Form Builder will automatically redisplay the original canvas.


Replacing the current content canvas programmatically examples Replacing the current content canvas programmatically examples

/*

  • Example 1: This procedure call replaces the WIN_5 window's
    ** current content canvas with a content canvas named CVS_1:

    REPLACE_CONTENT_VIEW('win_5', 'cvs_1');

    */


    Manipulating a stacked canvas programmatically
Manipulating a stacked canvas programmatically

Examples

Displaying a Stacked Canvas To programmatically display a stacked canvas in the window to which it is assigned, you can use the SHOW_VIEW built-in procedure. (Note that a stacked canvas' Visible property is set to No by default.)

Scrolling a Stacked Canvas To scroll a stacked canvas so that a different region of the canvas is visible, use the built-in procedure SCROLL_VIEW (which moves the view relative to its canvas).

Moving a Stacked Canvas To move the stacked canvas to a different location on the underlying content canvas, use the built-in procedure SET_VIEW_PROPERTY (which changes the canvas' Viewport Position property). Note that this will not change the region of the canvas that is visible in the view.

Increasing the Dimensions of the View To increase the dimensions of a stacked canvas' view (so that more of the canvas is visible), use the built-in procedure SET_VIEW_PROPERTY. Note that increasing the of the view does not change the X,Y coordinates of its upper-left corner on the stacked canvas, nor does it change the position of the view itself relative to the underlying content canvas.


Manipulating a stacked canvas programmatically examples Manipulating a stacked canvas programmatically examples

/* Example 1: These 2 procedure calls both display the stacked

  • canvas STACK_IT:
    */
    SHOW_VIEW('stack_it');
    SET_VIEW_PROPERTY('stack_it', visible, property_true);

    /* Example 2: This procedure call scrolls the view of the stacked
    ** canvas STACK_IT to X,Y coordinates 12 and 0:
    */
    SCROLL_VIEW('stack_it', 12, 0);

    /* Example 3: This procedure call changes the position of the
    ** stacked canvas STACK_IT to X,Y coordinates 12 and 20 on the
    ** underlying content canvas:
    */
    SET_VIEW_PROPERTY('stack_it', display_position, 12, 20);

    /* Example 4: This procedure call increases the width of the view,
    ** thereby making more of the canvas visible:
    */
    SET_VIEW_PROPERTY('stack_it', width, 22);


    Manipulating a tab canvas programmatically
Manipulating a tab canvas programmatically

Examples Related Topics

Like stacked canvases, use the SHOW_VIEW, HIDE_VIEW, and SET_VIEW_PROPERTY built-ins to show and hide a tab canvas programmatically.

To show or hide a tab page, use the SET_TAB_PAGE_PROPERTY built-in. To make a tab page the topmost page on a canvas, use the SET_CANVAS_PROPERTY built-in. To change the tab page on which an item is displayed, use the SET_ITEM_PROPERTY built-in.

Showing/Hiding a Tab Page To show or hide a tab page, use the built-in procedure SET_TAB_PAGE_PROPERTY to set the tab page property VISIBLE.

Enabling/Disabling a Tab Page To enable or disable a tab page, use the built-in procedure SET_TAB_PAGE_PROPERTY to set the tab page property ENABLED. (A disabled tab page is displayed at runtime with its tab label greyed out.)

Setting the Topmost Tab Page To make a tab page the top-most on its underlying tab canvas, use the built-in procedure SET_CANVAS_PROPERTY to set the canvas property TOPMOST_TAB_PAGE.


Manipulating a tab canvas programmatically examples Manipulating a tab canvas programmatically examples

/*

  • Example 1: This procedure call shows the tab page TAB1 on the
    ** tab canvas CAN5:
    */
    SET_TAB_PAGE_PROPERTY('can5.tab1', visible, property_true);

    /* Example 2: This procedure call disables tab page TAB1, but
    ** leaves it visible on its underlying tab canvas CAN5:
    */
    SET_TAB_PAGE_PROPERTY('can5.tab1', enabled, property_false);

    /* Example 3: This procedure call makes tab page TAB1 the
    ** top-most page on its underlying tab canvas CAN5:
    */
    SET_CANVAS_PROPERTY('can5', topmost_tab_page, 'tab1');


    Manipulating a tab canvas at runtime
Manipulating a tab canvas at runtime

Related Topics

Runtime navigation to and from a tab canvas—and between the canvas' tab pages—is subject to a few rules and restrictions.

Tab Canvas Navigation At runtime, tab canvases are displayed automatically in response to navigation in the same manner as content and stacked canvases.

SYSTEM.CURRENT_ITEM and SYSTEM.TRIGGER_ITEM can legitimately not have focus, and may even be invisible, when a tab canvas has focus. Clicking on a tab canvas gives it focus but does not change SYSTEM.CURRENT_ITEM.

Tab Page Navigation There are a number of ways to switch between tab pages at runtime. The most direct method is to click the labelled tab at the edge of a tab page. End users also can use the right- and left-arrow keys to switch between tab pages, but only if the labelled tab has focus (i.e., focus is not in an item or the tab canvas). Switching tab pages in response to navigation is similar to displaying a hidden stacked canvas in response to navigation: if navigation occurs between an item on tab page TP1 and and item on tab page TP2, Form Builder automatically displays TP2. If navigation to an item on another tab page fails (due to validation), Form Builder returns focus to the previous item—not to the tab on which the previous item is located.


Select Data Tables dialog box Select Data Tables dialog box

Description The Select Data Tables dialog box enables you to include datasource objects from the connected database into your query.

This dialog box contains:

Show
Specifies whether or not to display tables, views, queries, snapshots, and/or synonyms in the list box.
Drop-down box
Specifies from which datasource to display the objects. You can also select a table from a separate account or database .
Select Data Tables
Lists the available datasource objects you can include in your query. Tip
Info
Displays information on the selected object: the kind, name, owner, date it was created, and comments.
Include
Includes the selected item into the Query Builder workspace.
Close
Closes the dialog box without including a datasource object.


Accessing other accounts in the current database Accessing other accounts in the current database

To access tables in other accounts in the current database:

  1. Click the current database name. The Include button becomes an Open button, and the list box displays a list of accounts in the current database.

  2. Click the name of the account you want to open.

  3. Click Open, or simply double-click the account name. Query Builder displays a list of tables in that account, and the Open button again becomes the Include button, enabling you to include tables in the usual manner.


    Opening other accounts
Opening other accounts

If the table you want is not listed in the current database, you can navigate to other accounts and databases and select tables from those accounts.

To navigate to other accounts and databases:

  1. Click the box above the list of tables. You will see two selections: the name of the current database and the word Databases.

  2. To access tables in other accounts in the current database, click here.

If you are unable to connect to a listed database, it may be due to an invalid link caused by a network problem or a changed remote password. Contact your database administrator for assistance.


Including a table more than once Including a table more than once

If you include the same table more than once in a query, duplicate tables are automatically assigned system-generated alias names composed of the name for the base table, followed by an underscore and an alphanumeric sequence.


Select Related Tables dialog box Select Related Tables dialog box

Description The Select Related Tables dialog box enables you to include tables that are related to the selected table in the Query window.

This dialog box contains:

Show
This option is not available.
Drop-down box
Specifies whether or not to display all related tables.
Select Data Tables
Lists the available related tables. Tip
Info
Displays information on the selected table: the kind, name, owner, date it was created, and comments.
Include
Includes the selected table.
Close
Closes the dialog box without including a related table.


Rename Table dialog box Rename Table dialog box

Description The Rename Table dialog box enables you to rename the currently active table.

This dialog box contains:

Default Table Name
Specifies the current name of the table.
List box
Lists the tables you have open to rename.
New Name
Specifies the new table name.
Define
Updates the table name while keeping the dialog box open.


Identifying a renamed table Identifying a renamed table

In a stored query, it is not immediately apparent whether a particular table has a user-defined name or its original name.

To find out if a particular table has been renamed:

  1. Click frm00049.gif in the Icon bar.

  1. Click the table in question in the list of Available Tables.

If the table has been renamed, the alias name appears in the New Name: field and a different name (the original table name) in the Default Table Name: field.

SQL users can also identify renamed tables by clicking frm00050.gif in the Icon bar. This brings up the Show SQL dialog box, where any name changes appear in the SELECT statement in standard SQL syntax for table aliases.


Set Relationship dialog box Set Relationship dialog box

Description The Set Relationship dialog box enables you to create simple, self, composite, unmatched, and non-equal relationships between two tables.

This dialog box contains:

Relationship
Specifies the origin (in A->) and target (in B->) column names.
Operator
Specifies the type of relationship between the columns.
Use Relationship in Query
Specifies if your relationship will be used in the query. Default is checked.
A not found in B radio button
Specifies that the data retrieved is all data common to both tables, in addition to data that is in table A, but not in table B.
B not found in A radio button
Specifies that the data retrieved is all data common to both tables, in addition to data that is in table B, but not in table A.
Suppress Mismatches radio button
Default. Specifies that the data retrieved is common for both tables.


About relationships About relationships

A relational database consists of a number of related tables. Each table is made up of columns (sometimes called fields) which are arranged vertically. Each column has a name, and contains a unique type of data.

Relationships, or joins, define how a column in one table relates to a column in another table. In many cases, the relationships you need are already defined in the database. Relationships also reduce data redundancy. Whenever there is a relationship between columns in different tables, you can use the tables together in a query. Note

Related columns do not always share the same names. You can always relate columns that share the same datatype, and in some instances you can relate columns of different datatypes, if the relationship makes sense. For example, you can always relate a Number datatype column with a Character column, since a number can also be interpreted as a character. In fact, almost any column (except long text columns) can be related to Character columns.

Relationships can be user-defined (temporary) or established in the underlying data dictionary Relationships in the data dictionary automatically appear when you include related tables (tables that have a primary/foreign key relationship). You do not have to do anything to use these relationships, since they are always valid. These can be created or modified using the Schema Builder.

User-defined relationships are valid only for the query in which you create them. Creating a user-defined relationship does not establish a corresponding permanent relationship in the underlying table. The main difference between the two is that in the case of a user-defined relationship, you must draw the relationship line; in a relationship stored in the database, Query Builder draws it for you.

Note (Report Builder only): Report Builder data links are not the same as Query Builder relationships. Data links are created between two or more queries, where Query Builder relationships (or joins) are created within a single query. For more information, see the Report Builder online help.


Activating and deactivating a relationship Activating and deactivating a relationship

Relationships that you create using the mouse are automatically activated and deactivated as they are needed in a query. Active relationships are displayed with a heavy black line; inactive relationships are shown as grey lines.

To manually activate a relationship using the mouse:

ONESTEP.gif Double-click an inactive relationship line.

To deactivate a relationship:

ONESTEP.gif Double-click the active relationship line.


Define Column dialog box Define Column dialog box

Description
The Define Column dialog box enables you to create a new column in your query based on values in another column. Defined columns appear in both the Datasource panel and the Results window.

This dialog box contains:

Defined Columns
Specifies the name of the column you want to create.
List box
Lists existing defined columns.
Defined as
Specifies the expression of the selected column.
Define
Applies the definition to the column.
Remove
Deletes the selected column.
Paste Column
Displays the Paste Column dialog box.
Paste Func
Displays the Paste Function dialog box.
Note: The defined column is only a part of your query and will not modify the table definition saved in the database.


Sort dialog box Sort dialog box

Description
The Sort dialog box enables you to sort the data in your query according to columns in your table.

This dialog box contains:

Available Columns
Lists the table columns you can sort in the Results window.
Sorted Columns
Lists the table columns that are currently sorted in the Results window.
Copy
Copies the selected column from the Available Columns list to the Sorted Columns list.
Remove
Removes the selected column from the Sorted Columns list.
Sorting Order
Sorts the selected column in Ascending or Descending order. Default is Ascending.


Query Builder Help Query Builder Help

Building a new query

Adding conditions to a query

Creating a simple relationship

Defining a column

Sorting query data


About Query Builder About Query Builder

Query Builder is an easy-to-use data access tool designed for analysts, managers, and other business professionals. It provides a logical and intuitive means to access information from your organization's databases for analysis and reporting.

Query Builder is designed for professionals who do not have a computer programming or database background. Because of its powerful query features and its support of Structured Query Language (SQL) statements, experienced database users and programmers will find that Query Builder serves many of their needs as well.

In Query Builder's graphical Query window , you can specify a request for data from your organization's database(s). The request for data is called a query.

You can use Query Builder to define almost any query that you would build using a SQL SELECT statement. Query Builder automatically generates the appropriate SELECT FROM [table.column] clause based on columns displayed in the Query Builder workspace.


Column Sequence dialog box Column Sequence dialog box

Description
The Column Sequence dialog box enables you to adjust your query results in the Query Builder workspace.

This dialog box contains:

Available Columns
Lists the table columns you can display in the Query Builder workspace. Tip
Displayed Columns
Lists the table columns that are currently displayed in the Query Builder workspace.
Copy
Copies the selected column from the Available Columns list to the Displayed Columns list.
Remove
Removes the selected column from the Displayed Columns list.
Format
Displays the Format dialog box.
Totals
Displays the Totals dialog box.
Execute
Runs the query.


Paste Column dialog box Paste Column dialog box

Description The Paste Column dialog box enables you to paste an existing column from a selected table into your query.

This dialog box contains:

List box
Lists the columns you can paste. Tip


Paste Function dialog box Paste Function dialog box

Description
The Paste Function dialog box enables you to paste a function into your condition or query.

This dialog box contains:

Show Categories
Specifies the types of functions that display in the list box: number, character, date, conversion, group, other.
List box
Lists the available functions under the selected category.
Paste Arguments
Specifies whether or not to include the argument (the expression within the parentheses of a function that supplies information for the function to use).


Show SQL dialog box Show SQL dialog box

The Show SQL dialog box displays the SQL statements for your query thus far. You cannot edit or copy the SQL statements in the Show SQL dialog box.


The column or columns that uniquely identify each row of a table. Primary keys appear in bold.


A column that refers to the primary key values in another table. Foreign keys appear in italics.


The sources from which a query retrieves data, including tables, views, queries, synonyms, and snapshots.


A datasource made up of columns from one or more database tables combined into one logical table.


A string consisting of a function or operation and the database column(s) to be operated on (for example, SALARY+COMMISSION).


To conform to naming conventions, each query name must begin with a letter and can contain up to 30 letters and numbers. If you don't use naming conventions when naming database queries, Query Builder will convert the name to a "literal" value (enclosed in double quotes).


About the Conditions panel About the Conditions panel

The Conditions panel is a section of the Query window that contains the Condition field, where you enter expressions and conditions. Query Builder conditions automatically generate WHERE or HAVING clauses, as appropriate.

The table and column names indicate which columns will be filtered in the condition. You may omit the table name if the column name is unique. Tip

Note: When you activate the Condition field, the cursor will have a (+) sign, indicating that any item you click on will be added to your condition. To deactivate this, you can click frm00051.gif in the Icon Bar.


About the Query window About the Query window

When you open a query, Query Builder displays it in the Query window, split into two panels:

frm90000.gif the Conditions panel, where the Condition field is located. It is used to refine the query.

frm90000.gif the Datasource panel, which displays the tables (views, snapshots, and so forth) used in the query.

Depending on your preferences, the panels may be split vertically or horizontally.

Each table is displayed in a box containing the name of the table and the names of columns in that table. There are a number of icons that help identify the current database object. The icons indicate whether descriptive comments are attached, the type of datasource, the column's datatype, and whether indexes have been defined for tables in the query.

Lines are drawn to indicate the relationships between columns. Relationships are set up between tables to identify how a column in one table relates to a column in another table.

A check mark to the left of the column name indicates the column has been included in the query. This means that Query Builder will search for data corresponding to the column name when you run the query. No check mark indicates that column's data will not be included.


About the Datasource panel About the Datasource panel

The Datasource panel is the section of the Query window where items, such as tables and relationships, display.


About the Icon Bar About the Icon Bar

The Icon Bar displays at the top of the Query Builder window. Click on each icon to view a description.

frm00052.gif

QBICON1.gif


Save icon Save icon

Saves your query to the specified file.


Cut icon Cut icon

Cuts the selected text and places it on your operating system's clipboard.


Copy icon Copy icon

Copies the selected text onto your operating system's clipboard while the original text remains intact.


Paste icon Paste icon

Pastes the current clipboard items into the active location. If there is nothing on the clipboard, nothing will be pasted. You can paste any text that you have cut or copied.


Clear icon Clear icon

Removes the selected item (i.e., text, table). Unlike the Cut command, Clear does not place the removed item(s) on your operating system's clipboard.


Select All icon Select All icon

Selects every item in the active window. For example, if the Conditions panel is active, all conditions in the panel will be selected.


Select Data Tables icon Select Data Tables icon

Displays the Select Data Tables dialog box.


Select Related Tables icon Select Related Tables icon

Displays the Select Related Tables dialog box. This icon is available only when the table you have selected has a related table in the connected database.


Rename Table icon Rename Table icon

Displays the Rename Table dialog box. This icon is available only when there is at least one table in the Query Builder workspace.


Get Info icon Get Info icon

Displays the Info dialog box and information on the selected database object. This icon is available only if a datasource object is active.


Set Table Relationship icon Set Table Relationship icon

Displays the Set Relationship dialog box. This icon is available only when there is more than one table in the Datsource panel to relate.


Show SQL icon Show SQL icon

Displays the Show SQL dialog box and the SQL for the active query.


Column Sequence icon Column Sequence icon

Displays the Display dialog box.


Define Column icon Define Column icon

Displays the Define Column dialog box.


Sort icon Sort icon

Displays the Sort dialog box.


And icon And icon

Inserts the AND operator into your condition. This icon is available only when the Condition field is active. You can also type AND directly into the Condition field.


Or icon Or icon

Inserts the OR operator into your condition. This icon is available only when the Condition field is active. You can also type OR directly into the Condition field.


Not icon Not icon

Inserts the NOT operator into your condition to negate your condition. This icon is available only when the Condition field is active. You can also type NOT directly into the Condition field.


Ungroup Conditions icon Ungroup Conditions icon

Ungroups conditions that are combined with logical operators, such as AND, OR, NOT. This icon is available only when you have selected a logical operator in the Conditions panel.


Accept icon Accept icon

Validates and accepts the active condition. This icon is available only when the Condition field is active. You can also press the Enter or Return key when the Condition field is active to accept and validate your condition.


Cancel icon Cancel icon

Cancels the current condition. This icon is available only when the Condition field is active.


Paste Column icon Paste Column icon

Displays the Paste Column dialog box. This icon is available only when the Condition field is active.


Paste Function icon Paste Function icon

Displays the Paste Function dialog box. This icon is available only when the Condition field is active.


About datatypes About datatypes

The most common datatypes in Query Builder are:

CHAR or VARCHAR2
CHAR is used for fixed length character data, to a maximum size of 255 bytes and a default size of 1 byte. VARCHAR2 is for variable length character strings to a maximum size of 2000 bytes. You must specify size for VARCHAR2.
NUMBER
NUMBER indicates that the database column contains numbers (integers, decimals, or any other type of numeric values). You can perform calculations on numbers represented in the NUMBER datatype, but not on numbers represented by the CHAR datatype.
DATE
DATE indicates that the database column contains date values. Valid dates ranging from January 1, 4712 BC to December 31, 4712 AD. Default format is DD-MON-YY as in '01-JAN-92'.
NUMBER(p,s)
The range of p (decimal precision) is 1 to 38. The range of s (scale) is -84 to 127. Decimal precision is the number of digits to store. The scale is the number of digits to the right of the decimal point. If the scale is negative, the actual data is rounded to the specified number of places to the left of the decimal point. For example, a specification of (10, -2) means round to the hundreds.
Additionally, Query Builder provides limited support for the following Oracle datatypes:

LONG
A LONG column contains alphanumeric data of variable length up to 2 gigabytes (or 231-1). When you include a LONG column in a Query Builder query, the first 2000 characters are displayed.
RAW
Raw binary data. Maximum size is 255 bytes. Values must be inserted as character strings in hexadecimal notation. Values are displayed in hexadecimal. You must specify size for RAW datatypes.
LONG RAW
LONG RAW displays raw binary data up to 2 gigabytes (this appears in hexadecimal in the Results window). LONG RAW datatypes are subject to the same limits as RAW datatype.
Note: Query Builder supports datatype conversions in cases where conditions and expressions reference different datatypes in their comparison. Refer to the Oracle8 Server SQL Language Reference Manual for additional information.


Datatype icons Datatype icons

The following supported datatypes for all the columns in a datasource object are represented by icons located in the right hand column of the object in the Query Builder workspace.

Datatype
Icon
Description
Character
dtalpha.gif
Use the Character datatype for fixed length character data, to a maximum size of 255 bytes and a default size of 1 byte.
Note: You can represent numbers using the Character datatype, but you can only perform calculations with numeric datatypes.
Varchar2
dtalpha.gif
Use the Varchar2 datatype for variable length character strings, to a maximum size of 2000 bytes. You must specify a size for the Varchar2 datatype.
Number
dtnumer.gif
Use the Number datatype for integer or floating data. You must enter a precision length (number of digits) for integer data. Floating datatype is for decimal numbers. When you assign this datatype to a column, you must specify both the precision and the scale.
The precision (total number of digits in the number) can range from 1 to 38.
The scale (number of digits to the right of the decimal point) can range from -84 to 127. If the scale is negative, the actual data is rounded to the specified number of places to the left of the decimal point.
For example, a specification of (10,2) means 10 digits with 2 to the right of the decimal point. A specification of (10,-2) effectively means a 10-digit integer, rounded to the nearest hundred.
Date
dtdate.gif
Use the Date datatype for any type of date. Valid dates range from January 1, 4712 BC to December 31,4712 AD. The default date format is DD-MON-YY, as in ‘01-JAN-97.’
Long
dtlong.gif
Use the Long datatype for long text fields of alphanumeric data of variable length, up to 2 gigabytes.
Raw
dtbinary.gif
Use the Raw datatype for raw binary data. The maximum size is 255 bytes. Values must be inserted as character strings in hexadecimal notation, and values are displayed in hexadecimal. You must specify a size for raw data.
Long Raw
dtbinary.gif
The Long Raw datatype is for storing up to 2 gigabytes of raw binary data (which is entered and displayed in hexidecimal form). Long Raw datatypes do not require a specified size.
MLSLABEL
dtbinary.gif
Use the MLSLABEL datatype for storing the binary format of a label used on a secure operating system. Labels are used by Trusted ORACLE to mediate access to information. You can also define columns with this datatype if you are using the standard ORACLE Server. For more information on Trusted ORACLE, including this datatype and labels, see the Trusted ORACLE8 Server Administrator's Guide.


Datasource Object Notation Datasource object notation

Shown below is an example of two datasource objects, linked by a relationship.

Click any icon, indicator, or part of these objects to display a description.


Object type indicator Object type indicator

The icon in the upper left corner of any datasource object indicates its type:

tablicon.gif Table

viewicon.gif View

quryicon.gif Query

snapicon.gif Snapshot

synicon.gif Synonym


Object title Object title

This is the name of the datasource object. You can change the name by clicking on the object title.


Comment indicator Comment indicator

This icon indicates that this object (or column) has a comment associated with it. Double-click this icon to open the Info dialog box, where you can view the comments.


Column Name Column Name

This is the name of one of the columns in this object. If you double-click a column name, the column will be included in your query.


Datatype indicators Datatype indicators

These icons indicate the datatypes of their respective columns.
If you click and hold on one of these icons, a pop-up menu appears, and you can choose a different datatype.
vartypes.gif


Relationship line Relationship line

A gray line drawn between two columns indicates that a relationship has been created between the columns at either end of the line. The line is drawn from the foreign key to the primary key.


Self-relationship indicator Self-relationship indicator

This icon indicates that a self-relationship has been created between this column (foreign key) and another column (primary key) in the same table.


Primary key Primary key

A column name displayed in boldface indicates that this column has been defined as a primary key for the object.


Foreign key Foreign key

A column name displayed in italics indicates that this column is a foreign key, related to a primary key in another column. Setting up a relationship between two columns is the only way to define a foreign key.


Instead of selecting a table and clicking Include, you can double-click each target table to move it into the Query Builder work area. To include a range of tables, hold down the SHIFT key while clicking the first and last tables in the range.


Although you can set relationships using this dialog box, you should use the mouse method to create relationships wherever possible. For relationships created this way, Query Builder automatically activates and deactivates the relationship lines for you.


If a column has a highlighted check beside it, that means the column appears in the SELECT statement and will be displayed in the query results. If the column has an gray check beside it, the column is used as sort or group criteria.


In general Query Builder allows you to relate any columns that can be interpreted using the implicit conversion feature of the Oracle database. For technical information on implicit conversions, refer to the Oracle8 Server SQL Language Reference Manual.


The expression in the Defined As field typically consists of a function or operation and the database column(s) to be operated on. If the column name occurs in more than one table, remember to reference the table name as well, and separate it from the column name with a period. If the column name is unique, you can specify just the column name.


Renaming a table does not result in any corresponding change in its underlying name in the database. The new name is valid only for the active query; it remains in the query if you save it.


To display the Set Relationship dialog box, click frm00066.gif in the Icon Bar.


To display the Select Tables dialog box, click frm00067.gif in the Icon Bar.


To display the Rename Table dialog box, click frm00049.gif in the Icon Bar.


When you select a column object from a table, Query Builder automatically uses the table alias in your query. Likewise, if you include a column object in the Condition field and accept the condition, Query Builder automatically inserts the appropriate table aliases into your condition.


You can select (or deselect) a column in either of the following ways:

frm90000.gif Check (or uncheck) the check box next to the column.

OR

Double-click on the column name.


About Query Builder functions About Query Builder functions

A function is similar to an operator in that it manipulates data items and returns a result. Functions differ from operators in the format in which they appear with their arguments. This format allows them to operate on any number of arguments, including none. Every time you associate a column with a function name, Query Builder performs the defined operation on the value(s) in that column.

Functions that you can use with queries in Query Builder are:

frm90000.gif number functions

frm90000.gif character functions

frm90000.gif character functions returning numeric values

frm90000.gif conversion functions

frm90000.gif date functions

frm90000.gif group functions

frm90000.gif other functions

Additional Information: For information about any of the other functions, refer to the Oracle8 Server SQL Language Reference Manual.


Functions and arguments Functions and arguments

A function is used to manipulate data in a particular column. Each function can take one or more arguments. An argument is an expression within the parentheses of a function supplying information for the function to use.

An example is the function ROUND, which rounds a number to the degree you specify. If you enter the expression ROUND (CREDIT_LIMIT, -2), Query Builder would round each value for CREDIT_LIMIT to the nearest hundred. If you enter ROUND(CREDIT_LIMIT, 1), Query Builder would round the values for CREDIT_LIMIT to the nearest 10th.

The values used within arguments are:

Argument Value
Description
char, set, search,
Character constant surrounded by single quotation
replace
marks or an expression returning character data.
d, e
Date constant surrounded by single quotation marks, or an expression returning date data.
m, n
Any number constant or expression returning numeric data.
x
Argument type depends on the context of the function.
expr
An expression of any type.
fmt
A format used to change the display of data or to enter data into a Query Builder field or condition in a format other than the default format.


Number functions Number functions

Number functions accept numeric data and return numeric data. You can use number functions when defining columns and conditions.

Function (arguments)
Description
ABS(n)
Absolute value of n.
CEIL(n)
Smallest integer greater than or equal to n.
COS(n)
Returns the cosine of n (an angle expressed in radians).
COSH(n)
Returns the hyperbolic cosine of n.
EXP(n)
Exponential notation. Returns e (2.71828183...) raised to the nth power.
FLOOR(n)
Largest integer equal to or less than n.
LN(n)
Returns the natural log of n, where n is greater than 0.
LOG(m,n)
Returns the logarithm, base m, of n. The base m can be any positive number other than 0 or 1, and n can be any positive number.
MOD(m,n)
Remainder of m divided by n.
POWER(m,n)
m raised to the nth power. If n is not an integer, it will be truncated
ROUND(n[,m])
n rounded to m decimal places; if m is omitted, to 0 places. m may be negative to round digits left of the decimal point.
SIGN(n)
If n<0, -1; if n=0, 0; if n>0, 1.
SIN(n)
Returns the SINE of n (an angle expressed in radians).
SINH(n)
Returns the hyperbolic sine of n.
SQRT(n)
Square root of n; if n<0, NULL.
TAN(n)
Returns the tangent of n (an angle expressed in radians).
TANH(n)
Returns the hyperbolic tangent of n.
TRUNC(n[,m])
n truncated to m decimal places; if m is omitted, to 0 places. m may be negative to truncate (make zero) digits left of the decimal point.


Character functions Character functions

You can use character functions that accept character data and return character data when defining columns and conditions.

Function (arguments)
Description
CHR(n)
The character with having the binary equivalent to n in the database character set.
CONCAT(char1,char2)
Returns char1 concatenated with char2. This function is equivalent to the concatenation operator (||).
INITCAP(char)
char, with first letter of each word capitalized. Words are delimited by white space or characters that are not alphanumeric.
LOWER(char)
char, with all letters forced to lowercase.
LPAD(char1,n[,char2])
char1, left-padded to length n with the sequence of characters in char2, replicated as many times as necessary; if char2 is omitted, with blanks.
LTRIM(char[,set])
char, with initial characters removed up to the first character not in set. set defaults to ` ' (a single blank).
NLS_INITCAP(char [,nlsparams])
Returns char, with the first letter of each word capitalized. Words are delimited by white space or characters that are not alphanumeric. The parameters specified in nlsparams can have the form NLS_SORT=sort where sort is a linguistic sort sequence for your session or BINARY. If you specify BINARY, this function returns char. For information on sort sequences, refer to the Oracle8 Server Concepts Manual.
NLS_LOWER(char[,nlsparams])
Returns char, with all letters forced to lowercase.
See NLS_INITCAP for the nlspa-rams argument.
NLS_UPPER(char[,nlsparams])
Returns char, with all letters forced to uppercase. See NLS_INITCAP for the nlspa-rams argument.
REPLACE(char,search[,replace])
char, with every occurrence of search replaced with replace. If replace is not supplied, all occurrences of search are removed.
RPAD(char1,n[,char2])
char1, right-padded to length n with the characters in char2, replicated as many times as necessary; if char2 is omitted, with blanks.
RTRIM(char[,set])
char, with final characters removed after the last character not in set. set defaults to ` ' (a single blank).
SOUNDEX(char)
A char value representing the sound of the word(s) in char.
SUBSTR(char,m[,n])
A substring of char, beginning at character m, n characters long if n is omitted.
SUBSTRB(char,m[,n])
Same as SUBSTR, except that the arguments m and n are expressed in bytes, rather than characters. For a single byte database character set, SUBSTRB is the same as SUBSTR.
UPPER(char)
char, with all letters forced to uppercase.


Character functions returning numeric data Character functions returning numeric data

You can use character functions to return numeric data when defining columns and conditions.

Abbreviation
Description
ASCII (char)
ASCII value of first character of char.
INSTR(char1,char2[,n[,m]])
The position of the nth occurrence of char2 in char1, beginning search at position n. If m is omitted, 1 is assumed. If n is omitted, 1 is assumed. Position is given relative to the first character of char1, even when n>1.
INSTRB(char1,char2[,n[,m]])
Same as INSTR, except that n and the returned value are expressed in bytes, rather than characters. For a single-byte database character set, INSTRB is the same as INSTR.
LENGTH(char)
The length, in characters, of char.
LENGTHB(char)
Same as LENGTH, except that char is expressed in bytes, rather than characters. If char is NULL, this function returns NULL. For a single-byte database character set, LENGTHB is the same as LENGTH.
NLSSORT(char[,nlsparams])
Returns the string of bytes used to sort char. The parameters specified in nlsparams can have the form NLS_SORT=sort where sort is a linguistic sort sequence for your session or BINARY. If you specify BINARY, this function returns char. For information on sort sequences, refer to the Oracle8 Server Concepts Manual.


Conversion functions Conversion functions

You can use conversion functions to convert data from one datatype to another when defining columns and conditions.

Abbreviation
Description
TO_CHAR (d[,fmt])
Converts d to a char value in the format specified by the char value fmt. If fmt is omitted, d is converted to a char value in Query Builder's default date format, DD-MON-YY.
TO_CHAR(n[,fmt])
Converts n to a char value in the format specified by the char value fmt. If fmt is omitted, n is converted to a char value exactly long enough to hold the significant digits.
TO_DATE(char[,fmt])
Converts a date from a char value to a date value. fmt is a char value specifying the format of char. If fmt is omitted, char must have the Query Builder default date format, DD-MON-YY.
TO_DATE(n,[fmt])
Converts a number into a date. fmt must be a format that, when used with TO_CHAR, produces a DATE (e.g., J or MM).
TO_LABEL(char[,fmt])
Converts char, a value of datatype CHAR or VARCHAR2 containing a label in the format fmt, to a value of MLSLABEL datatype. If you omit fmt, char must be in the default label format.
TO_MULTI_BYTE (char)
Returns char with all of its single-byte characters converted to their corresponding multi-byte characters. Any single-byte characters that have no multi-byte equivalents appear in the output string as single-byte. (This function is only useful if your database character set contains both types.)
TO_NUMBER (char)
Converts char, character data containing a number, to numeric data.
TO_SINGLE_BYTE (char)
Returns char with all of its multi-byte characters converted to their corresponding single-byte characters. Any multi-byte characters that have no single-byte equivalents appear in the output string as multi-byte. (This function is only useful if your database character set contains both types.)


Date functions Date functions

All date functions return date data except MONTHS_BETWEEN, which returns numeric data. You can use these functions when defining columns and conditions.

Abbreviation
Description
ADD_MONTHS (d,n)
Date d plus n months.
LAST_DAY(d)
Date of last day of month containing d.
MONTHS_BETWEEN(d,e)
Number of months between dates d and e. If d is later than e, result is positive; if earlier, negative.
NEW_TIME(d,a,b)
Date and time in time zone b when date and time in time zone a are d. a and b are char expressions with the following meaning:
AST, ADT:
Atlantic Standard or Daylight Time
BST, BDT:
Bering Standard or Daylight Time
CST, CDT:
Central Standard or Daylight Time
EST, EDT:
Eastern Standard or Daylight Time
GMT:
Greenwich Mean Time
HST, HDT:
Alaska-Hawaii Standard or Daylight Time
MST, MDT:
Mountain Standard or Daylight Time
NST:
Newfoundland Standard Time
PST, PDT:
Pacific Standard or Daylight Time
YST, YDT:
Yukon Standard or Daylight Time
NEXT_DAY(d,char)
Date of first day of week named by char that is equal to or later than d.
ROUND(d[,fmt])
d rounded as specified by the rounding unit fmt; if fmt omitted, the nearest day.
SYSDATE
Current date and time. Requires no arguments.
TRUNC(d[,fmt])
d with time of day truncated up to the specified truncation unit, fmt; if fmt omitted, the time of day is removed.
Additional Information: Refer to the Oracle8 Server SQL Language Reference Manual for a table of format models to be used with the ROUND and TRUNC date functions.


Group functions Group functions

Group functions retrieve data based on groups of rows rather than one result per row. Group functions perform operations such as average, count, sum, and standard deviation.

You can also use group functions to define a new column, and the entire result is treated as one group when you display no other columns. Displaying other columns will divide the result into smaller groups. You can use group functions in conditions, but only with a comparison operator, so the entire result is treated as one group. For example, the condition SALARY > AVG(SALARY) is true when the value of SALARY in the current row is greater than the average of SALARY in all of the rows.

Group functions can be used with the DISTINCT or ALL options. DISTINCT makes a group function consider only distinct functions of an expression. For example, the average of 1, 1, 1, and 3 is 1.5; the DISTINCT average is 2. ALL causes a group function to consider all values, including duplicates.

All of the following group functions skip null values except COUNT(*). The datatype of the arguments may be character, number, or date where expr is listed.

Function (argument)
Description
AVG([DISTINCT|ALL]n)
Average value of n, ignoring null values.
COUNT([DISTINCT|ALL] expr)
Number of rows where expr is not null.
COUNT(*)
Number of rows in the table, including duplicates and those with nulls.
GLB([DISTINCT|ALL] label)
Returns the greatest lower bound of label.
LUB([DISTINCT|ALL] label)
Returns the least upper bound of label.
Additional Information: GLB and LUB return values of the MLSLABEL datatype. For more information about the GLB and LUB functions, refer to the Trusted Oracle8 Server Administrator's Guide.

Function (argument)
Description
MAX([DISTINCT|ALL] expr)
Maximum value of expr.
MIN([DISTINCT|ALL] expr)
Minimum value of expr.
STDDEV([DISTINCT|ALL]n)
Standard deviation of n, ignoring null values, based on an n-1 (sample) calculation.
SUM([DISTINCT|ALL] n)
Sum of values of n.
VARIANCE([DISTINCT|ALL] n)
Variance of n, ignoring null values.


Other functions Other functions

Query Builder also accepts these functions:

Function (argument)
Description
USER
Returns the name of the current Oracle user. Requires no arguments.
DECODE(expr,search1, replace1[,search2, replace2,] ... [default])
If expr equals any search, returns the following replace; if not, returns default. If default is omitted and there is no match, NULL is returned. expr may be any datatype; search must be the same type. The value returned is forced to the same datatype as the first return.
GREATEST(expr1,expr2,...)
Returns the greatest of a list of values. All expr after the expr1 are converted to the type of the expr1 before the comparison is done.
GREATEST_LB(label[,label] ...)
Returns the greatest lower bound of the list of labels. Each label must either have datatype MLSLABEL or RAW MLSLABEL or be a quoted literal in the default label format. The return value has the datatype RAW MLSLABEL.
LEAST(expr1,expr2,...)
Returns the least of a list of values. All expr after the expr1 are converted to the type of the expr1 before the comparison is done.
LEAST_UB(label[,label] ...)
Returns the least upper bound of the list of labels. Each label must have datatype MLSLABEL or be a quoted literal in the default label format. The return value has the datatype RAW MLSLABEL.
NVL(x,expr)
If x is null, returns expr; if x is not null, returns x. x and expr may be of any type. The type of the returned value is the same as the type of x.
Additional Information: For more information about the GREATEST_LB and LEAST_UB functions, refer to the Trusted Oracle8 Server Administrator's Guide.


Query Builder messages Query Builder messages Builder messages

Click a message range, then page using the browse buttons to find the message you are looking for.

BRW-15000 through BRW-15092

BRW-15093 through BRW-15146

BRW-15147 through BRW-15196

BRW-15197 through BRW-15390

BRW-15391 through BRW-15424

BRW-15430 through BRW-15520

BRW-15521 through BRW-15569

BRW-15570 through BRW-15912

BRW-15913 through BRW-16551

BRW-16552 through BRW-16660


BRW-15000: Internal error in Oracle Query Builder error handler BRW-15000: Internal error in Oracle Query Builder error handler

Cause:
Error handler couldn't be started.

Action: Contact Oracle Customer Support.


BRW-15001: <message number> BRW-15001: <message number>

Cause:
The message file could not be found or is incompatible with this version of Query Builder.

Action: Check the Query Builder directory in Oracle Home for the proper message file.


BRW-15002: Out of memory! BRW-15002: Out of memory!

Cause:
Out of memory.

Action: Save documents and restart Oracle Query Builder.


BRW-15003: Invalid file name: <name> BRW-15003: Invalid file name: <name>

Cause:
User entered an invalid file name (for example, too many characters).

Action: Enter a new, valid file name.


BRW-15004: Internal error (<value1>:<value2>) BRW-15004: Internal error (<value1>:<value2>)

Cause:
Internal Error Occurred--Oracle Query Builder is in an unreliable state.

Action: Contact Oracle Customer Support.


BRW-15005: No file name specified BRW-15005: No file name specified

Cause:
User did not enter a filename in the Export Data dialog box.

Action: Enter a filename.


BRW-15006: Unable to DESCRIBE data table BRW-15006: Unable to DESCRIBE data table

Cause:
Internal message.

Action: Contact Oracle Customer Support.


BRW-15007: SQL statement is too complex to display BRW-15007: SQL statement is too complex to display

Cause:
Exceeded the edit buffer size on MSWINDOWS.

Action: Exclude some columns from the query to reduce the SQL statement size.


BRW-15009: Insufficient privileges to log in through Oracle Query Builder BRW-15009: Insufficient privileges to log in through Oracle Query Builder

Cause:
Connect privileges are disabled in the SYSTEM.BROWSER_PROFILE table.

Action: Contact your DBA.


BRW-15065: Syntax error BRW-15065: Syntax error

Cause:
User typed a formula incorrectly.

Action: Re-type the expression.


BRW-15066: Expression is too complex BRW-15066: Expression is too complex

Cause:
Expression is too complex.

Action: Simplify the expression.


BRW-15068: Invalid function: <name> BRW-15068: Invalid function: <name>

Cause:
User entered an invalid function name.

Action: Specify a valid function.


BRW-15069: Invalid column: <name> BRW-15069: Invalid column: <name>

Cause:
User entered an invalid column name.

Action: Enter a valid column name.


BRW-15070: Invalid table: <name> BRW-15070: Invalid table: <name>

Cause:
User entered an invalid table name.

Action: Enter a valid table name.


BRW-15071: Invalid owner: <name> BRW-15071: Invalid owner: <name>

Cause:
User entered an invalid user or business area name.

Action: Enter a valid user or business area name.


BRW-15072: Invalid condition BRW-15072: Invalid condition

Cause:
User entered an invalid condition.

Action: Delete the condition and enter a valid condition.


BRW-15073: Invalid expression BRW-15073: Invalid expression

Cause:
User entered an invalid expression (usually blank).

Action: Enter a valid expression.


BRW-15074: Invalid use of reserved word <name> BRW-15074: Invalid use of reserved word <name>

Cause:
User used a reserved word as an identifier.

Action: Identifiers cannot be reserved words. Refer to the help or documentation for details.


BRW-15075: Invalid number of arguments to function <name> BRW-15075: Invalid number of arguments to function <name>

Cause:
User entered too few or too many arguments for the given function.

Action: Enter the appropriate arguments. Refer to the help or documentation for details.


BRW-15077: Ambiguous name: <name> BRW-15077: Ambiguous name: <name>

Cause:
User entered an ambiguous column name.

Action: Enter a specific column name. You may have to include qualifiers.


BRW-15078: Redefinition of name: <name> BRW-15078: Redefinition of name: <name>

Cause:
User redefined a column or data table using a name that already exists.

Action: Define the column or table using a new name.


BRW-15079: No columns selected in query BRW-15079: No columns selected in query

Cause:
Query was either built or entered with no displayed columns.

Action: Select columns before re-executing the query.


BRW-15080: No tables specified in query BRW-15080: No tables specified in query

Cause:
User entered a query without specifying any tables.

Action: Select tables before re-executing the query.


BRW-15081: START WITH requires CONNECT BY BRW-15081: START WITH requires CONNECT BY

Cause:
SQL statement contained a START WITH clause without a CONNECT BY clause.

Action: Specify a CONNECT BY clause if you intend to use START WITH.


BRW-15082: PRIOR requires CONNECT BY BRW-15082: PRIOR requires CONNECT BY

Cause:
SQL statement contained a PRIOR clause without a CONNECT BY clause.

Action: Specify a CONNECT BY clause if you intend to use PRIOR.


BRW-15083: Bad argument type to function <name> BRW-15083: Bad argument type to function <name>

Cause:
User entered the wrong argument type for the function.

Action: Enter the correct argument type.


BRW-15084: Unterminated comment BRW-15084: Unterminated comment

Cause:
Buffer being read in has an unterminated C-type comment in it.

Action: Edit the file (see that it terminates correctly) and reopen from Query Builder.


BRW-15085: Circular reference detected in defined column BRW-15085: Circular reference detected in defined column

Cause:
Modification of a defined column has led to a circular reference.

Action: Redefine the column so that it doesn't refer to itself in its own definition.


BRW-15086: Arguments to a correlated subquery function must be columns BRW-15086: Arguments to a correlated subquery function must be columns

Cause:
A complex argument was given, such as avg (sal, deptno*2).

Action: Specify only valid columns, not expressions, in the subquery.


BRW-15087: Invalid location: <name> BRW-15087: Invalid location: <name>

Cause:
User entered an invalid database location for a table.

Action: Enter a valid database location.


BRW-15088: Ambiguous table: <name> BRW-15088: Ambiguous table: <name>

Cause:
User entered an ambiguous data table name (more than one table uses this name).

Action: User must further qualify the data table. Refer to the help or documentation for details.


BRW-15089: Only one PRIOR operator allowed on an expression BRW-15089: Only one PRIOR operator allowed on an expression

Cause:
User typed 2 or more PRIOR clauses in an expression.

Action: Remove one of the PRIOR clauses.


BRW-15090: The name <name> is already in use BRW-15090: The name <name> is already in use

Cause:
User entered a name that was already being used.

Action: Enter a new name.


BRW-15091: Invalid name: <name> BRW-15091: Invalid name: <name>

Cause:
User entered an invalid name (with spaces or unprintable chars).

Action: Enter a new name.


BRW-15092: Bad usage of outer relationship BRW-15092: Bad usage of outer relationship

Cause:
User specified an outer relationship on a non-column element.

Action: Outer relationships are only valid for columns.


BRW-15093: Invalid number of elements in corresponding record BRW-15093: Invalid number of elements in corresponding record

Cause:
User entered two records with different numbers of elements.

Action: Re-enter the condition.


BRW-15094: Group function is nested too deeply BRW-15094: Group function is nested too deeply

Cause:
User entered a double(triple) aggregate condition(expression).

Action: Simplify aggregate condition/expression.


BRW-15096: Table name conflicts with <name1>, renamed to <name2> BRW-15096: Table name conflicts with <name1>, renamed to <name2>

Cause:
When opening a query, a table alias name conflicts with a new column.

Action: User can rename the alias.


BRW-15097: Name conflicts with <name1>, renamed to <name2> BRW-15097: Name conflicts with <name1>, renamed to <name2>

Cause:
When loading a saved query, an alias name conflicts with a new column.

Action: Rename the alias.


BRW-15098: Duplicate table <name> in FROM clause BRW-15098: Duplicate table <name> in FROM clause

Cause:
Data table appears more than once in FROM clause (without an alias).

Action: Remove the duplicate data tables in the FROM clause.


BRW-15099: Subquery returns incorrect number of values BRW-15099: Subquery returns incorrect number of values

Cause:
Subquery returns either too many or too few values.

Action: Re-enter the condition.


BRW-15100: Correlated expressions are not allowed here BRW-15100: Correlated expressions are not allowed here

Cause:
User entered a correlated expression outside a condition.

Action: Re-enter the condition/expression.


BRW-15101: Table alias cannot be reused in the same FROM clause: <name> BRW-15101: Table alias cannot be reused in the same FROM clause: <name>

Cause:
User tried to use an alias in the same FROM clause it was defined in.

Action: Remove the reference to the alias.


BRW-15102: Too many elements in record BRW-15102: Too many elements in record

Cause:
User entered a record with more than 254 elements.

Action: Reduce the number of elements--split the condition into an OR.


BRW-15103: Unnamed SELECT statement in FROM clause BRW-15103: Unnamed SELECT statement in FROM clause

Cause:
SQL contained a query in the FROM clause without name.

Action: Add the query name and reparse.


BRW-15110: Invalid number or precision exceeded: <column name> BRW-15110: Invalid number or precision exceeded: <column name>

Cause:
Non-numeric input or the number exceeded this column's precision.

Action: Re-enter a valid number and precision.


BRW-15111: Invalid date: <value> BRW-15111: Invalid date: <value>

Cause:
Couldn't format using the columns format mask or either default mask.

Action: Re-enter a valid format mask.


BRW-15112: Entry exceeds the size limit for this column: <##> BRW-15112: Entry exceeds the size limit for this column: <##>

Cause:
User entered a string longer than the limit for this column.

Action: Enter a shorter string.


BRW-15113: Not all parameters have been specified BRW-15113: Not all parameters have been specified

Cause:
User attempted to execute a query without defining all parameters

Action: Specify parameters or exclude parameterized expressions and retry.


BRW-15114: Parameters can only be constant expressions BRW-15114: Parameters can only be constant expressions

Cause:
User attempted to enter a parameter value that depended on a column value.

Action: Specify a valid parameter, one that does not depend on the value in a column.


BRW-151BRW-15: Bad usage of parameter <name> BRW-15115: Bad usage of parameter <name>

Cause:
User entered a parameter name for a column or table.

Action: Specify a valid parameter.


BRW-15116: Invalid parameter name <name> BRW-15116: Invalid parameter name <name>

Cause:
User entered an invalid parameter name.

Action: Specify a valid parameter name.


BRW-15117: Invalid parameter <name> BRW-15117: Invalid parameter <name>

Cause:
User entered an invalid parameter.

Action: Specify valid parameter.


BRW-15128: Parser internal error: <value> BRW-15128: Parser internal error: <value>

Cause:
Internal error in the parser/scanner.

Action: Contact Oracle Customer Support.


BRW-15129: Defined column <name> cannot be used in correlated subquery function BRW-15129: Defined column <name> cannot be used in correlated subquery function

Cause:
Use of derived columns (DQ4) in correlated subquery.

Action: Remove that argument from the correlated subquery.


BRW-15130: Query execution failed BRW-15130: Query execution failed

Cause:
Database access error.

Action: Check database error and rerun query.


BRW-15131: Invalid relational operator BRW-15131: Invalid relational operator

Cause:
User applied an invalid operator to a condition.

Action: Enter a valid operator.


BRW-15132: FROM clause was not found where expected BRW-15132: FROM clause was not found where expected

Cause:
Encountered no FROM clause or GROUP/HAVING clause before a FROM clause.

Action: Edit SQL statement.


BRW-15133: FROM clause was found without corresponding SELECT clause BRW-15133: FROM clause was found without corresponding SELECT clause

Cause:
Encountered FROM clause before SELECT clause.

Action: Edit SQL statement.


BRW-15135: Condition cannot be changed BRW-15135: Condition cannot be changed

Cause:
User attempted to change the top condition in Schema Editor.

Action: Perform the operation on the children conditions.


BRW-15136: SQL contains set operators BRW-15136: SQL contains set operators

Cause:
Set operations are not supported.

Action: Run the query in SQLPlus.


BRW-15137: Unable to generate names for complex expressions BRW-15137: Unable to generate names for complex expressions

Cause:
Encountered expressions without names when opening a SQL file.

Action: Define Names for columns in the .sql file.


BRW-15138: CONNECT BY clause existed, and was ignored BRW-15138: CONNECT BY clause existed, and was ignored

Cause:
Connect By is not supported at this (top) level.

Action: Run the query in SQLPlus, if results of CONNECT BY were desired.


BRW-15139: Cannot ungroup condition BRW-15139: Cannot ungroup condition

Cause:
Attempt to ungroup top condition.

Action: This operation is not supported.


BRW-15141: Query table cannot contain parameters BRW-15141: Query table cannot contain parameters

Cause:
Encountered one or more parameters when creating a view.

Action: Exclude parameters from query or ignore.


BRW-15142: Two or more columns have the same name: <name> BRW-15142: Two or more columns have the same name: <name>

Cause:
Encountered duplicate column names when creating view.

Action: Use the Define command to rename duplicate columns.


BRW-15143: <name> is already a display column BRW-15143: <name> is already a display column

Cause:
User tried to specify a duplicate display column.

Action: If duplicate column is desired, define a new name for it and re-display it.


BRW-15144: <name> is already a sort column BRW-15144: <name> is already a sort column

Cause:
User tried to specify a duplicate sort column.

Action: If duplicate column is desired, define a new name for it and re-sort.


BRW-15145: <name> is already a group column BRW-15145: <name> is already a group column

Cause:
User tried to specify a duplicate group column.

Action: If duplicate column is desired, define a new name for it and re-group.


BRW-15146: Internal error in opening query BRW-15146: Internal error in opening query

Cause:
Internal error in opening query.

Action: Contact Oracle Customer Support.


BRW-15147: Internal error in saving query BRW-15147: Internal error in saving query

Cause:
Internal error in saving query.

Action: Contact Oracle Customer Support.


BRW-15148: Relationship must be between compatible data types/size BRW-15148: Relationship must be between compatible data types/size

Cause:
User tried to relate two columns with incompatible data types.

Action: Relate only compatible datatypes. Refer to the help or documentation for details.


BRW-15150: Cannot define a self-relationship BRW-15150: Cannot define a self-relationship

Cause:
User tried to define a relationship within a data table.

Action: Alias the data table and then define the relationship.


BRW-15151: User-defined relationship already exists BRW-15151: User-defined relationship already exists

Cause:
User tried to define a relationship that already exists.

Action: No action required.


BRW-15152: Illegal column in defined relationship BRW-15152: Illegal column in defined relationship

Cause:
User specified an illegal expression when defining a relationship.

Action: Retype in a new column.


BRW-15153: Table alias name cannot end with _A<number> BRW-15153: Table alias name cannot end with _A<number>

Cause:
Illegal alias name.

Action: Input a new name that does not end with _A<number>.


BRW-15154: Cannot remove database relationship BRW-15154: Cannot remove database relationship

Cause:
User tried to remove data dictionary relationship.

Action: Only user-defined relationships can be deleted.


BRW-15155: The following documents may have been affected:<name> BRW-15155: The following documents may have been affected:<name>

Cause:
A saved query was being used as a data table in other query documents.

Action: If you change or delete this query, you will affect these other queries.


BRW-15156: Cannot include table with the same name as the query BRW-15156: Cannot include table with the same name as the query

Cause:
User attempted to include data table D in query document D.

Action: Rename the query before including this table.


BRW-15157: Cannot sort, group, or break on LONG columns BRW-15157: Cannot sort, group, or break on LONG columns

Cause:
Trying to sort, group or break on LONG column type.

Action: Cancel the operation. Oracle does not support this.


BRW-15158: Cannot sort, group, or break on RAW columns BRW-15158: Cannot sort, group, or break on RAW columns

Cause:
Trying to sort, group or break on RAW column type.

Action: Cancel the operation. Oracle does not support this.


BRW-15159: Cannot display LONG columns from remote databases BRW-15159: Cannot display LONG columns from remote databases

Cause:
Trying to include LONG column type from remote database data table.

Action: Cancel the operation. Oracle does not support this.


BRW-15160: Maximum number <##> of columns exceeded BRW-15160: Maximum number <##> of columns exceeded

Cause:
User exceeded maximum number of display/group/sort columns supported.

Action: Delete some unwanted columns, then re-include what you need.


BRW-15161: Error in opening <column name> display column(s) BRW-15161: Error in opening <column name> display column(s)

Cause:
Unable to open DISPLAY column because database has changed since save.

Action: This column may have changed or no longer exists in the database.


BRW-15162: Error in opening <column name> sort column(s) BRW-15162: Error in opening <column name> sort column(s)

Cause:
Unable to open SORT column because database has changed since save.

Action: This column may have changed or no longer exist in the database.


BRW-15163: Error in opening <column name> group column(s) BRW-15163: Error in opening <column name> group column(s)

Cause:
Unable to open GROUP column because database has changed since save.

Action: This column may have changed or no longer exist in the database.


BRW-15164: Error in opening <column name> break column(s) BRW-15164: Error in opening <column name> break column(s)

Cause:
Unable to open BREAK column because database has changed since save.

Action: This column may have changed or no longer exist in the database.


BRW-15165: Maximum number <##> of break columns exceeded BRW-15165: Maximum number <##> of break columns exceeded

Cause:
User exceeded the maximum number of break columns supported.

Action: Delete some unwanted break columns, then re-include what you need.


BRW-15166: Error in opening <value> condition(s) BRW-15166: Error in opening <value> condition(s)

Cause:
Unable to open conditions because database has changed since save.

Action: Tables or columns used in this condition may no longer exist in the database.


BRW-15167: Alias must be <##> bytes or less: <name> BRW-15167: Alias must be <##> bytes or less: <name>

Cause:
Alias name too long.

Action: Try typing in an alias less than or equal to 30 bytes long.


BRW-15168: Cannot group on aggregate expression BRW-15168: Cannot group on aggregate expression

Cause:
Tried to group on an aggregate expression.

Action: Group on another expression.


BRW-15169: <name> has already been included as a break column BRW-15169: <name> has already been included as a break column

Cause:
User tried to specify a duplicate break column.

Action: If duplicate column is desired, define a new name for it and re-break.


BRW-15170: Invalid Constraint for table <name> BRW-15170: Invalid Constraint for table <name>

Cause:
User entered an invalid constraint for the selected table.

Action: Reenter constraint.


BRW-15171: Invalid Constraint for table column <name> BRW-15171: Invalid Constraint for table column <name>

Cause:
User entered an invalid constraint for the selected column.

Action: Reenter constraint.


BRW-15172: Subqueries are not allowed in Constraints BRW-15172: Subqueries are not allowed in Constraints

Cause:
User entered an invalid constraint.

Action: Reenter constraint.


BRW-15173: Aggregate conditions are not allowed in Constraints BRW-15173: Aggregate conditions are not allowed in Constraints

Cause:
User entered an invalid constraint.

Action: Reenter constraint.


BRW-15174: Constraints can only be on one table BRW-15174: Constraints can only be on one table

Cause:
User entered an invalid constraint.

Action: Reenter constraint.


BRW-15175: Table not loaded because all columns are hidden BRW-15175: Table not loaded because all columns are hidden

Cause:
All columns are hidden. At least one column needs to be displayed.

Action: Use the Query Builder Administrator Utility to display hidden columns.


BRW-15188: Query returns 1 row BRW-15188: Query returns 1 row

Cause:
Status message for 1-row Query Count.

Action: No action required.


BRW-15189: Query returns <##> rows BRW-15189: Query returns <##> rows

Cause:
Status message for n-row Query Count.

Action: No action required.


BRW-15190: Unable to count without executing; Query returns <= <##> row(s) BRW-15190: Unable to count without executing; Query returns <= <##> row(s)

Cause:
Status message for n-row Query Count Distinct.

Action: No action required.


BRW-15192: Illegal format <name1> for column '<name2>' BRW-15192: Illegal format <name1> for column '<name2>'

Cause:
User typed an unrecognizable format for a display column.

Action: Try another format.


BRW-15193: Illegal format BRW-15193: Illegal format

Cause:
User typed an unrecognizable format for a display column

Action: Try another format.


BRW-15195: Incompatible column type in relationship: <name> BRW-15195: Incompatible column type in relationship: <name>

Cause:
Trying to create illegal relationship.

Action: Column types are incompatible. Refer to the help or documentation for details.


BRW-15196: Error in opening <name> table(s) BRW-15196: Error in opening <name> table(s)

Cause:
Unable to open data tables because database was modified or object doesn't exist.

Action: Check your connect string (or contact your DBA).


BRW-15197: Error in restoring position for <name> column(s) BRW-15197: Error in restoring position for <name> column(s)

Cause:
Unable to reposition column because database was modified or object doesn't exist.

Action: Check your connect string (or contact your DBA).


BRW-15198: Error in restoring join: <value> BRW-15198: Error in restoring join: <value>

Cause:
Unable to restore link during open because database was modified or object doesn't exist.

Action: Check your connect string (or contact your DBA).


BRW-15199: Error in restoring inclusion state for join: <value> BRW-15199: Error in restoring inclusion state for join: <value>

Cause:
Unable to set the inclusion state during open because database was modified or object doesn't exist.

Action: Check your connect string (or contact your DBA).


BRW-15200: Error in restoring outer join state for join: <value> BRW-15200: Error in restoring outer join state for join: <value>

Cause:
Unable to set the outer join during open because database was modified or object doesn't exist.

Action: Check your connect string (or contact your DBA).


BRW-15258: Invalid document name: <name> BRW-15258: Invalid document name: <name>

Cause:
User entered an invalid document name.

Action: Enter a valid document name.


BRW-15259: Document exceeds 64K size limit BRW-15259: Document exceeds 64K size limit

Cause:
User attempted to save/open a document larger than 64K.

Action: Reduce size of document.


BRW-15260: Document <name> does not exist BRW-15260: Document <name> does not exist

Cause:
User specified a nonexistent document.

Action: Specify another document.


BRW-15261: Document <name> already exists BRW-15261: Document <name> already exists

Cause:
User tried to save under the name of an existing document.

Action: Specify another document name or delete the existing document.


BRW-15262: Multiple documents named <name> BRW-15262: Multiple documents named <name>

Cause:
Multiple documents with same name exist.

Action: Delete all but one.


BRW-15263: Database object <name> already exists BRW-15263: Database object <name> already exists

Cause:
User tried to save under the name of an existing object.

Action: Specify another document name.


BRW-15264: Table <name> does not exist BRW-15264: Table <name> does not exist

Cause:
View corresponding to a saved document has been removed.

Action: Re-save the document (it no longer exists as a query view).


BRW-15265: Table <name> has been removed or modified BRW-15265: Table <name> has been removed or modified

Cause:
Data Table view corresponding to a saved document has been modified.

Action: Re-save the document.


BRW-15266: File <name> does not exist BRW-15266: File <name> does not exist

Cause:
User specified a nonexistent file.

Action: Specify another file.


BRW-15267: File <name> already exists BRW-15267: File <name> already exists

Cause:
User tried to save under the name of an existing file.

Action: Specify another file name.


BRW-15268: Unable to open file <name> BRW-15268: Unable to open file <name>

Cause:
I/O core was unable to open a file.

Action: Specify another file.


BRW-15269: Unable to lock file <name> BRW-15269: Unable to lock file <name>

Cause:
I/O core was unable to lock a file.

Action: Specify another file.


BRW-15270: Error reading file <name> BRW-15270: Error reading file <name>

Cause:
Operating system error or file was not of the correct format.

Action: Specify another file.


BRW-15271: Error writing file <name> BRW-15271: Error writing file <name>

Cause:
Operating system error or I/O core error.

Action: Retry operation.


BRW-15272: Obsolete Oracle Query Builder document <name> BRW-15272: Obsolete Oracle Query Builder document <name>

Cause:
User attempted to open an old unsupported document.

Action: Specify another document.


BRW-15273: File <name> is not a Oracle Query Builder file BRW-15273: File <name> is not a Oracle Query Builder file

Cause:
User attempted to open a non-Query Builder file.

Action: Specify another file to open.


BRW-15274: File <name> is not a valid SQL file BRW-15274: File <name> is not a valid SQL file

Cause:
User attempted to import an invalid SQL file.

Action: Specify another file to import.


BRW-15275: No data to export or print BRW-15275: No data to export or print

Cause:
User attempted to export or print a query (or region) with no data.

Action: Specify another region; execute query; change query.


BRW-15277: Unable to overwrite current table <name> BRW-15277: Unable to overwrite current table <name>

Cause:
Error in trying to delete/rename old data table in save.

Action: Fix problem with data table and re-save.


BRW-15278: Document saved, but view <name> could not be created BRW-15278: Document saved, but view <name> could not be created

Cause:
The query is not a valid view. It has been saved, but not as a database view.

Action: Redefine query as a valid view, or ignore (query will be saved, but not as a view).


BRW-15279: '<name>' is not a recognized SQL literal BRW-15279: '<name>' is not a recognized SQL literal

Cause:
User attempted to import a non-SQLPlus file.

Action: Specify another file to import.


BRW-15320: Internal I/O core error (<value>, line <##>) BRW-15320: Internal I/O core error (<value>, line <##>)

Cause:
Internal State is invalid.

Action: Contact Oracle Customer Support.


BRW-15321: Resource not found (<name>). BRW-15321: Resource not found (<name>).

Cause:
Resource names do not match Query Builder code (or file is corrupted).

Action: Get a correct version of the Query Builder resource file.


BRW-15322: Resource file not found. BRW-15322: Resource file not found.

Cause:
directory structure incorrect, or file is missing for some reason.

Action: Locate the resource file (check NLS_LANG file name).


BRW-15323: Query already open in current application (<name>) BRW-15323: Query already open in current application (<name>)

Cause:
User attempted to open multiple queries with the same name.

Action: Specify another file.


BRW-15324: Unable to start up windowing system BRW-15324: Unable to start up windowing system

Cause:
Incorrect/missing environment variables (e.g. DISPLAY, APIPATH).

Action: All required environment variables must be set correctly.


BRW-15342: Unable to find snapshot information BRW-15342: Unable to find snapshot information

Cause:
This database does not support snapshots (or database error).

Action: Check that you have a snapshot dictionary table.


BRW-15387: Login failed BRW-15387: Login failed

Cause:
Database or SQLNet error occurred.

Action: Check the login information and try again.


BRW-15388: Unable to load database relationships BRW-15388: Unable to load database relationships

Cause:
Schema internal error in loading database relationships.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15389: Unable to load list of accessible owners BRW-15389: Unable to load list of accessible owners

Cause:
Schema internal error in loading list of accessible owners.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15390: Unable to load list of accessible tables BRW-15390: Unable to load list of accessible tables

Cause:
Schema internal error in loading list of data tables.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15391: Unable to load table BRW-15391: Unable to load table

Cause: Schema internal error in loading data table.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15392: Unable to load table BRW-15392: Unable to load table

Cause:
Schema internal error in loading table.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15393: Unable to load synonym BRW-15393: Unable to load synonym

Cause:
Schema internal error in loading synonym.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15394: Unable to load query BRW-15394: Unable to load query

Cause:
Schema internal error in loading query.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15395: Unable to load table column information BRW-15395: Unable to load table column information

Cause:
Schema internal error in loading column information.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15396: Unable to load synonym column information BRW-15396: Unable to load synonym column information

Cause:
Schema internal error in loading synonym column information.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15397: Unable to load constraints BRW-15397: Unable to load constraints

Cause:
Schema internal error in loading constraints.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15398: Unable to find primary key information BRW-15398: Unable to find primary key information

Cause:
Schema internal error in finding primary keys.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15399: Unable to find foreign key information BRW-15399: Unable to find foreign key information

Cause:
Schema internal error in finding foreign keys.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15400: Unable to load table and column comments BRW-15400: Unable to load table and column comments

Cause:
Schema internal error in getting comments.

Action: Contact Oracle Customer Support if this is not expected.


BRW-15401: Error in loading database link <name> BRW-15401: Error in loading database link <name>

Cause:
Schema internal error in loading database link.

Action: Refer to accompanying error messages for more information.


BRW-15402: Error in loading owner <name> BRW-15402: Error in loading owner <name>

Cause:
Schema internal error in loading database link.

Action: Refer to accompanying error messages for more information.


BRW-15403: Error in loading table <name> BRW-15403: Error in loading table <name>

Cause:
Schema internal error in loading data table.

Action: Refer to accompanying error messages for more information.


BRW-15404: Error in loading primary key constraint for <name> (<value>) BRW-15404: Error in loading primary key constraint for <name> (<value>)

Cause:
Schema internal error in loading primary constraint.

Action: Refer to accompanying error messages for more information.


BRW-15405: Error in loading foreign key constraint <name> BRW-15405: Error in loading foreign key constraint <name>

Cause:
Schema internal error in loading foreign constraint.

Action: Refer to accompanying error messages for more information.


BRW-15406: Error in loading synonym <name> BRW-15406: Error in loading synonym <name>

Cause:
Schema internal error in loading primary constraint.

Action: Refer to accompanying error messages for more information.


BRW-15407: Table referred to by synonym <name> no longer exists BRW-15407: Table referred to by synonym <name> no longer exists

Cause:
User tried to create a synonym for a nonexistent data table.

Action: Recreate the synonym.


BRW-15408: Error in loading column information for <name> BRW-15408: Error in loading column information for <name>

Cause:
Oracle error or the data table has been removed.

Action: Recreate the data table.


BRW-15409: Error in loading constraint information for <name> (<value>) BRW-15409: Error in loading constraint information for <name> (<value>)

Cause:
Oracle error.

Action: Try it again.


BRW-15410: Table that foreign key <name> (<value>) refers to is inaccessible BRW-15410: Table that foreign key <name> (<value>) refers to is inaccessible

Cause:
The table that the foreign key refers to is inaccessible.

Action: Grant the table to the current user.


BRW-15411: Logout failed BRW-15411: Logout failed

Cause:
Internal error in logging out.

Action: Exit or close the document.


BRW-15412: Table of query <name> was modified. Query loaded as view. BRW-15412: Table of query <name> was modified. Query loaded as view.

Cause:
The view that the query depends on has been modified after the last save.

Action: Open the query and save it again to use it as a data table.


BRW-15413: Table of query <name> was removed. Query will not be loaded. BRW-15413: Table of query <name> was removed. Query will not be loaded.

Cause:
The view that the query depends on has been removed.

Action: Open the query, and save it again to use it as a data table.


BRW-15414: Table <name> no longer exists BRW-15414: Table <name> no longer exists

Cause:
This data table no longer exists in the database.

Action: Contact system administrator if you need this table.


BRW-154BRW-15: Maximum number (254) of table columns exceeded BRW-154BRW-15: Maximum number (254) of table columns exceeded

Cause:
User tried to load a data table that has more than 254 columns.

Action: Contact system administrator.


BRW-15416: Maximum number (8192) of tables per user exceeded BRW-15416: Maximum number (8192) of tables per user exceeded

Cause:
User owns too many data tables.

Action: Contact system administrator.


BRW-15417: Maximum number (1024) of owners and databases exceeded BRW-15417: Maximum number (1024) of owners and databases exceeded

Cause:
User tried to load too many user, owner, and database links.

Action: Contact system administrator.


BRW-15418: Unable to find database link information BRW-15418: Unable to find database link information

Cause:
This database does not support database link, or database error.

Action: Try again later if this is unexpected.


BRW-15419: Unable to find synonym information BRW-15419: Unable to find synonym information

Cause:
This database does not support synonyms, or database error.

Action: Try again later if this is unexpected.


BRW-15420: Unable to find constraint information BRW-15420: Unable to find constraint information

Cause:
This database does not support constraints, or database error.

Action: Try again later if this is unexpected.


BRW-15421: Unable to find table comment table BRW-15421: Unable to find table comment table

Cause:
This database does not support comments on table, or database error.

Action: Try again later if this is unexpected.


BRW-15422: Unable to find table Column comments table BRW-15422: Unable to find table Column comments table

Cause:
This database does not support comments on column, or database error.

Action: Try again later if this is unexpected.


BRW-15423: Synonym to SEQUENCE is not currently supported BRW-15423: Synonym to SEQUENCE is not currently supported

Cause:
User tried to load a synonym that refers to a sequence.

Action: This action is not supported.


BRW-15424: Maximum number of login attempts (3) exceeded BRW-15424: Maximum number of login attempts (3) exceeded

Cause:
User tried to login too many times.

Action: Contact system administrator for correct username, password, and/or connect string.


BRW-15430: Index information not loaded BRW-15430: Index information not loaded

Cause:
Cannot find index table.

Action: This is a non-Oracle database; try an ODBC driver.


BRW-15434: Maximum columns in table is <##> BRW-15434: Maximum columns in table is <##>

Cause:
User tried to create more than the maximum number of allowed columns in a table.

Action: Create fewer columns.


BRW-15435: DBA privilege is needed to perform this operation BRW-15435: DBA privilege is needed to perform this operation

Cause:
Need DBA privileges.

Action: Ask your system administrator to grant you DBA privilege.


BRW-15447: Cannot remove Query. Use File Delete... from Query window BRW-15447: Cannot remove Query. Use File Delete... from Query window

Cause:
User tried to remove a query.

Action: This is not legal from the Schema Editor. Use the Query window instead.


BRW-15448: Cannot copy Query. Use File Save As... from Query window BRW-15448: Cannot copy Query. Use File Save As... from Query window

Cause:
User tried to copy a query.

Action: This is not legal from the Schema Editor. Use the Query window instead.


BRW-15449: Cannot copy with data from table with only LONG columns BRW-15449: Cannot copy with data from table with only LONG columns

Cause:
User tried to copy a table with a LONG column.

Action: Database doesn't support this.


BRW-15450: Operation not allowed on removed table BRW-15450: Operation not allowed on removed table

Cause:
User tried to do something to a removed data table.

Action: Undo the remove first.


BRW-15451: Operation not allowed on removed column BRW-15451: Operation not allowed on removed column

Cause:
User tried to do something to a removed column.

Action: Undo the remove first.


BRW-15452: Cannot rename another owner's table BRW-15452: Cannot rename another owner's table

Cause:
User tried to set the name of a granted data table.

Action: This is not allowed. Ask the owner to do it for you.


BRW-15466: Table name too long (Max <##> bytes) BRW-15466: Table name too long (Max <##> bytes)

Cause:
Data Table name to long.

Action: Shorten the name and try again.


BRW-15467: Name already in use. Please choose another name. BRW-15467: Name already in use. Please choose another name.

Cause:
Name already in use.

Action: Choose another name.


BRW-15468: Column name too long (Max <##> bytes) BRW-15468: Column name too long (Max <##> bytes)

Cause:
Column name too long.

Action: Shorten the name and try again.


BRW-15493: Operation currently not supported BRW-15493: Operation currently not supported

Cause:
Internal error.

Action: Contact Oracle Customer Support.


BRW-15494: Error in loading SQL text of views BRW-15494: Error in loading SQL text of views

Cause:
Internal error.

Action: Contact Oracle Customer Support.


BRW-15495: Error in loading SQL text for view <name> BRW-15495: Error in loading SQL text for view <name>

Cause:
Internal error.

Action: Contact Oracle Customer Support.


BRW-15496: Scale must be between <##> and <##> BRW-15496: Scale must be between <##> and <##>

Cause:
Illegal value for scale.

Action: Input legal value for scale.


BRW-15498: Cannot modify a query BRW-15498: Cannot modify a query

Cause:
It is not legal to modify a query.

Action: Open the query and modify it as a Query Builder document.


BRW-15499: Cannot set column attributes of table duplicated with data BRW-15499: Cannot set column attributes of table duplicated with data

Cause:
User tried to set the column type of a table duplicated with data.

Action: First commit the table then try again.


BRW-15501: No more application virtual memory BRW-15501: No more application virtual memory

Cause:
No more disk space or system memory for Virtual Memory Manager.

Action: Close a document or make some room on your disk.


BRW-15502: Can only have <##> rows per document BRW-15502: Can only have <##> rows per document

Cause:
Exceeded self-imposed, compile-time row maximum.

Action: Consider adding conditions to the query.


BRW-15504: Unable to determine database character set BRW-15504: Unable to determine database character set

Cause:
There was a problem with SELECT USERENV('LANGUAGE') FROM DUAL.

Action: Non-Oracle database--not supported.


BRW-15505: Unable to open virtual memory file BRW-15505: Unable to open virtual memory file

Cause:
No write permission or file system full.

Action: Change permission on directory or delete some files.


BRW-15506: Unable to close virtual memory file BRW-15506: Unable to close virtual memory file

Cause:
Operating system error.

Action: Ask system administrator for assistance.


BRW-15507: Unable to read from virtual memory file BRW-15507: Unable to read from virtual memory file

Cause:
Virtual memory file does not exist.

Action: Make sure the virtual memory file is opened.


BRW-15508: Unable to write to virtual memory file BRW-15508: Unable to write to virtual memory file

Cause:
File system is full, or virtual memory file was not opened.

Action: Delete some files. Make sure virtual memory file is opened.


BRW-15509: Unable to create virtual memory manager BRW-15509: Unable to create virtual memory manager

Cause:
Internal error, or out of memory.

Action: Ask system administrator for assistance.


BRW-15511: Maximum virtual memory size exceeded BRW-15511: Maximum virtual memory size exceeded

Cause:
User input is too big for virtual memory size.

Action: Try again.


BRW-15513: Null value in command '<name>' BRW-15513: Null value in command '<name>'

Cause:
User entered <command>= on the command line with no option selected.

Action: Add a value for <command>.


BRW-15514: Null command in command line BRW-15514: Null command in command line

Cause:
User entered =<value> at command line but didn't specify a command.

Action: Add the command.


BRW-155BRW-15: Unrecognized command '<name>' in command line BRW-155BRW-15: Unrecognized command '<name>' in command line

Cause:
User entered an illegal command at command line.

Action: Change command.


BRW-15516: Command '<name>' specified twice in command line BRW-15516: Command '<name>' specified twice in command line

Cause:
User entered a command twice at command line.

Action: Remove one.


BRW-15517: Incompatible commands '<name1>' and '<name2>' specified BRW-15517: Incompatible commands '<name1>' and '<name2>' specified

Cause:
User entered 2 incompatible commands at command line.

Action: Remove one.


BRW-15518: Invalid option '<name1>' in command '<name2>' BRW-15518: Invalid option '<name1>' in command '<name2>'

Cause:
User entered an illegal option to a command at command line.

Action: Change option.


BRW-15519: Multiple login specifications in command line BRW-15519: Multiple login specifications in command line

Cause:
User entered 2 login specifications at command line.

Action: Remove one.


BRW-15520: Invalid document name '<name>' in command line BRW-15520: Invalid document name '<name>' in command line

Cause:
User entered an illegal document name at command line.

Action: Change document name.


BRW-15521: '<name>' command specified without a document BRW-15521: '<name>' command specified without a document

Cause:
User entered a command without specifying a document at command line.

Action: Add missing document.


BRW-15522: '<name1>' command specified without '<name2>' BRW-15522: '<name1>' command specified without '<name2>'

Cause:
User entered a command without another required command.

Action: Add missing command.


BRW-15523: Mismatched parentheses in '<name>' command BRW-15523: Mismatched parentheses in '<name>' command

Cause:
User entered mismatched parentheses in the command line.

Action: Correct mismatched parentheses.


BRW-15530: Cannot edit a deleted row BRW-15530: Cannot edit a deleted row

Cause:
User tried to edit a row which is marked for deletion.

Action: Undelete the row first.


BRW-15531: Row has been deleted from the database BRW-15531: Row has been deleted from the database

Cause:
Another user deleted this row since you last ran the query.

Action: Contact Oracle Customer Support. This should never happen.


BRW-15532: Row has been modified by another user. Requery. BRW-15532: Row has been modified by another user. Requery.

Cause:
Another user updated this row since you last ran the query.

Action: Try again.


BRW-15533: Row is currently locked by another user. BRW-15533: Row is currently locked by another user.

Cause:
Someone else is editing this row.

Action: Try again later.


BRW-15539: Error in inserting <##> row(s) BRW-15539: Error in inserting <##> row(s)

Cause:
One or more rows in input file failed on insert.

Action: Modify input file or ignore.


BRW-15540: Operation not allowed on data of this type BRW-15540: Operation not allowed on data of this type

Cause:
User tried to edit a cell with data of an uneditable type.

Action: Unknown.


BRW-15541: Too many edited rows. Please select Commit BRW-15541: Too many edited rows. Please select Commit

Cause:
Too many pending INSERTS, UPDATES or DELETES in a document.

Action: Select Commit or Revert.


BRW-15545: Error in reading QXF file. Parsing halted. BRW-15545: Error in reading QXF file. Parsing halted.

Cause:
Syntax error in reading QXF file.

Action: Fix QXF file.


BRW-15546: Parse Error: Line <##> BRW-15546: Parse Error: Line <##>

Cause:
Incorrect syntax at that particular line.

Action: Debug that line.


BRW-15547: Operator unspecified in relationship block. BRW-15547: Operator unspecified in relationship block.

Cause:
Operator unspecified in relationship block in QXF File.

Action: Specify an operator field within the block.


BRW-15548: Error: Argument missing in <name> of relationship block. BRW-15548: Error: Argument missing in <name> of relationship block.

Cause:
No argument in a column field in a relationship block.

Action: Specify the column name in that field.


BRW-15549: CONDITION_TEXT missing within condition block. BRW-15549: CONDITION_TEXT missing within condition block.

Cause:
No argument in the CONDITION_TEXT field within condition block.

Action: Specify the CONDITION_TEXT field.


BRW-15550: Illegal INCLUSION_ORDER value (<name1>) in expression '<name2>'. BRW-15550: Illegal INCLUSION_ORDER value (<name1>) in expression '<name2>'.

Cause:
Illegal INCLUSION_ORDER value in expression.

Action: Correct INCLUSION_ORDER value.


BRW-15551: Expression '<name>' included but INCLUSION_ORDER unspecified. BRW-15551: Expression '<name>' included but INCLUSION_ORDER unspecified.

Cause:
The INCLUSION_ORDER unspecified for an included expression block.

Action: Specify the INCLUSION_ORDER field.


BRW-15552: Expression '<name>' not included but INCLUSION_ORDER is non-null BRW-15552: Expression '<name>' not included but INCLUSION_ORDER is non-null

Cause:
Expression is not included (INCLUDED = FALSE) but INCLUSION_ORDER is non-null.

Action: Correct the values in these fields.


BRW-15553: Error: Empty TEXT string in expression '<name>'. BRW-15553: Error: Empty TEXT string in expression '<name>'.

Cause:
The TEXT string is unspecified within a QXF expression block.

Action: Specify the TEXT string.


BRW-15554: Error: SORT_PRIORITY unspecified for sorted expression '<name>'. BRW-15554: Error: SORT_PRIORITY unspecified for sorted expression '<name>'.

Cause:
SORT_PRIORITY unspecified for sorted expression.

Action: Specify the SORT_PRIORITY.


BRW-15555: Illegal INCLUSION_ORDER value for field '<name1>'in table '<name2>'. BRW-15555: Illegal INCLUSION_ORDER value for field '<name1>'in table '<name2>'.

Cause:
Illegal INCLUSION_ORDER value for field.

Action: Correct the INCLUSION_ORDER value.


BRW-15556: Field '<name1>' in table '<name2>' included but INCLUSION_ORDER is null. BRW-15556: Field '<name1>' in table '<name2>' included but INCLUSION_ORDER is null.

Cause:
Field is included (INCLUDED = FALSE) but INCLUSION_ORDER is unspecified.

Action: Correct the values in these fields.


BRW-15557: Field '<name1>' (table '<name2>') excluded but INCLUSION_ORDER exists. BRW-15557: Field '<name1>' (table '<name2>') excluded but INCLUSION_ORDER exists.

Cause:
The field in specified data table is not included but the INCLUSION_ORDER is non-null.

Action: Correct the values in these fields.


BRW-15558: SORT_PRIORITY unspecified for sorted field '<name1>' in table '<name2>'. BRW-15558: SORT_PRIORITY unspecified for sorted field '<name1>' in table '<name2>'.

Cause:
SORT_PRIORITY unspecified for a sorted field.

Action: Specify the SORT_PRIORITY for that field.


BRW-15559: Error: Illegal value '<name1>' for INCLUSION_ORDER in table '<name2>'. BRW-15559: Error: Illegal value '<name1>' for INCLUSION_ORDER in table '<name2>'.

Cause:
A negative value in inclusion order.

Action: Correct that value.


BRW-15560: Table '<name>' included but INCLUSION_ORDER unspecified. BRW-15560: Table '<name>' included but INCLUSION_ORDER unspecified.

Cause:
Data Table included (INCLUDED = TRUE) but INCLUSION_ORDER is unspecified.

Action: Correct the values in these fields.


BRW-15561: Table '<name>' is excluded but INCLUSION_ORDER is non-null. BRW-15561: Table '<name>' is excluded but INCLUSION_ORDER is non-null.

Cause:
Data Table not included (INCLUDED = FALSE) but INCLUSION_ORDER is non-null.

Action: Correct the values in these fields.


BRW-15562: Error: There should be no more than one main condition block. BRW-15562: Error: There should be no more than one main condition block.

Cause:
There are more than one main (root) condition blocks.

Action: Eliminate some condition blocks, or use a conjunction.


BRW-15563: Error: QXF file version 1.0 expected. BRW-15563: Error: QXF file version 1.0 expected.

Cause:
Illegal version number specified in VERSION field.

Action: Modify the version.


BRW-15564: Parse Error: Line <##>: Invalid font style '<name>'. BRW-15564: Parse Error: Line <##>: Invalid font style '<name>'.

Cause:
Invalid font style.

Action: Check font style and correct it.


BRW-15565: Parse Error: Line <##>: Invalid font style argument. BRW-15565: Parse Error: Line <##>: Invalid font style argument.

Cause:
Invalid font style argument.

Action: Check font style strings and correct them.


BRW-15566: Parse Error: Line <##>: Invalid aggregate function '<name>' BRW-15566: Parse Error: Line <##>: Invalid aggregate function '<name>'

Cause:
Invalid aggregate function name.

Action: Correct the function name.


BRW-15567: Parse Error: Line <##>: Invalid summarize argument. BRW-15567: Parse Error: Line <##>: Invalid summarize argument.

Cause:
Invalid summarize field argument.

Action: Correct the field argument.


BRW-15568: Parse Error: Line <##>: Invalid field argument. BRW-15568: Parse Error: Line <##>: Invalid field argument.

Cause:
Invalid field argument.

Action: Correct field argument.


BRW-15569: Warning: QXF file is only partially loaded because of error. BRW-15569: Warning: QXF file is only partially loaded because of error.

Cause:
Error in loading QXF file.

Action: Correct those errors.


BRW-15570: Parse Error: Line <##>: Invalid operator '<name>' in relationship block. BRW-15570: Parse Error: Line <##>: Invalid operator '<name>' in relationship block.

Cause:
Invalid Operator within relationship block.

Action: Check operator and correct it.


BRW-15571: Parse Error: Line <##>: Invalid operator field argument. BRW-15571: Parse Error: Line <##>: Invalid operator field argument.

Cause:
Invalid Object ID within Derived Item Expression.

Action: Correct Object ID in dictionary.


BRW-15572: Inconsistent object IDs in derived item expression. BRW-15572: Inconsistent object IDs in derived item expression.

Cause:
Invalid operator field argument within relationship block.

Action: Check operator strings and correct them.


BRW-15580: Unable to load list of accessible business areas BRW-15580: Unable to load list of accessible business areas

Cause:
End User Layer is missing business area tables.

Action: Reinstall End User Layer. Ask system administrator for assistance.


BRW-15581: Cannot add columns to table created with duplicate data BRW-15581: Cannot add columns to table created with duplicate data

Cause:
User tried to add columns to a table created with duplicate table data.

Action: Commit the duplicate table then try again.


BRW-15582: New or duplicate table is only allowed on existing table. BRW-15582: New or duplicate table is only allowed on existing table.

Cause:
Create new table on another new/duplicate/modified table.

Action: Commit the new/duplicate/modified table first.


BRW-15583: Index requires at least one column BRW-15583: Index requires at least one column

Cause:
User tried to remove the last column of an index.

Action: Add other columns then remove.


BRW-15584: Column <name> is of type LONG and will not be copied BRW-15584: Column <name> is of type LONG and will not be copied

Cause:
Cannot copy a LONG column when creating a snapshot.

Action: Column cannot be copied.


BRW-15600: Syntax not supported BRW-15600: Syntax not supported

Cause:
Attempted to parse unsupported syntax.

Action: Use alternate Oracle 8 syntax.


BRW-15601: Invalid Oracle 8 SQL syntax BRW-15601: Invalid Oracle 8 SQL syntax

Cause:
Cannot use Oracle 8 language syntax.

Action: Use Oracle 7 SQL.


BRW-15602: Type Constructor in Oracle 8 SQL is not supported BRW-15602: Type Constructor in Oracle 8 SQL is not supported

Cause:
Oracle 8 SQL’s type constructors are not supported.

Action: Revert to Oracle 7.


BRW-15603: REF in Oracle 8 SQL is not supported BRW-15603: REF in Oracle 8 SQL is not supported

Cause:
Oracle 8 SQL’s REF is not supported.

Action: Use Oracle 7 instead.


BRW-15604: CAST in Oracle 8 SQL is not supported BRW-15604: CAST in Oracle 8 SQL is not supported

Cause:
Oracle 8 SQL’s CAST is not supported.

Action: Use Oracle 7 instead.


BRW-15605: MULTISET in Oracle 8 SQL is not supported. BRW-15605: MULTISET in Oracle 8 SQL is not supported.

Cause:
Oracle 8 SQL’s MULTISET is not supported.

Action: Use Oracle 7 instead.


BRW-15606: METHODS in Oracle 8 SQL are not supported. BRW-15606: METHODS in Oracle 8 SQL are not supported.

Cause:
Oracle 8 SQL’s METHODS are not supported.

Action: Use Oracle 7 instead.


BRW-15607: THE subquery in Oracle 8 SQL is not supported BRW-15607: THE subquery in Oracle 8 SQL is not supported

Cause:
Oracle 8 SQL’s THE subquery is not supported.

Action: Use Oracle 7 instead.


BRW-15608: PARTITION of tables in Oracle 8 SQL is not supported BRW-15608: PARTITION of tables in Oracle 8 SQL is not supported

Cause:
Oracle 8 SQL’s PARTITION of tables is not supported.

Action: Use Oracle 7 instead.


BRW-15609: The TABLE keyword in a subquery in Oracle 8 SQL is not supported BRW-15609: The TABLE keyword in a subquery in Oracle 8 SQL is not supported

Cause:
TABLE keyword in subquery is not supported.

Action: Use Oracle 7 instead.


BRW-15610: Rename the Table as a Table Alias BRW-15610: Rename the Table as a Table Alias

Cause:
Attempted to use a table instead of a table alias/

Action: Rename the table with a table alias.


BRW-15641: Help system initialization failed. Help will be unavailable. BRW-15641: Help system initialization failed. Help will be unavailable.

Cause:
Unable to locate help document or help resource file.

Action: User may continue but help menu is unavailable. Use online or paper documentation.


BRW-15643: Resource file not found (<name>), trying default resource file. BRW-15643: Resource file not found (<name>), trying default resource file.

Cause:
NLS_LANG set but file not found.

Action: Try to open the resource file using the default language.


BRW-15644: Unable to locate help document (<name>), trying default help document. BRW-15644: Unable to locate help document (<name>), trying default help document.

Cause:
NLS_LANG set but file not found.

Action: Try to open the help doc using the default language.


BRW-15647: Unable to locate help document BRW-15647: Unable to locate help document

Cause:
Couldn't find help file in correct directory with correct language.

Action: Check Query Builder directory structure. Make sure NLS_LANG is set correctly.


BRW-15648: Help system creation error BRW-15648: Help system creation error

Cause:
Help system couldn't start up.

Action: Query Builder couldn't find the help resource file, or NLS_LANG is not set, or memory is low.


BRW-15649: Input for <name> was too low. Minimum valid number is <##>. BRW-15649: Input for <name> was too low. Minimum valid number is <##>.

Cause:
The value input was too low.

Action: Try again with a higher value.


BRW-15650: Input for <name> was too high. Maximum valid number is <##>. BRW-15650: Input for <name> was too high. Maximum valid number is <##>.

Cause:
The value input was too high.

Action: Try again with a lower value.


BRW-15651: Input for <name> was out of range. Must be between <##> and <##>. BRW-15651: Input for <name> was out of range. Must be between <##> and <##>.

Cause:
The value input was out of the valid range.

Action: Try again with a valid number.


BRW-15652: Value was reset to <value>. BRW-15652: Value was reset to <value>.

Cause:
The value input was changed because it was out of the valid range.

Action: Try again with a valid number or Query Builder will use the value shown.


BRW-15653: Pref file error: Value <value> was too low. Minimum valid number is <##>. BRW-15653: Pref file error: Value <value> was too low. Minimum valid number is <##>.

Cause:
The value input was too low.

Action: Try again with a higher value.


BRW-15654: Pref file error: Value <value> was too high. Maximum valid number is <##>. BRW-15654: Pref file error: Value <value> was too high. Maximum valid number is <##>.

Cause:
The value input was too high.

Action: Try again with a lower value.


BRW-15655: Pref file error: Value <value> out of range. Must be between <##> and <##>. BRW-15655: Pref file error: Value <value> out of range. Must be between <##> and <##>.

Cause:
The value input was out of the valid range.

Action: Try again with a valid number.


BRW-15656: Pref file error: Value for <value> not recognized BRW-15656: Pref file error: Value for <value> not recognized

Cause:
The value set in the preference file was invalid.

Action: Try again with a valid number.


BRW-15657: Value for OWNERLIST=NAME must contain at least one name BRW-15657: Value for OWNERLIST=NAME must contain at least one name

Cause:
The value for OWNERLIST=NAME was NULL.

Action: Try again with a valid name


BRW-15900: Unable to find time period information BRW-15900: Unable to find time period information

Cause:
This database does not support time periods, or database error.

Action: Try again later if this is unexpected.


BRW-15901: Table <name1> referred to by object <name2> no longer exists BRW-15901: Table <name1> referred to by object <name2> no longer exists

Cause:
Base data source of object has been removed.

Action: Refresh/delete object.


BRW-15902: Table referred to by object <name> no longer exists BRW-15902: Table referred to by object <name> no longer exists

Cause:
Base data source of object has been removed.

Action: Refresh/delete object.


BRW-15903: Opposite table <name> is not in a business area. Join info inaccessible. BRW-15903: Opposite table <name> is not in a business area. Join info inaccessible.

Cause:
Relationship: Opposite data table/object not in any group.

Action: Grant that object to a group.


BRW-15904: Relationship name cannot be longer than <##> bytes BRW-15904: Relationship name cannot be longer than <##> bytes

Cause:
Relationship Name longer than limit.

Action: Use a shorter name.


BRW-15905: Column heading cannot be longer than <##> bytes BRW-15905: Column heading cannot be longer than <##> bytes

Cause:
Item Heading longer than limit.

Action: Use a shorter heading.


BRW-15906: Column format cannot be longer than <##> bytes BRW-15906: Column format cannot be longer than <##> bytes

Cause:
Item Format longer than limit.

Action: Use a shorter format.


BRW-15907: Column display width cannot have more than <##> digits BRW-15907: Column display width cannot have more than <##> digits

Cause:
Item Display Width Precision longer than limit.

Action: Use Shorter Display width.


BRW-15908: Time period name cannot be longer than <##> bytes BRW-15908: Time period name cannot be longer than <##> bytes

Cause:
Time Period Name too long.

Action: Use a shorter time period name.


BRW-15909: Period column and sequence column of time period are the same BRW-15909: Period column and sequence column of time period are the same

Cause:
Period and sequence columns of time period set to the same column.

Action: make sure period and sequence columns are different.


BRW-15910: Unable to load time period <name> BRW-15910: Unable to load time period <name>

Cause:
Schema internal error in loading time period.

Action: Refer to accompanying error messages for more information.


BRW-15911: Time period <name> already exists BRW-15911: Time period <name> already exists

Cause:
Time period name must be unique.

Action: Create time period under a different name.


BRW-15912: Illegal display width value. BRW-15912: Illegal display width value.

Cause:
Illegal display width value.

Action: Re-enter a legal value.


BRW-15913: <name> key text cannot be empty. BRW-15913: <name> key text cannot be empty.

Cause:
Foreign or Primary Key text is empty.

Action: Enter text for primary or foreign key.


BRW-15914: Relationship name cannot be empty. BRW-15914: Relationship name cannot be empty.

Cause:
Relationship name is null.

Action: Enter relationship name.


BRW-15924: Business area name cannot be empty BRW-15924: Business area name cannot be empty

Cause:
Business area name is empty or contains only spaces.

Action: Enter a new name.


BRW-15925: Table <name1> has already been imported as <name2> BRW-15925: Table <name1> has already been imported as <name2>

Cause:
Table can only be imported once with a given name.

Action: Import table under a different name.


BRW-15926: Business area <name> already exists BRW-15926: Business area <name> already exists

Cause:
Business area name must be unique.

Action: Create business area under a different name.


BRW-15927: Business area <name1> already contains a table named <name2> BRW-15927: Business area <name1> already contains a table named <name2>

Cause: Table name must be unique within a business area.

Action: Rename/reimport table and add to business area.


BRW-15928: Business area name too long (Max <##> bytes) BRW-15928: Business area name too long (Max <##> bytes)

Cause:
Business area name too long.

Action: Shorten the name and try again.


BRW-15929: Business area description too long (Max <##> bytes) BRW-15929: Business area description too long (Max <##> bytes)

Cause:
Business area description too long.

Action: Shorten the description and try again.


BRW-15930: Error committing table <name> BRW-15930: Error committing table <name>

Cause:
Error occurred while committing table.

Action: Try again.


BRW-15931: Error committing business area <name> BRW-15931: Error committing business area <name>

Cause:
Error occurred while committing business area.

Action: Try again.


BRW-15932: Error committing time period <name> BRW-15932: Error committing time period <name>

Cause:
Error occurred while committing time period.

Action: Try again.


BRW-15933: Error committing relationship <name> BRW-15933: Error committing relationship <name>

Cause:
Error occurred while committing relationship

Action: Try again.


BRW-15937: Error generating SQL for table <name> BRW-15937: Error generating SQL for table <name>

Cause:
Error occurred while generating SQL for a table.

Action: Try again.


BRW-15938: Error generating SQL for business area <name> BRW-15938: Error generating SQL for business area <name>

Cause:
Error occurred while generating SQL for a business area.

Action: Try again.


BRW-15939: Error generating SQL for time period <name> BRW-15939: Error generating SQL for time period <name>

Cause:
Error occurred while generating SQL for a time period.

Action: Try again.


BRW-15940: Error generating SQL for relationship <name> BRW-15940: Error generating SQL for relationship <name>

Cause:
Error occurred while generating SQL for relationship.

Action: Try again.


BRW-15950: No Oracle Query Builder tables--Database open/save is disabled BRW-15950: No Oracle Query Builder tables--Database open/save is disabled

Cause:
There is no Query Builder system query table in the database.

Action: Create a system query table (run the Query Builder install script).


BRW-15951: Product user profile information not loaded BRW-15951: Product user profile information not loaded

Cause:
Cannot load the user profile table.

Action: Ask system administrator to create one.


BRW-15952: User privilege table not loaded BRW-15952: User privilege table not loaded

Cause:
Missing USER_USERS table (Non Oracle or Oracle V7 database).

Action: None available.


BRW-15953: Table privilege table not loaded BRW-15953: Table privilege table not loaded

Cause:
Cannot find Privilege table.

Action: Non-Oracle database or Oracle V7 database.


BRW-15954: Oracle Query Builder 2.5 tables are missing or not installed properly BRW-15954: Oracle Query Builder 2.5 tables are missing or not installed properly

Cause:
No QUERY BUILDER_DOCS_SQL table.

Action: Re-install Query Builder 2.5 tables.


BRW-15955: Query returned zero rows BRW-15955: Query returned zero rows

Cause:
Query returned no rows.

Action: Modify the query so that it requests data that exists in the database.


BRW-16000: Document saved using End User Layer, not Native dictionary. Continue? BRW-16000: Document saved using End User Layer, not Native dictionary. Continue?

Cause:
User tried to open in Native mode a document saved using the End User Layer.

Action: Run Query Builder with DICTIONARY=ENDUSER or continue (End User Layer objects will be inaccessible).


BRW-16001: Document saved using Native dictionary, not End User Layer. Continue? BRW-16001: Document saved using Native dictionary, not End User Layer. Continue?

Cause:
User tried to open in ENDUSER mode a document saved using the Native dictionary.

Action: Run Query Builder with DICTIONARY=NATIVE or continue (some database objects may be inaccessible).


BRW-16250: Document already exists. Do you want to overwrite? BRW-16250: Document already exists. Do you want to overwrite?

Cause:
User tried to Save As over an existing document.

Action: User may overwrite or cancel.


BRW-16251: Table has been modified. Continue? BRW-16251: Table has been modified. Continue?

Cause:
View was removed and recreated; may be inconsistent with document.

Action: Either continue or abort save.


BRW-16500: Memory not available for local sort. Re-execute? BRW-16500: Memory not available for local sort. Re-execute?

Cause:
All rows not yet fetched for local sort.

Action: Re-execute query now or later.


BRW-16503: Data not available for local sort. Re-execute? BRW-16503: Data not available for local sort. Re-execute?

Cause:
All rows not yet fetched for local sort.

Action: Re-execute query now or later.


BRW-16504: Data not available for local break. Re-execute? BRW-16504: Data not available for local break. Re-execute?

Cause:
All rows not yet fetched for local break.

Action: Re-execute query now or later.


BRW-16525: Query may require a Cartesian product. Continue? BRW-16525: Query may require a Cartesian product. Continue?

Cause:
Query combines results of unrelated tables.

Action: Ignore message or relate tables before executing. Refer to help or documentation for details.


BRW-16531: Redefine parameter <name>? BRW-16531: Redefine parameter <name>?

Cause:
User entered previously deleted parameter in expression or condition.

Action: Press OK if this is what you intended.


BRW-16532: Parameter <name> does not exist. Define? BRW-16532: Parameter <name> does not exist. Define?

Cause:
User entered new parameter in expression or condition.

Action: Press OK if this is what you intended.


BRW-16549: Revert will undo all changes on these tables. Revert anyway? BRW-16549: Revert will undo all changes on these tables. Revert anyway?

Cause:
Confirmation before reverting data tables.

Action: Click OK to revert all selected data tables, Cancel to cancel the operation.


BRW-16550: Table <name> has primary/unique keys that are referenced. Remove? BRW-16550: Table <name> has primary/unique keys that are referenced. Remove?

Cause:
Table contains constraints.

Action: Click OK to remove the data table, Cancel to cancel the operation.


BRW-16551: Column has primary/unique keys or indexes. Remove anyway? BRW-16551: Column has primary/unique keys or indexes. Remove anyway?

Cause:
Column is used by constraints or indexes.

Action: Click OK to remove the column, Cancel to cancel the operation.


BRW-16552: Disable all constraints? BRW-16552: Disable all constraints?

Cause:
Message to confirm that all constraints should be disabled.

Action: User may confirm or cancel.


BRW-16553: Enable all constraints? BRW-16553: Enable all constraints?

Cause:
Message to confirm that all constraints should be enabled.

Action: User may confirm or cancel.


BRW-16575: There are uncommitted edits which will be lost. Commit? BRW-16575: There are uncommitted edits which will be lost. Commit?

Cause:
User has tried to exit the Data Editor without committing changes.

Action: Click Commit or lose changes.


BRW-16576: Defined Column, Summary and Break values may not be current. Re-execute? BRW-16576: Defined Column, Summary and Break values may not be current. Re-execute?

Cause:
Values edited while displaying breaks, summaries, or defined columns.

Action: Execute query to update values.


BRW-16623: There is no data available for this operation. BRW-16623: There is no data available for this operation.

Cause:
Alert message if number of rows or columns available to print is zero.

Action: User should try re-executing the query, or include some columns.


BRW-16624: Query definition has changed. Data may not be current. Continue? BRW-16624: Query definition has changed. Data may not be current. Continue?

Cause:
Query document has changed since last execute.

Action: Either re-execute the query, continue export, or cancel.


BRW-16625: The printer does not support all fonts needed. Substitute fonts? BRW-16625: The printer does not support all fonts needed. Substitute fonts?

Cause:
The font or some style or weight does not exist for the selected printer.

Action: User may continue with font substitution or cancel.


BRW-16626: Not enough memory for Print Preview. BRW-16626: Not enough memory for Print Preview.

Cause:
Unable to create bitmap for print preview.

Action: No action required.


BRW-16627: There is no data available for this operation. Execute query? BRW-16627: There is no data available for this operation. Execute query?

Cause:
Alert message if export data called with empty worksheet.

Action: User should try executing the query or cancel.


BRW-16628: Unable to get printer device. Printing will be unavailable. Continue? BRW-16628: Unable to get printer device. Printing will be unavailable. Continue?

Cause:
Error creating a toolkit printer surface with uiprc().

Action: User may continue with no printing or cancel.


BRW-16629: Do you want to update the container before exiting? BRW-16629: Do you want to update the container before exiting?

Cause:
Message to prompt user to save changes when closing/quitting OLE doc.

Action: User may save or abort changes, or cancel.


BRW-16650: The printer does not support all fonts needed. Substitute fonts? BRW-16650: The printer does not support all fonts needed. Substitute fonts?

Cause:
The font or some style or weight does not exist for the selected printer.

Action: User may continue with font substitution or cancel.


BRW-16651: No printer has been chosen. Use Default? BRW-16651: No printer has been chosen. Use Default?

Cause:
The user has not explicitly named a printer to use.

Action: User may continue with the system default printer or cancel.


BRW-16652: Margins for this document are too wide and must be reset. BRW-16652: Margins for this document are too wide and must be reset.

Cause:
The user has set the margins to be too large leaving no content.

Action: User must reset the margins.


BRW-16653: No printer has been chosen. Use Default? BRW-16653: No printer has been chosen. Use Default?

Cause:
The user has not explicitly named a printer to use.

Action: User may continue with the system default printer or cancel.


BRW-16654: No pages printed. BRW-16654: No pages printed.

Cause:
User has set copies to 0 or the start/end page outside the range.

Action: Reset page range.


BRW-16660: Query definition has changed. Data may not be current. Re-execute? BRW-16660: Query definition has changed. Data may not be current. Re-execute?

Cause:
Query document has changed since last DDE update.

Action: Re-execute the query before DDE update, or update without executing.


These are the new features for R6.0, other than the Oracle8 items (which are in their own folder in the common area).


PL/SQL editing enhancements PL/SQL editing enhancements

The Program Unit and Stored Program Unit editors now support a range of editing features in Microsoft Windows such as:

frm90000.gif Automatic indenting--As you enter code in the editors, lines are automatically indented.

frm90000.gif Color syntax highlighting--Keywords, comments, and strings are colored differently.

frm90000.gif Column and line selection--You can select columns of text as well as lines of source code.

frm90000.gif Drag and drop text manipulation--Highlighted text may be copied or moved by dragging and dropping.

frm90000.gif Multiple split views--You can create up to four separate views of the current program unit in the editor.

frm90000.gif Printing--You can print the current program unit.

frm90000.gif Unlimited undo/redo--You can undo/redo all edit actions up to the last save operation.


LOV wizard LOV wizard

Related Topics

The LOV Wizard enables you to create and modify a list of values (LOV), a scrollable popup window that provides the user with a single- or multi-column selection list. The Wizard guides you through the process of selecting an existing record group or creating a new query record group, selecting columns from the record group for display, and formatting the LOV. You can also use the LOV Wizard in its re-entrant mode to modify existing LOVs.


Hierarchical tree control Hierarchical tree control

Related Topics

The hierarchical tree displays data in the form of a standard navigator, similar to those used in Forms Developer.

You can populate a hierarchical tree with values contained in a Record Group or Query Text. At runtime, you can programmatically add, remove, modify, or evaluate elements in a hierarchical tree.

The amount of data displayed at any one time depends upon the expansion of individual data nodes, whether through built-ins or a user clicking on a node. The data set generally will be initially specified in Form Builder, and may be modified or entirely replaced at runtime.


Forms Runtime Diagnostics Forms Runtime Diagnostics

Related Topics

Forms Runtime Diagnostics (FRD) is a runtime event-based logging system designed to help you debug your application.

When a form is run with FRD enabled, a combination of external user-application interactions and internal Forms processing events are written in chronological order to a log on the file system. These events can then be analyzed for correctness.


Pluggable user components Pluggable user components

Related Topics

When you design a form to run in a three-tier environment using WebForms, you can extend and customized the form’s function by including JavaBeans in the application. For example, you could add a new widget, or provide your own version of a standard Forms widget (such as a push-button).


Launching WebForms from the Designer Launching WebForms from the Designer

Related Topics

Now it's easier to preview your forms designed to be run from the web. Click on the Run Form Web icon runweb.gif in the Object Navigator or Layout Editor to launch the Web Previewer with your form running locally in a Java UI shell.


Java user interface shell Java user interface shell

As part of the Network Computing initiative, Oracle is defining a new desktop environment for Java components. As a first step towards this desktop environment, Oracle is developing a lightweight Window and Menu System which will be part of the Oracle desktop environment. This Java UI Shell supports configurable Look and Feel of Java UI components.

For more information on the client UI Shell, see Configuring the Forms Server.


The Object Navigator The Object Navigator

Viewing objects in the Object Navigator

About the Object Navigator

Changing Object Navigator views

Navigating and selecting objects in the Object Navigator

Expanding and collapsing objects in the Object Navigator

Finding Object Navigator entries with fast search

Setting a mark in the Object Navigator

Working with multiple panes

Creating and moving objects in the Object Navigator

Creating and deleting objects in the Object Navigator

Changing the names of objects in the Object Navigator

Moving and copying objects in the Object Navigator

Copying objects between modules


The Layout Editor The Layout Editor

General Information

About the Layout Editor

Layout Editor tool palette

Switching to a different canvas in the Layout Editor

Selecting objects in the Layout Editor

Moving objects in the Layout Editor

Resizing objects in the Layout Editor

Aligning objects in the Layout Editor

Grouping objects in the Layout Editor

Ordering objects in the Layout Editor

Blocks and Items

Creating items

Setting Layout Editor block context

Working with multi-record blocks

Formatting Objects

Setting color and pattern attributes in the Layout Editor

Formatting items in the Layout Editor


The PL/SQL Editor The PL/SQL Editor

Writing Code in the PL/SQL Editor

Creating a trigger

Writing trigger code

Calling a built-in subprogram

About the PL/SQL Editor

PL/SQL Editor context

PL/SQL Editor commands

Using PL/SQL in Forms Builder


The Menu Editor The Menu Editor

Steps to build a custom Menu

Creating a menu module

Creating menus and menu items

Assigning commands to menu items

Attaching a menu module to a form

Using the Menu Editor

Displaying menus in the Menu Editor

About menu object names and labels

Changing menu object names and labels

Adding Special Menu Items

About special menu item types

Creating special menu items

Commands for check and radio menu items

Setting the state of check and radio menu items

Magic item default functionality


Defining an interface item Defining an interface item

Next Step

I want to define the behavior of my...

frm90000.gif
ActiveX controls

frm90000.gif Buttons

frm90000.gif Chart items

frm90000.gif Check boxes

frm90000.gif Image items

frm90000.gif List items

frm90000.gif OLE container items

frm90000.gif Radio groups

frm90000.gif Sound items

frm90000.gif Text items


Defining an ActiveX control Defining an ActiveX control

Related Topics

What would you like to do?

Embed an ActiveX control in a form

Set and get ActiveX control properties

Invoke ActiveX control methods

Respond to ActiveX control events

Registering ActiveX controls

Deploying ActiveX controls with your application


Defining a button Defining a button

Related Topics

What would you like to do?

Add a button label

Create an iconic button

Create a default button

Manipulate a button at runtime


Defining a chart item Defining a chart item

What would you like to do?

Create a chart item


Defining a check box Defining a check box

Related Topics

What would you like to do?

Specify a default value for a check box

Manipulate a check box at runtime


Defining an image item Defining an image item

Related Topics

What would you like to do?

Populate an image item

Manipulate images at runtime


Defining a list item Defining a list item

Related Topics

What would you like to do?

Specify a default value for a list item

Manipulate a list item at runtime

Add a list element

Retrieve and store list elements in a record group

Delete a list element


Defining an OLE container item Defining an OLE container item

Related Topics

What would you like to do?

Embed an OLE object

Link an OLE object

Display an OLE object

Edit an OLE object

Convert an OLE object


Defining a radio group Defining a radio group

Related Topics

What would you like to do?

Specify a default value for a radio group

Manipulate a radio group at runtime


Defining a sound item Defining a sound item

Related Topics

What would you like to do?

Set sound item control properties

Manipulate sound items programmatically


Defining a text item Defining a text item

Related Topics

What would you like to do?

Create single-line and multi-line text items

Making a text item value required

Specify the maximum length for a text item

Specify a required value for a text item

Specify a fixed length value for a text item

Specify a valid range of values

Hide text item values

Format values with format masks

Assign a list of values (LOV) to a text item

Manipulate a text item at runtime


Built-in packages Built-in packages

Alphabetic list Related Topics

Active X Built-ins

Alert Built-ins

Application Built-ins

Block Built-ins

Canvas Built-ins

Chart Built-ins

Form Built-ins

Item Built-ins

Menu Built-ins

Message Built-ins

Multiple Form Built-ins

OLE Built-ins

Parameter List Built-ins

PECS Built-ins

Query Built-ins

Record Built-ins

Relation Built-ins

Report Built-ins

Tab Page Built-ins

Transactional Built-ins

VBX Built-ins

Web Built-ins

Window Built-ins


Form Builder Built-ins Form Builder Built-ins

All Built-ins

A

ABORT_QUERY

ADD_GROUP_COLUMN

ADD_GROUP_ROW

ADD_LIST_ELEMENT

ADD_OLEARGS

ADD_PARAMETER

APPLICATION_PARAMETER

B

BELL

BLOCK_MENU

BREAK

C

CALL_FORM

CALL_INPUT

CALL_OLE

CALL_OLE_<return type>

CANCEL_REPORT_OBJECT

CHECK_RECORD_UNIQUENESS

CHECKBOX_CHECKED

CHECKED

CLEAR_BLOCK

CLEAR_EOL

CLEAR_FORM

CLEAR_ITEM

CLEAR_LIST

CLEAR_MESSAGE

CLEAR_RECORD

CLOSE_FORM

COMMIT_FORM

CONVERT_OTHER_VALUE

COPY

COPY_REGION

COPY_REPORT_OUTPUT

COUNT_QUERY

CREATE_GROUP

CREATE_GROUP_FROM_QUERY

CREATE_OLEOBJ

CREATE_PARAMETER_LIST

CREATE_QUERIED_RECORD

CREATE_RECORD

CREATE_TIMER

CREATE_VAR

CUT_REGION

D

DBMS_ERROR_CODE

DBMS_ERROR_TEXT

DEBUG_MODE

DEFAULT_VALUE

DELETE_GROUP

DELETE_GROUP_ROW

DELETE_LIST_ELEMENT

DELETE_PARAMETER

DELETE_RECORD

DELETE_TIMER

DESTROY_PARAMETER_LIST

DESTROY_VARIANT

DISPATCH_EVENT

DISPLAY_ERROR

DISPLAY_ITEM

DOWN

DO_KEY

DUMMY_REFERENCE

DUPLICATE_ITEM

DUPLICATE_RECORD

E

EDIT_TEXTITEM

ENFORCE_COLUMN_SECURITY

ENTER

ENTER_QUERY

ERASE

ERROR_CODE

ERROR_TEXT

ERROR_TYPE

EXECUTE_QUERY

EXECUTE_TRIGGER

EXIT_FORM

F

FETCH_RECORDS

FIND_ALERT

FIND_BLOCK

FIND_CANVAS

FIND_COLUMN

FIND_EDITOR

FIND_FORM

FIND_GROUP

FIND_ITEM

FIND_LOV

FIND_MENU_ITEM

FIND_RELATION

FIND_REPORT_OBJECT

FIND_TAB_PAGE

FIND_TIMER

FIND_VIEW

FIND_WINDOW

FIRST_RECORD

FORM_FAILURE

FORM_FATAL

FORM_SUCCESS

FORMS_DDL

FORMS_OLE.ACTIVATE_SERVER

FORMS_OLE.CLOSE_SERVER

FORMS_OLE.EXEC_VERB

FORMS_OLE.FIND_OLE_VERB

FORMS_OLE.GET_INTERFACE_POINTER

FORMS_OLE.GET_VERB_COUNT

FORMS_OLE.GET_VERB_NAME

FORMS_OLE.INITIALIZE_CONTAINER

FORMS_OLE.SERVER_ACTIVE

G

GENERATE_SEQUENCE_NUMBER

GET_APPLICATION_PROPERTY

GET_BLOCK_PROPERTY

GET_CANVAS_PROPERTY

GET_FILE_NAME

GET_FORM_PROPERTY

GET_GROUP_CHAR_CELL

GET_GROUP_DATE_CELL

GET_GROUP_NUMBER_CELL

GET_GROUP_RECORD_NUMBER

GET_GROUP_ROW_COUNT

GET_GROUP_SELECTION

GET_GROUP_SELECTION_COUNT

GET_INTERFACE_POINTER

GET_ITEM_INSTANCE_PROPERTY

GET_ITEM_PROPERTY

GET_LIST_ELEMENT_COUNT

GET_LIST_ELEMENT_LABEL

GET_LIST_ELEMENT_VALUE

GET_LOV_PROPERTY

GET_MENU_ITEM_PROPERTY

GET_MESSAGE

GET_OLEARG_<type>

GET_OLE_MEMBERID

GET_OLE_<proptype>

GET_PARAMETER_ATTR

GET_PARAMETER_LIST

GET_RADIO_BUTTON_PROPERTY

GET_RECORD_PROPERTY

GET_RELATION_PROPERTY

GET_REPORT_OBJECT_PROPERTY

GET_TAB_PAGE_PROPERTY

GET_VAR_BOUNDS

GET_VAR_DIMS

GET_VAR_TYPE

GET_VIEW_PROPERTY

GET_WINDOW_PROPERTY

GO_BLOCK

GO_FORM

GO_ITEM

GO_RECORD

H

HELP

HIDE_MENU

HIDE_VIEW

HIDE_WINDOW

HOST

I

ID_NULL

IMAGE_SCROLL

IMAGE_ZOOM

INIT_OLEARGS

INITIALIZE_CONTAINER

INSERT_RECORD

ISSUE_ROLLBACK

ISSUE_SAVEPOINT

ITEM_ENABLED

J

K

L

LAST_OLE_ERROR

LAST_OLE_EXCEPTION

LAST_RECORD

LIST_VALUES

LOCK_RECORD

LOGON

LOGON_SCREEN

LOGOUT

M

MENU_CLEAR_FIELD

MENU_NEXT_FIELD

MENU_PARAMETER

MENU_PREVIOUS_FIELD

MENU_REDISPLAY

MENU_SHOW_KEYS

MESSAGE

MESSAGE_CODE

MESSAGE_TEXT

MESSAGE_TYPE

MOVE_WINDOW

N

NAME_IN

NEW_FORM

NEXT_BLOCK

NEXT_ITEM

NEXT_FORM

NEXT_KEY

NEXT_MENU_ITEM

NEXT_RECORD

NEXT_SET

O

OLEVAR_EMPTY

OPEN_FORM

P

PASTE_REGION

PAUSE

PECS.ADD_CLASS

PECS.ADD_EVENT

PECS.COLLECTOR

PECS.DISABLE_CLASS

PECS.ENABLE_CLASS

PECS.END_EVENT

PECS.POINT_EVENT

PECS.START_EVENT

PLAY_SOUND

POPULATE_GROUP

POPULATE_GROUP_WITH_QUERY

POPULATE_LIST

POST

PREVIOUS_BLOCK

PREVIOUS_FORM

PREVIOUS_ITEM

PREVIOUS_MENU

PREVIOUS_MENU_ITEM

PREVIOUS_RECORD

PRINT

PTR_TO_VAR

Q

QUERY_PARAMETER

R

READ_IMAGE_FILE

READ_SOUND_FILE

RECALCULATE

REDISPLAY

RELEASE_OBJ

REPLACE_CONTENT_VIEW

REPLACE_MENU

REPORT_OBJECT_STATUS

RESET_GROUP_SELECTION

RESIZE_WINDOW

RETRIEVE_LIST

RUN_PRODUCT

RUN_REPORT_OBJECT

S

SCROLL_DOWN

SCROLL_UP

SCROLL_VIEW

SELECT_ALL

SELECT_RECORDS

SET_ALERT_BUTTON_PROPERTY

SET_ALERT_PROPERTY

SET_APPLICATION_PROPERTY

SET_BLOCK_PROPERTY

SET_CANVAS_PROPERTY

SET_FORM_PROPERTY

SET_GROUP_CHAR_CELL

SET_GROUP_DATE_CELL

SET_GROUP_NUMBER_CELL

SET_GROUP_SELECTION

SET_INPUT_FOCUS

SET_ITEM_INSTANCE_PROPERTY

SET_ITEM_PROPERTY

SET_LOV_COLUMN_PROPERTY

SET_LOV_PROPERTY

SET_MENU_ITEM_PROPERTY

SET_OLE

SET_PARAMETER_ATTR

SET_RADIO_BUTTON_PROPERTY

SET_RECORD_PROPERTY

SET_RELATION_PROPERTY

SET_REPORT_OBJECT_PROPERTY

SET_TAB_PAGE_PROPERTY

SET_TIMER

SET_VAR

SET_VIEW_PROPERTY

SET_WINDOW_PROPERTY

SHOW_ALERT

SHOW_EDITOR

SHOW_KEYS

SHOW_LOV

SHOW_MENU

SHOW_VIEW

SHOW_WINDOW

SYNCHRONIZE

T

TERMINATE

TO_VARIANT

U

UNSET_GROUP_SELECTION

UP

UPDATE_CHART

UPDATE_RECORD

USER_EXIT

V

VALIDATE

VARPTR_TO_VAR

VAR_TO_TABLE

VAR_TO_<type>

VAR_TO_VARPTR

VBX.FIRE_EVENT

VBX.GET_PROPERTY

VBX.GET_VALUE_PROPERTY

VBX.INVOKE_METHOD

VBX.SET_PROPERTY

VBX.SET_VALUE_PROPERTY

W

WEB.SHOW_DOCUMENT

WHERE_DISPLAY

WRITE_IMAGE_FILE

WRITE_SOUND_FILE

X

Y

Z


ActiveX Built-ins ActiveX Built-ins

All Built-ins

ADD_OLEARGS

CALL_OLE

CALL_OLE_<return type>

CREATE_OLEOBJ

CREATE_VAR

DESTROY_VARIANT

DISPATCH_EVENT

GET_OLEARG_<type>

GET_OLE_MEMBERID

GET_OLE_<proptype>

GET_VAR_BOUNDS

GET_VAR_DIMS

GET_VAR_TYPE

INIT_OLEARGS

LAST_OLE_ERROR

LAST_OLE_EXCEPTION

OLEVAR_EMPTY

PTR_TO_VAR

RELEASE_OBJ

SET_OLE

SET_VAR

TO_VARIANT

VARPTR_TO_VAR

VAR_TO_TABLE

VAR_TO_<type>

VAR_TO_VARPTR


Alert Built-ins Alert Built-ins

All Built-ins

FIND_ALERT

ID_NULL

SET_ALERT_BUTTON_PROPERTY

SET_ALERT_PROPERTY

SHOW_ALERT


Application Built-ins Application Built-ins

All Built-ins

DO_KEY

GET_APPLICATION_PROPERTY

HOST

PAUSE

SET_APPLICATION_PROPERTY

USER_EXIT


Block Built-ins Block Built-ins

All Built-ins

BLOCK_MENU

CLEAR_BLOCK

FIND_BLOCK

GET_BLOCK_PROPERTY

GO_BLOCK

ID_NULL

NEXT_BLOCK

PREVIOUS_BLOCK

SET_BLOCK_PROPERTY


Canvas Built-ins Canvas Built-ins

All Built-ins

FIND_CANVAS

FIND_VIEW

GET_CANVAS_PROPERTY

GET_VIEW_PROPERTY

HIDE_VIEW

ID_NULL

PRINT

SCROLL_VIEW

SET_CANVAS_PROPERTY

SET_VIEW_PROPERTY

SHOW_VIEW


Chart Built-ins Chart Built-ins

All Built-ins

UPDATE_CHART


Form Built-ins Form Built-ins

All Built-ins

BELL

BREAK

CALL_FORM

CALL_INPUT

CLEAR_FORM

COMMIT_FORM

DEBUG_MODE

ENTER

ERASE

EXECUTE_TRIGGER

EXIT_FORM

FIND_FORM

FORM_FAILURE

FORM_FATAL

FORM_SUCCESS

GET_FORM_PROPERTY

HELP

ID_NULL

NEW_FORM

OPEN_FORM

POST

REDISPLAY

REPLACE_MENU

SET_FORM_PROPERTY

SHOW_KEYS

SHOW_MENU

SYNCHRONIZE


Item Built-ins Item Built-ins

All Built-ins

CHECKBOX_CHECKED

CLEAR_EOL

CLEAR_ITEM

CONVERT_OTHER_VALUE

COPY

COPY_REGION

CUT_REGION

DEFAULT_VALUE

DISPLAY_ITEM

DUMMY_REFERENCE

DUPLICATE_ITEM

EDIT_TEXTITEM

FIND_ITEM

GET_FILE_NAME

GET_ITEM_INSTANCE_PROPERTY

GET_ITEM_PROPERTY

GET_RADIO_BUTTON_PROPERTY

GO_ITEM

ID_NULL

IMAGE_SCROLL

IMAGE_ZOOM

NAME_IN

NEXT_ITEM

NEXT_KEY

PASTE_REGION

PLAY_SOUND

PREVIOUS_ITEM

READ_IMAGE_FILE

READ_SOUND_FILE

RECALCULATE

SELECT_ALL

SET_ITEM_INSTANCE_PROPERTY

SET_ITEM_PROPERTY

SET_RADIO_BUTTON_PROPERTY

WRITE_IMAGE_FILE

WRITE_SOUND_FILE


Menu Built-ins Menu Built-ins

All Built-ins

APPLICATION_PARAMETER

FIND_MENU_ITEM

GET_MENU_ITEM_PROPERTY

HIDE_MENU

ITEM_ENABLED

MENU_CLEAR_FIELD

MENU_PARAMETER

MENU_PREVIOUS_FIELD

MENU_REDISPLAY

MENU_SHOW_KEYS

NEXT_MENU_ITEM

PREVIOUS_MENU

PREVIOUS_MENU_ITEM

QUERY_PARAMETER

REPLACE_MENU

SET_INPUT_FOCUS

SET_MENU_ITEM_PROPERTY

SHOW_MENU

TERMINATE

WHERE_DISPLAY


Message Built-ins Message Built-ins

All Built-ins

CLEAR_MESSAGE

DBMS_ERROR_CODE

DBMS_ERROR_TEXT

DISPLAY_ERROR

ERROR_CODE

ERROR_TEXT

ERROR_TYPE

GET_MESSAGE

MESSAGE

MESSAGE_CODE

MESSAGE_TEXT

MESSAGE_TYPE


Multiple Form Built-ins Multiple Form Built-ins

All Built-ins

CLOSE_FORM

GO_FORM

NEW_FORM

NEXT_FORM

OPEN_FORM

PREVIOUS_FORM


OLE Built-ins OLE Built-ins

All Built-ins

FORMS_OLE.ACTIVATE_SERVER

FORMS_OLE.CLOSE_SERVER

FORMS_OLE.EXEC_VERB

FORMS_OLE.FIND_OLE_VERB

FORMS_OLE.GET_INTERFACE_POINTER

FORMS_OLE.GET_VERB_COUNT

FORMS_OLE.GET_VERB_NAME

FORMS_OLE.INITIALIZE_CONTAINER

FORMS_OLE.SERVER_ACTIVE


Parameter List Built-ins Parameter List Built-ins

All Built-ins

ADD_PARAMETER

CREATE_PARAMETER_LIST

DELETE_PARAMETER

DESTROY_PARAMETER_LIST

GET_PARAMETER_ATTR

ID_NULL

RUN_PRODUCT

SET_PARAMETER_ATTR


PECS Built-ins PECS Built-ins

All Built-ins

PECS.ADD_CLASS

PECS.ADD_EVENT

PECS.COLLECTOR

PECS.DISABLE_CLASS

PECS.ENABLE_CLASS

PECS.END_EVENT

PECS.POINT_EVENT

PECS.START_EVENT


Query Built-ins Query Built-ins

All Built-ins

ABORT_QUERY

COUNT_QUERY

ENTER_QUERY

EXECUTE_QUERY


Record Built-ins Record Built-ins

All Built-ins

CHECK_RECORD_UNIQUENESS

CLEAR_RECORD

CREATE_QUERIED_RECORD

CREATE_RECORD

DELETE_RECORD

DOWN

DUPLICATE_RECORD

FIRST_RECORD

GENERATE_SEQUENCE_NUMBER

GET_RECORD_PROPERTY

GO_RECORD

INSERT_RECORD

LAST_RECORD

LOCK_RECORD

NEXT_RECORD

NEXT_SET

PREVIOUS_RECORD

SCROLL_DOWN

SCROLL_UP

SELECT_RECORDS

SET_RECORD_PROPERTY

UP

UPDATE_RECORD


Relation Built-ins Relation Built-ins

All Built-ins

FIND_RELATION

GET_RELATION_PROPERTY

ID_NULL

SET_RELATION_PROPERTY


Report Built-ins Report Built-ins

All Built-ins

CANCEL_REPORT_OBJECT

COPY_REPORT_OUTPUT

FIND_REPORT_OBJECT

GET_REPORT_OBJECT_PROPERTY

RUN_REPORT_OBJECT

SET_REPORT_OBJECT_PROPERTY


Tab Page Built-ins Tab Page Built-ins

All Built-ins

FIND_TAB_PAGE

GET_TAB_PAGE_PROPERTY

SET_TAB_PAGE_PROPERTY


Transaction Built-ins Transaction Built-ins

All Built-ins

CHECK_RECORD_UNIQUENESS

DELETE_RECORD

ENFORCE_COLUMN_SECURITY

FETCH_RECORDS

FORMS_DDL

GENERATE_SEQUENCE_NUMBER

INSERT_RECORD

ISSUE_ROLLBACK

ISSUE_SAVEPOINT

LOGON

LOGON_SCREEN

LOGOUT

SELECT_RECORDS

UPDATE_RECORD


VBX Built-ins VBX Built-ins

All Built-ins

VBX.FIRE_EVENT

VBX.GET_PROPERTY

VBX.GET_VALUE_PROPERTY

VBX.INVOKE_METHOD

VBX.SET_PROPERTY

VBX.SET_VALUE_PROPERTY


Web Built-ins Web Built-ins

All Built-ins

WEB.SHOW_DOCUMENT


Window Built-ins Window Built-ins

All Built-ins

FIND_WINDOW

GET_WINDOW_PROPERTY

HIDE_WINDOW

ID_NULL

MOVE_WINDOW

REPLACE_CONTENT_VIEW

RESIZE_WINDOW

SET_WINDOW_PROPERTY

SHOW_WINDOW


Properties Properties

Alphabetic list Related Topics

Alert properties

Application properties

Block properties

Canvas properties

Chart properties

Editor properties

Form Parameter properties

Form Module properties

Frame properties

Graphics properties

Item properties

LOV properties

Menu properties

Named Visual Attribute Properties

Prompt properties

Record properties

Record Group properties

Relation properties

Report properties

Tab Page properties

Trigger properties

Window properties


Form Builder Properties Form Builder Properties

All Properties

A

About Control

Access Key

Alert Style

Alias

Allow Expansion

Allow Multi-Line Prompts

Allow Start-Attached Prompts

Allow Top-Attached Prompts

Application Instance

Arrow Style

Associated Menus

Audio Channels

Automatical Column Width

Automatic Display

Automatic Position

Automatic Query

Automatic Refresh

Automatic Select

Automatic Skip (Item)

Automatic Skip (LOV)

B

Background_Color

Bevel

Block Description

Bottom Title (Editor)

Builtin Date Format

Button 1 Label, Button 2 Label, Button 3 Label

C

Calculation Mode

Calling_Form

Canvas

Canvas Type

Cap Style

Case Insensitive Query

Case Restriction

Character Cell WD/HT

Check Box Mapping of Other Values

Checked

Clip Height

Clip Width

Clip X Position

Clip Y Position

Close Allowed

Closed

Column Mapping Properties

Column Name

Column Specifications

Column Title

Column Value

Command Text

Command Type

Comments

Communication Mode (Chart)

Communication Mode (Report)

Compress

Compression_Quality

Conceal Data

Connect_String

Console Window

Control Help

Control Properties

Coordinate System

Coordination

Coordination_Status

Copy Value from Item

Current_Form

Current_Form_Name

Current_Record

Current Record Visual Attribute

Current_Row_Background_Color

Current_Row_Fill_Pattern

Current_Row_Font_Name

Current_Row_Font_Size

Current_Row_Font_Spacing

Current_Row_Font_Style

Current_Row_Font_Weight

Current_Row_Foreground_Color

Current_Row_White_On_Black

Cursor Mode

Cursor_Style

Custom Spacing

D

Dash Style

Data Block Description

Data Source Data Block (Chart)

Data Source Data Block (Report)

Data Source X Axis

Data Source Y Axis

Data Type

Data Type (Record Group)

Database Block

Database_Value

Datasource

Default Alert Button

Default Button

Default Font Scaling

Deferred

Defer_Required_Enforcement

Delete Allowed

Delete Procedure Arguments

Delete Procedure Name

Delete Procedure Result Set Columns

Delete Record Behavior

Detail Block

Detail Reference Item

Direction

Display without Privilege

Display_Height

Display in Keyboard Help

Display Hint Automatically

Display Quality

Display_Width

Display Width (LOV)

Distance Between Records

Dither

DML Array Size

DML Data Target Name

DML Data Target Type

E

Edge Background Color

Edge Foreground Color

Edge Pattern

Editor

Editor X Position, Editor Y Position

Elements in List

Enabled (Item)

Enabled (Menu Item)

Enabled (Tab Page)

End Angle

Enforce Column Security

Enforce Primary Key

Enterable

Execution Mode (Chart)

Execution Mode (Report)

Execution Style

F

File_Name

Fill

Fill_Pattern

Filter Before Display

Fire in Enter-Query Mode

First_Block

First_Detail_Relation

First_Item

First_Master_Relation

First Navigation Block

Fixed Bounding Box

Fixed Length (Item)

Fixed Length (Menu Substitution Parameter)

Font Spacing

Font_Name

Font_Size

Font_Spacing

Font_Style

Font_Weight

Foreground_Color

Form Horizontal Toolbar Canvas

Form Vertical Toolbar Canvas

Form_Name

Format Mask

Formula

Frame Alignment

Frame Title

Frame Title Alignment

Frame Title Font Name

Frame Title Font Size

Frame Title Font Spacing

Frame Title Font Style

Frame Title Font Weight

Frame Title Font Foreground Color

Frame Title Offset

Frame Title Reading Order

Frame Title Spacing

Frame Title Visual Attribute Group

G

Graphics Type

Group_Name

H

Help

Hide on Exit

Highest Value Allowed

Hint (Item)

Hint (Menu Item)

Hint (Menu Substitution Parameter)

Horizontal Justification

Horizontal Margin

Horizontal Object Offset

Horizontal Origin

Horizontal Toolbar Canvas

I

Icon Filename

Icon in Menu

Iconic

Image_Depth

Image_Format

Implementation Class

Include REF Item

Inherit Menu

Initial Keyboard State

Initial Menu

Initial Value

Insert Allowed (Block)

Insert Allowed (Item)

Insert Procedure Arguments

Insert Procedure Name

Insert Procedure Result Set Columns

Interaction Mode

Isolation Mode

Item_Is_Valid

Item Roles

Item_Tab_Page (item)

Item Type

J

Join Condition

Join Style

Justification

K

Keep Cursor Position

Keyboard Accelerator

Keyboard Help Description

Keyboard Navigable

Keyboard State

Key Mode

L

Label (Item)

Label (Menu Item)

Label (Menu Parameter)

Label (Tab Page)

Last_Block

Last_Item

Last Query

Layout Data Block

Layout Style

Length

Line Spacing

Line Width

Listed in Block Menu/Block Description

List Item Value

List of Values

List Style

List Type

List X Position

List Y Position

Lock Procedure Arguments

Lock Procedure Name

Lock Procedure Result Set Columns

Lock Record

Locking Mode

Lowest Value Allowed

M

Magic Item

Main Menu

Mapping of Other Values

Maximize Allowed

Maximum Length (Form Parameter)

Maximum Length (Item)

Maximum Length (Menu Substitution Parameter)

Maximum Objects Per Line

Maximum Query Time

Maximum Records Fetched

Menu Description

Menu Directory

Menu Filename

Menu Item Code

Menu Item Radio Group

Menu Item Type

Menu Module

Menu Role

Menu Source

Menu Style

Message

Minimize Allowed

Minimized Title

Modal

Module_NLS_Lang

Module Roles

Mouse Navigate

Mouse Navigation Limit

Move Allowed

Multi-Line

N

Name

Navigation Style

NextBlock

NextItem

Next_Detail_Relation

Next_Master_Relation

Next Navigation Block

Next Navigation Item

Number of Items Displayed

Number of Records Buffered

Number of Records Displayed

O

OLE Activation Style

OLE Class

OLE In-place Activation

OLE Inside-Out Support

OLE Popup Menu Items

OLE Resize Style

OLE Tenant Aspect

OLE Tenant Types

Operating_System

Optimizer_Hint

Order By

Other Reports Parameters

P

Parameter Data Type

Parameter Initial Value

Parameter Menu Initial Value

Password

PLSQL Date Format

Popup Menu (Item, Canvas)

Position (X, Y)

Precompute Summaries

Prevent Masterless Operation

Previous Navigation Block

PreviousBlock

PreviousItem

Previous Navigation Item

Primary Canvas

Primary Key (Item)

Program Unit Text

Prompt

Prompt Alignment

Prompt Alignment Offset

Prompt Attachment Edge

Prompt Attachment Offset

Prompt Display Style

Prompt Font Name

Prompt Font Size

Prompt Font Spacing

Prompt Font Style

Prompt Font Weight

Prompt Foreground Color

Prompt Background Color

Prompt Fill Pattern

Prompt Justification

Prompt Reading Order

Prompt Visual Attribute Group

Prompt_Background_Color

Prompt_Fill_Pattern

Prompt_Font_Name

Prompt_Font_Size

Prompt_Font_Spacing

Prompt_Font_Style

Prompt_Font_Weight

Prompt_Foreground_Color

Prompt_White_On_Black

Property Class

Q

Query All Records

Query Allowed (Block)

Query Allowed (Item)

Query Array Size

Query Data Source Arguments

Query Data Source Columns

Query Data Source Name

Query Data Source Type

Query Length

Query Name

Query Only

Query_Hits

Query_Options

R

Radio Button Value

Raise on Entry

Reading Order

Real Unit

Record Group

Record Group Fetch Size

Record Group Query

Record Group Type

Record Orientation

Records_To_Fetch

Relation Type

Rendered

Report Destination Format

Report Destination Name

Report Destination Type

Report Server

Required (Item)

Required (Menu Substitution Parameter)

Resize Allowed

Return Item (LOV)

Rotation Angle

Runtime Compatibility Mode

S

Savepoint Mode

Savepoint_Name

Scroll Bar Alignment

Scroll Bar Height

Scroll Bar Width

Secure (Menu Substitution Parameter)

Share Library with Form

Show Fast Forward Button

Show Horizontal Scroll Bar

Show OLE Popup Menu

Show OLE Tenant Type

Show Palette

Show Play Button

Show Record Button

Show Rewind Button

Show Scroll Bar

Show Slider

Show Time Indicator

Show Vertical Scroll Bar

Show Volume Control

Shrinkwrap

Single Object Alignment

Single Record

Size

Sizing Style

Sound Format

Sound Quality

Start Angle

Start Prompt Alignment

Start Prompt Offset

Startup Code

Status (Block)

Status (Record)

Subclass Information

Submenu Name

Summarized Block

Summarized Item

Summary Function

Synchronize with Item

T

Tab Attachment Edge

Tab Page

Tab Page X Offset

Tab Page Y Offset

Tab Style

Tear-off Menu

Timer_Name

Title

Tooltip

Tooltip_Background_Color

Tooltip_Fill_Pattern

Tooltip_Font_Name

Tooltip_Font_Size

Tooltip_Font_Spacing

Tooltip_Font_Style

Tooltip_Font_Weight

Tooltip_Foreground_Color

Tooltip Visual Attribute Group

Tooltip_White_On_Black

Topmost_Tab_Page (Canvas)

Top Prompt Alignment

Top Prompt Offset

Top Title

Top_Record

Transactional Triggers

Trigger Style

Trigger Text

Trigger Type

U

Update Allowed (Block)

Update Allowed (Item)

Update Changed Columns Only

Update_Column

Update_Commit

Update Layout

Update Only if NULL

Update_Permission

Update Procedure Arguments

Update Procedure Name

Update Procedure Result Set Columns

Update_Query

Use 3D Controls

Use Security

User_Interface

User_NLS_Date_Format

User_NLS_Lang

Username

V

Validate from List

Validation

Validation Unit

Value When Checked

Value When Unchecked

VBX Control File

VBX Control Name

VBX Control Value

Vertical Fill

Vertical Justification

Vertical Margin

Vertical Object Offset

Vertical Origin

Vertical Toolbar Canvas

Viewport Height, Viewport Width

Viewport X Position, Viewport Y Position

Viewport X Position on Canvas, Viewport Y Position on Canvas

Visible

Visible (Canvas)

Visible (Item)

Visible in Menu

Visible (Tab Page)

Visible In Horizontal/Vertical Menu Toolbar

Visual_Attribute

Visual Attribute Group

Visual Attribute Type

W

Where Clause/Order By Clause

White_On_Black

Width/Height

Window

Window_Handle

Window_State

Window Style

Wrap Style

Wrap Text

X

X Corner Radius

X Position, Y Position

Y

Y Position, X Position

Z


Alert Properties Alert Properties

All Properties

Alert style

Button 1 Label, Button 2 Label, Button 3 Label

Comments

Default Alert Button

Default Button

Menu Source

Message

Name

Property Class

Title


Application Properties Application Properties

All Properties

Calling_Form

Comments

Connect_String

Current_Form

Current_Form_Name

Cursor_Style

Datasource

Display_Height

Display_Width

Interaction_Mode

Isolation_Mode

Maximum_Query_Time

Maximum_Records_Fetched

Name

Operating_System

Password

Savepoint_Name

Timer_Name

User_Interface

Username

User_NLS_Lang


Block Properties Block Properties

All Properties

Application Instance

Block Description

Comments

Current_Record

Current Record Visual Attribute Group

Data Block Description

Database Block

Delete Allowed

Delete Procedure Arguments

Delete Procedure Name

Delete Procedure Result Set Columns

DML Array Size

DML Data Target Name

DML Data Target Type

Enforce Column Security

Enforce Primary Key

Enterable

First_Block

First_Detail_Relation

First_Item

First_Master_Relation

Insert Allowed (Block)

Insert Procedure Arguments

Insert Procedure Name

Insert Procedure Result Set Columns

Join Condition

Key Mode

Last_Item

Listed in Block Menu/Block Description

Locking Mode

Lock Procedure Name

Lock Procedure Result Set Columns

Name

Navigation Style

NextBlock

Next Navigation Block

Number of Records Buffered

Number of Records Displayed

Optimizer_Hint

Order By

Precompute Summaries

Previous Navigation Block

PreviousBlock

Property Class

Query All Records

Query Allowed (Block)

Query Array Size

Query Data Source Arguments

Query Data Source Columns

Query Data Source Name

Query Data Source Type

Query_Hits

Query_Options

Record Orientation

Records_To_Fetch

Show Scroll Bar

Single Record

Status (Block)

Top_Record

Transactional Triggers

Update Allowed (Block)

Update Changed Columns Only

Update Procedure Arguments

Update Procedure Name

Update Procedure Result Set Columns

Where Clause/Order By Clause

Window_Handle


Canvas Properties Canvas Properties

All Properties

Bevel

Canvas Type

Comments

Form Horizontal Toolbar Canvas

Form Vertical Toolbar Canvas

Name

Popup Menu

Property Class

Raise on Entry

Size

Tab Attachment Edge

Tab Style

Topmost_Tab_Page

Viewport Height, Viewport Width

Viewport X Position, Viewport Y Position

Viewport X Position on Canvas, Viewport Y Position on Canvas

Visible (Canvas)

Visual Attribute Group

Width/Height

Window

X Position, Y Position


Chart Properties Chart Properties

All Properties

Communication Mode (Chart)

Data Source Data Block (Chart)

Execution Mode (Chart)


Editor Properties Editor Properties

All Properties

Bottom Title (Editor)

Comments

Editor X Position, Editor Y Position

Name

Property Class

Show Horizontal Scroll Bar

Size

Top Title

Width/Height

Wrap Style

X Position, Y Position


Frame Properties Frame Properties

All Properties

Allow Expansion

Allow Multi-Line Prompts

Allow Start-Attached Prompts

Allow Top-Attached Prompts

Distance Between Records

Frame Alignment

Frame Title

Frame Title Alignment

Frame Title Font Name

Frame Title Font Size

Frame Title Font Spacing

Frame Title Font Style

Frame Title Font Weight

Frame Title Font Foreground Color

Frame Title Offset

Frame Title Reading Order

Frame Title Spacing

Frame Title Visual Attribute Group

Horizontal Object Offset

Layout Style

Maximum Objects Per Line

Number of Records Displayed

Scroll Bar Alignment

Scroll Bar Width

Show Scroll Bar

Shrinkwrap

Single Object Alignment

Start Prompt Alignment

Start Prompt Offset

Top Prompt Alignment

Top Prompt Offset

Update Layout

Vertical Fill

Vertical Margin

Vertical Object Offset


Graphics Properties Graphics Properties

All Properties

Cap Style

Dash Style

Edge Background Color

Edge Foreground Color

Edge Pattern

Graphics Type

Join Style

Line Width

Rotation Angle


Item Properties Item Properties

All Properties

About Control

Access Key

Application Instance

Audio Channels

Automatic Skip (Item)

Bevel

Calculation Mode

Canvas

Case Insensitive Query

Case Restriction

Check Box Mapping of Other Values

Column Name

Comments

Compress

Compression_Quality

Conceal Data

Control Help

Control Properties

Copy Value from Item

Current Record Visual Attribute

Data Source X Axis

Data Source Y Axis

Database_Value

Default Button

Display Hint Automatically

Display Quality

Distance Between Records

Editor

Editor X Position, Editor Y Position

Elements in List

Enabled (Item)

Fixed Length (Item)

Format Mask

Formula

Highest Value Allowed

Hint (Item)

Icon Filename

Iconic

Image_Depth

Image_Format

Implementation Class

Initial Value

Initial Keyboard State

Insert Allowed (Item)

Item_Is_Valid

Item_Tab_Page (item)

Item Type

Justification

Keep Cursor Position

Keyboard Navigable

Keyboard State

Label (Item)

List Item Value

List of Values

List Style

List X Position

List Y Position

Lock Record

Lowest Value Allowed

Mapping of Other Values

Maximum Length (Item)

Mouse Navigate

Multi-Line

Name

NextItem

Next Navigation Item

Number of Items Displayed

OLE Activation Style

OLE Class

OLE In-place Activation

OLE Inside-Out Support

OLE Popup Menu Items

OLE Resize Style

OLE Tenant Aspect

OLE Tenant Types

Parameter Data Type

Popup Menu

PreviousItem

Previous Navigation Item

Primary Key (Item)

Property Class

Query Allowed (Item)

Query Length

Query Only

Radio Button Value

Rendered

Required (Item)

Size

Sizing Style

Show Fast Forward Button

Show Horizontal Scroll Bar

Show OLE Popup Menu

Show OLE Tenant Type

Show Palette

Show Play Button

Show Record Button

Show Rewind Button

Show Slider

Show Time Indicator

Show Volume Control

Sound Format

Sound Quality

Summarized Block

Summarized Item

Summary Function

Synchronize with Item

Tab Page

Tooltip

Tooltip Visual Attribute Group

Update Allowed (Item)

Update_Column

Update_Commit

Update Only if NULL

Update_Permission

Validate from List

Value When Checked

Value When Unchecked

VBX Control File

VBX Control Name

VBX Control Value

Visible (Item)

Visual Attribute Group

Width/Height

Window_Handle

Wrap Style

Wrap Text

X Position, Y Position


LOV Properties LOV Properties

All Properties

Associated Menus

Automatic Display

Automatic Refresh

Automatic Select

Automatic Skip (LOV)

Column Mapping Properties

Column Name

Column Specifications

Column Title

Comments

Display Width (LOV)

Filter Before Display

Group_Name

List Type

Name

Property Class

Record Group

Return Item (LOV)

Size

Title

X Position, Y Position


Menu Properties Menu Properties

All Properties

Bottom Title

Case Restriction

Checked

Command Text

Command Type

Comments

Display without Privilege

Enabled (Menu Item)

Fixed Length (Menu Substitution Parameter)

Help

Hint (Menu Item)

Hint (Menu Substitution Parameter)

Icon Filename

Icon in Menu

Item Roles

Keyboard Accelerator

Label (Menu Item)

Label (Menu Parameter)

Magic Item

Maximum Length (Menu Substitution Parameter)

Menu Description

Menu Directory

Menu Filename

Menu Item Radio Group

Menu Item Type

Menu Module

Menu Source

Module Roles

Parameter Data Type

Parameter Menu Initial Value

Property Class

Required (Menu Substitution Parameter)

Secure (Menu Substitution Parameter)

Share Library with Form

Startup Code

Tear-off Menu

Title

Use Security

Visible In Horizontal/Vertical Menu Toolbar

Visible in Menu

Visual Attribute Group


Module Properties Module Properties

All Properties

Application Instance

Character Cell WD/HT

Comments

Console Window

Coordinate System

Current Record Visual Attribute

Cursor Mode

Defer_Required_Enforcement

File_Name

First_Block

First Navigation Block

Font Spacing

Form Horizontal Toolbar Canvas

Form Vertical Toolbar Canvas

Form_Name

Initial Menu

Last_Block

Menu Module

Menu Role

Menu Source

Menu Style

Module_NLS_Lang

Mouse Navigation Limit

Name

Property Class

Real Unit

Runtime Compatibility Mode

Savepoint Mode

Title

Use 3D Controls

Validation

Validation Unit

Window_Handle


Parameter Properties Parameter Properties

All Properties

Comments

Maximum Length (Form Parameter)

Name

Parameter Data Type

Parameter Initial Value

Property Class


Prompt Properties Prompt Properties

All Properties

Prompt

Prompt Alignment

Prompt Alignment Offset

Prompt Attachment Edge

Prompt Attachment Offset

Prompt Background Color

Prompt Display Style

Prompt Fill Pattern

Prompt Font Name

Prompt Font Size

Prompt Font Spacing

Prompt Font Style

Prompt Font Weight

Prompt Foreground Color

Prompt Justification

Prompt Reading Order

Prompt Visual Attribute Group


Record Properties Record Properties

All Properties

Status (Record)


Record Group Properties Record Group Properties

All Properties

Column Name

Column Specifications

Column Value

Comments

Data Type

Delete Record Behavior

Length

Name

Property Class

Record Group Fetch Size

Record Group Query

Record Group Type


Relation Properties Relation Properties

All Properties

Comments

Coordination

Coordination_Status

Deferred

Detail Block

Join Condition

Name

Next_Detail_Relation

Next_Master_Relation

Prevent Masterless Operation

Property Class


Report Properties Report Properties

All Properties

Communication Mode (Report)

Data Source Data Block (Report)

Execution Mode (Report)

Other Reports Parameters

Query Name

Report Destination Format

Report Destination Name

Report Destination Type


Tab Page Properties Tab Page Properties

All Properties

Canvas

Enabled (Tab Page)

Label (Tab Page)

Tab Page X Offset

Tab Page Y Offset

Visible (Tab Page)

Visual Attribute Group


Trigger Properties Trigger Properties

All Properties

Comments

Display in Keyboard Help

Execution Style

Fire in Enter-Query Mode

Keyboard Help Description

Name

Property Class

Trigger Style

Trigger Text

Trigger Type


Name Visual Attribute Properties Named Visual Attribute Properties

All Properties

Background_Color

Foreground_Color

Name

Property Class

Size

Visible

Visual_Attribute

Visual Attribute Type

White_On_Black

Width/Height


Window Properties Window Properties

All Properties

Close Allowed

Comments

Hide on Exit

Horizontal Toolbar Canvas

Icon Filename

Inherit Menu

Maximize Allowed

Minimize Allowed

Minimized Title

Modal

Move Allowed

Name

Primary Canvas

Property Class

Resize Allowed

Show Horizontal Scroll Bar

Show Vertical Scroll Bar

Size

Title

Vertical Toolbar Canvas

Visible

Visual_Attribute

Visual Attribute Group

Window_State

Window Style

X Position, Y Position


Options Options

Alphabetic list

Forms Runtime options

Form Compiler options

Form Builder options


Form Builder Preferences Form Builder Options

All Options

A

Access (Form Builder)

Add_Triggers (Form Compiler)

Array Processing

B

Batch (Form Compiler)

Block_Menu (Forms Runtime)

Buffer_Records in File

Build (Forms Compiler)

Build Before Running

C

Chart Wizard Welcome Page

Color Mode

Color Palette

Compile_All

CRT_File (Form Compiler)

D

Data Block Wizard Welcome Page

Debug (Forms Runtime)

Debug_Messages (Forms Runtime)

Delete (Form Compiler)

E

Extract (Form Compiler)

F

G

H

Help (Form Builder)

Help (Form Compiler)

Help (Forms Runtime)

HTML File Name

I

Insert (Form Compiler)

Interactive (Forms Runtime)

J

K

Keyin (Forms Runtime)

Keyout (Forms Runtime)

L

Layout Wizard Welcome Page

Logon (Form Compiler)

Logon_Screen (Forms Runtime)

LOV Welcome Page

M

Module_Access (Form Builder)

Module_Access (Form Compiler)

Module_Type (Form Builder)

Module_Type (Form Compiler)

N

Nofail (Form Compiler)

O

Optimize SQL (Forms Runtime)

Optimize Transaction Processing (Forms Runtime)

Output_File (Form Compiler)

Output_File (Forms Runtime)

P

Parse (Form Compiler)

Printer

Q

Query_Only (Forms Runtime)

Quiet Mode (Forms Runtime)

R

Run Modules Asynchronously

S

Save Before Building

Script (Form Compiler)

Session (Forms Runtime)

Statistics (Form Compiler)

Statistics (Forms Runtime)

Strip_Source (Forms Runtime)

Subclassing Path

Suppress Hints

T

Term (Forms Runtime)

U

Upgrade (Form Compiler)

Upgrade_Roles (Form Compiler)

Use System Editor

V

Version (Form Compiler)

W

Welcome Dialog

Wizard Welcome Pages

X

Y

Z


Runform Options Forms Runtime Options

All Options

Array

Block_Menu

Buffer_Records

Debug

Debug_Messages

Help

Interactive

Keyin

Keyout

Logon_Screen

OptimizeSQL

OptimizeTP

Options_Screen

Output_File

PECS

Query_Only

Quiet

Session

Statistics

Term

Window_State


Generate Options Form Compiler Options

All Options

Add_Triggers

Batch

Build

Compile_All

CRT_File

Debug

Delete

Extract

Help

Insert

Logon

Module_Access

Module_Type

Nofail

Options_Screen

Output_File

Parse

Script

Statistics

Strip_Source

Upgrade

Upgrade_Roles

Version

Widen_Fields


Builder Options Form Builder Options

All Options

Color Mode

Color Palette

Generate Before Run

Help

Module_Access

Module_Type

Printer

Run Modules Asynchronously

Save Before Generate

Suppress Hints

Use System Editor

User Preferences


Triggers Triggers

Alphabetic list Related Topics

Active X triggers

Block Processing triggers

Interface Event triggers

Key triggers

Master-Detail triggers

Message-Handling triggers

Mouse Event triggers

Navigation triggers

On triggers

Post triggers

Pre triggers

Query-Time triggers

Stored Procedure triggers

Transactional triggers

Validation triggers

When triggers


Form Builder Triggers Form Builder Triggers

All Triggers

A

B

C

D

Delete-Procedure

E

F

Function Key Triggers

G

H

I

Insert-Procedure

J

K

Key-Fn

Key-Others

L

Lock-Procedure

M

N

O

On-Check-Delete-Master

On-Check-Unique

On-Clear-Details

On-Close

On-Column-Security

On-Commit

On-Count

On-Delete

On-Dispatch-Event

On-Error

On-Fetch

On-Insert

On-Lock

On-Logon

On-Logout

On-Message

On-Populate-Details

On-Rollback

On-Savepoint

On-Select

On-Sequence-Number

On-Update

P

Post-Block

Post-Change

Post-Database-Commit

Post-Delete

Post-Form

Post-Forms-Commit

Post-Insert

Post-Logon

Post-Logout

Post-Query

Post-Record

Post-Select

Post-Text-Item

Post-Update

Pre-Block

Pre-Commit

Pre-Delete

Pre-Form

Pre-Insert

Pre-Logon

Pre-Logout

Pre-Popup-Menu

Pre-Query

Pre-Record

Pre-Select

Pre-Text-Item

Pre-Update

Q

Query-Procedure

R

S

T

U

Update-Procedure

User-Named

V

W

When-Button-Pressed

When-Checkbox-Changed

When-Clear-Block

When-Create-Record

When-Custom-Item-Event

When-Database-Record

When-Form-Navigate

When-Image-Activated

When-Image-Pressed

When-List-Activated

When-List-Changed

When-Mouse-Click

When-Mouse-DoubleClick

When-Mouse-Down

When-Mouse-Enter

When-Mouse-Leave

When-Mouse-Move

When-Mouse-Up

When-New-Block-Instance

When-New-Form-Instance

When-New-Item-Instance

When-New-Record-Instance

When-Radio-Changed

When-Remove-Record

When-Tab-Page-Changed

When-Timer-Expired

When-Validate-Item

When-Validate-Record

When-Window-Activated

When-Window-Closed

When-Window-Deactivated

When-Window-Resized

X

Y

Z


ActiveX Triggers ActiveX Triggers

All Triggers

On-Dispatch-Event


Block Processing Triggers Block Processing Triggers

All Triggers

When-Clear-Block

When-Create-Record

When-Database-Record

When-Remove-Record


Interface Event Triggers Interface Event Triggers

All Triggers

When-Button-Pressed

When-Checkbox-Changed

When-Custom-Item-Event

When-Image-Activated

When-List-Activated

When-List-Changed

When-Mouse-Click

When-Mouse-DoubleClick

When-Mouse-Down

When-Mouse-Enter

When-Mouse-Leave

When-Mouse-Move

When-Mouse-Up

When-Radio-Changed

When-Timer-Expired

When-Window-Activated

When-Window-Closed

When-Window-Deactivated

When-Window-Resized


Key Triggers Key Triggers

All Triggers

Key-Fn

Key-Others


Master-Detail Triggers Master-Detail Triggers

All Triggers

On-Check-Delete-Master

On-Clear-Details

On-Populate-Details


Message-Handling Triggers Message-Handling Triggers

All Triggers

On-Error

On-Message


Mouse Event Triggers Mouse Event Triggers

All Triggers

When-Custom-Item-Event

When-Mouse-Click

When-Mouse-DoubleClick

When-Mouse-Down

When-Mouse-Enter

When-Mouse-Leave

When-Mouse-Move

When-Mouse-Up


Navigation Triggers Navigation Triggers

All Triggers

Post-Block

Post-Form

Post-Record

Post-Text-Item

Pre-Block

Pre-Form

Pre-Record

Pre-Text-Item

User-Named

When-New-Block-Instance

When-New-Form-Instance

When-New-Item-Instance

When-New-Record-Instance


On Triggers On Triggers

All Triggers

On-Check-Delete-Master

On-Check-Unique

On-Clear-Details

On-Close

On-Column-Security

On-Commit

On-Count

On-Delete

On-Dispatch-Event

On-Error

On-Fetch

On-Insert

On-Lock

On-Logon

On-Logout

On-Message

On-Populate-Details

On-Rollback

On-Savepoint

On-Select

On-Sequence-Number

On-Update


Post Triggers Post Triggers

All Triggers

Post-Block

Post-Change

Post-Database-Commit

Post-Delete

Post-Form

Post-Forms-Commit

Post-Insert

Post-Logon

Post-Logout

Post-Query

Post-Record

Post-Select

Post-Text-Item

Post-Update


Pre Triggers Pre Triggers

All Triggers

Pre-Block

Pre-Commit

Pre-Delete

Pre-Form

Pre-Insert

Pre-Logon

Pre-Logout

Pre-Popup-Menu

Pre-Query

Pre-Record

Pre-Select

Pre-Text-Item

Pre-Update


Query-Time Triggers Query-Time Triggers

All Triggers

Post-Query

Pre-Query


Stored Procedure Triggers Stored Procedure Triggers

All Triggers

Delete-Procedure

Insert-Procedure

Lock-Procedure

Query-Procedure

Update-Procedure


Transactional Triggers Transactional Triggers

All Triggers

On-Check-Delete-Master

On-Check-Unique

On-Clear-Details

On-Close

On-Column-Security

On-Commit

On-Count

On-Delete

On-Dispatch-Event

On-Error

On-Fetch

On-Insert

On-Lock

On-Logon

On-Logout

On-Message

On-Populate-Details

On-Rollback

On-Savepoint

On-Select

On-Sequence-Number

On-Update

Post-Block

Post-Change

Post-Database-Commit

Post-Delete

Post-Form

Post-Forms-Commit

Post-Insert

Post-Logon

Post-Logout

Post-Query

Post-Record

Post-Select

Post-Text-Item

Post-Update

Pre-Block

Pre-Commit

Pre-Delete

Pre-Form

Pre-Insert

Pre-Logon

Pre-Query

Pre-Select

Pre-Text-Item

Pre-Update


Validation Triggers Validation Triggers

All Triggers

When-Validate-Item

When-Validate-Record


When Triggers When Triggers

All Triggers

When-Button-Pressed

When-Checkbox-Changed

When-Clear-Block

When-Create-Record

When-Custom-Item-Event

When-Database-Record

When-Form-Navigate

When-Image-Activated

When-Image-Pressed

When-List-Activated

When-List-Changed

When-Mouse-Click

When-Mouse-DoubleClick

When-Mouse-Down

When-Mouse-Enter

When-Mouse-Leave

When-Mouse-Move

When-Mouse-Up

When-New-Block-Instance

When-New-Form-Instance

When-New-Item-Instance

When-New-Record-Instance

When-Radio-Changed

When-Remove-Record

When-Tab-Page-Changed

When-Timer-Expired

When-Validate-Item

When-Validate-Record

When-Window-Activated

When-Window-Closed

When-Window-Deactivated

When-Window-Resized


Applying Win95 user interface standards to my items Using the Forms Developer user interface standards for Win95

Related Topics

I want to apply Win95 user interface standards to my...

frm90000.gif
button

frm90000.gif check box

frm90000.gif display item

frm90000.gif list item

frm90000.gif radio group

frm90000.gif text item

frm90000.gif text item with date format