Form field specification in CONSTRUCT
In order to produce an SQL condition, the CONSTRUCT
instruction uses a list of
database columns that must match form fields for user input.
In ATTRIBUTES
section of the form file, fields are typically defined from a
database schema (with the form tabname.colname), to get the corresponding data type; however, it is also
possible to use FORMONLY.field-name
specifications with the TYPE
data-type
clause.
Unlike INPUT
, DISPLAY ARRAY
and INPUT ARRAY
,
the CONSTRUCT
dialog does not use a program variable for each form field.
Only one string variable is required, to hold the SQL condition. Individual field criteria is
available in the input buffers (GET_FLDBUF()
, DIALOG.getFieldBuffer()
).
The list of database columns specified in the CONSTRUCT
statement will appear
in the SQL condition produced.
Binding columns and fields by name
CONSTRUCT BY NAME variable ON column-list
syntax maps the
field names to database column names by name. Form fields are typically defined in the form by
following a database schema, specifying the column name and data type.SCHEMA stock
DEFINE where_part STRING
...
CONSTRUCT BY NAME where_part ON cust_name, cust_address
...
END CONSTRUCT
Binding columns and fields by position
The CONSTRUCT variable ON column-list FROM field-list
clause explicitly maps database columns to form fields by position. The form can include other
fields that are not part of the specified column list, but the number of variables or record
members must equal the number of form fields listed in the FROM
clause. Each
database column must be of the same (or a compatible) data type as the corresponding form
field. When the user enters data, the runtime system checks the entered value against the data
type of the form field.
DEFINE where_part STRING
...
CONSTRUCT where_part ON cust_name, cust_address
FROM field_02, field_04
...
END CONSTRUCT