BEFORE FIELD block
In dialog instructions INPUT
, INPUT ARRAY
,
CONSTRUCT
or in a DISPLAY ARRAY
using the
FOCUSONFIELD
attribute, the BEFORE FIELD
block is executed every
time the specified field gets the focus.
For single record inputs driven by INPUT
or query by example (QBEs) driven by
CONSTRUCT
, the BEFORE FIELD
block is executed when moving the
focus from field to field.
For editable lists driven by INPUT ARRAY
, the BEFORE
FIELD
block is executed when moving the focus from field to field in the same row, or when
moving to another row in the same column.
For record lists driven by DISPLAY ARRAY
using the FOCUSONFIELD
attribute, the BEFORE FIELD
block is executed when moving the focus from field to
field. However, the fields will not be editable as in an INPUT ARRAY
.
The BEFORE FIELD
keywords must be followed by
a list of form field specification. The screen-record name can be
omitted.
BEFORE FIELD
is executed after BEFORE
INPUT
, BEFORE CONSTRUCT
, BEFORE
ROW
and BEFORE INSERT
.
Use this block to do some field value initialization, or to display a message to the user:
INPUT BY NAME p_cust.* ...
BEFORE FIELD cust_status
LET p_cust.cust_comment = NULL
MESSAGE "Enter customer status"
When using the default FIELD ORDER CONSTRAINT
mode,
the dialog executes the BEFORE FIELD
block of
the field corresponding to the first variable of an
INPUT
or INPUT ARRAY
, even if that
field is not editable (NOENTRY
, hidden or disabled).
The block is executed when you enter the dialog and every time you
create a new row in the case of INPUT ARRAY
.
This behavior is supported for backward compatibility.
The block is not executed when using the FIELD
ORDER FORM
, the mode recommended for DIALOG
instructions.
With the FIELD ORDER FORM
mode, for each dialog executing for the first time
with a specific form, the BEFORE FIELD
block will be invoked for the first field of
the initial tabbing list defined by the form, even if that field was hidden or moved around in a
table. The dialog then behaves as if a NEXT FIELD first-visible-column
had been
executed in the BEFORE FIELD
of that field.
When form-level validation occurs and a field contains an invalid
value, the dialog gives the focus to the field, but no BEFORE
FIELD
trigger will be executed.