Form field initialization
Form field initialization can be controlled by the WITHOUT DEFAULTS
dialog option.
The INPUT
and INPUT ARRAY
dialogs provide the WITHOUT
DEFAULTS
option to use program variable values when the dialog starts, or
to apply the DEFAULT
attribute defined in forms. The semantics of this
option is slightly different in INPUT
and INPUT ARRAY
dialogs. Use of the WITHOUT DEFAULTS
clause is always recommended in
INPUT ARRAY
.
The WITHOUT DEFAULTS
option can be used in the binding clause or as an
ATTRIBUTES
option. When used in the binding clause, the option is
defined statically at compile time as TRUE
. When used as an
ATTRIBUTES
option, it can be specified with an integer expression
that is evaluated when the DIALOG
interactive instruction starts:
INPUT BY NAME p_cust.* ATTRIBUTES (WITHOUT DEFAULTS = NOT new)
...
END INPUT
The WITHOUT DEFAULTS clause in INPUT
In the default mode, an INPUT
clears the program variables and assigns the
values defined by the DEFAULT
attribute in the form file (or indirectly, the
default value defined in the database schema files). This mode is typically used to input and
INSERT a new record in the database. The REQUIRED
field attributes are checked
to make sure that the user has entered all data that is mandatory. Note that
REQUIRED
only forces the user to enter the field, and can leave the value
NULL
unless the NOT NULL
attribute is used. Therefore, if you
have an AFTER FIELD
or ON CHANGE
control block with validation
rules, you can use the REQUIRED
attribute to force the user to enter the field
and trigger that block.
In contrast, the WITHOUT DEFAULTS
option starts the INPUT
dialog with the existing values of program variables. This mode is typically used in order to
UPDATE an existing database row. Existing values are considered valid, thus the
REQUIRED
attributes are ignored when this option is used.
The NOT NULL
field attribute is always checked at
dialog validation, even if the WITHOUT DEFAULTS
option
is set.
The WITHOUT DEFAULTS clause in INPUT ARRAY
With an INPUT ARRAY
,
the WITHOUT DEFAULT
option defines whether the program array is
populated when the dialog begins. Once the dialog is started, existing rows are
always handled as records to be updated in the database (WITHOUT
DEFAULTS=TRUE
), while newly created rows are handled as records to be
inserted in the database (WITHOUT DEFAULTS=FALSE
). In other words,
column default values defined in the form specification file or the database schema
files are only used for new created rows.
INPUT ARRAY
with no WITHOUT
DEFAULTS
option, because the program array would be cleared and the list would appear
empty.INPUT ARRAY
used inside
DIALOG
is WITHOUT DEFAULTS=TRUE
, but in a singular
INPUT ARRAY
dialog, the default is WITHOUT
DEFAULTS=FALSE
.