Entering data on a form: INPUT statement
The INPUT
statement allows the user to enter or change the values in
a program record, which can then be used as the data for new rows in a database table, or to
update existing rows.
In the INPUT
statement you list:
- The program variables that are to receive data from the form
- The corresponding form fields that the user will use to supply the
data
INPUT
<program-variables>FROM
<form-fields>
The FROM
clause explicitly binds the fields in the screen record to the program
variables, so the INPUT
instruction can manipulate values that the user
enters in the screen record. The number of record members must equal the number of
fields listed in the FROM
clause. Each variable must be of the same (or
a compatible) data type as the corresponding screen field. When the user enters data,
the runtime system checks the entered value against the data type of the variable, not
the data type of the screen field.
When invoked, the INPUT
statement enables the specified fields of the form in
the current BDL window, and waits for the user to supply data for the fields. The user
moves the cursor from field to field and types new values. Each time the cursor leaves a
field, the value typed into that field is deposited into the corresponding program
variable. You can write blocks of code as clauses in the INPUT
statement that will be called automatically during input, so that you can monitor and
control the actions of your user within this statement.
The INPUT
statement ends when the user selects the accept
or cancel actions.
INPUT
supports the same shortcuts for naming records as the
DISPLAY
statement. You can ask for input to all members of a
record, from all fields of a screen record, and you can ask for input BY
NAME
from fields that have the same names as the program variables.
INPUT BY NAME
<program record>.*
UNBUFFERED attribute
By default, field values are buffered. The UNBUFFERED
attribute
makes the INPUT
dialog "sensitive", allowing you to easily change some form
field values programmatically during INPUT
execution.
When you assign a value to a program variable, the runtime system will automatically display that
value in the form; when you input values in a form field, the runtime system will
automatically store that value in the corresponding program variable. Using the
UNBUFFERED
attribute is strongly recommended.
WITHOUT DEFAULTS attribute
An INPUT
with the WITHOUT DEFAULTS
attribute can be
used to allow the user to make changes to an existing program record representing a row in
the database.
The same INPUT
statement can be used, with the WITHOUT DEFAULTS
attribute, to allow the user to make changes to an existing program record representing
a row in the database. This attribute prevents BDL from automatically displaying any
default values that have been defined for the form fields when INPUT
is
invoked, allowing you to display the existing database values on the screen before the
user begins editing the data. In this case, when the INPUT
statement is
used to allow the user to add a new row, any existing values in the program record must
first be nulled out. Note however that the REQUIRED
attribute is
ignored when WITHOUT DEFAULTS
is TRUE
. If you want to
use REQUIRED
, for example to force the end user to visit all required
fields and fire the AFTER FIELD
trigger to validate the entered data,
you can turn off or on the WITHOUT DEFAULTS
attribute according to the
need, by using a Boolean expression.