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.