DOCUMENT #768
===========================================================================
CLEARING VARIABLES BETWEEN ROWS
===========================================================================
PRODUCT: R:BASE VERSION: 4.5+ or Higher
===========================================================================
CATALOG: Forms, Reports & Labels AREA : Forms
===========================================================================
Often variables are located on a form instead of columns, particularly when
using EEPs. If the variable has a form expression associated with it, it
gets it's value each row from the expression. Form expressions are evaluated
as a row is read in. If the expression returns a NULL then the variable
located on the form displays as NULL. You don't need to worry about previous
row values displaying. However, if the variable does not have a form
expression associated with it, for example, it's value is determined by an
EEP, then it is treated like a constant and the current value of the
variable is displayed. This means that previous row values are displayed
until new data is entered or an EEP is executed. This can cause confusion to
the user.
There are three relatively easy ways to force variables to redisplay as
NULL on each new row. Because you may have a form expression that loads the
variable value into a column, colname = .varname, you don't want to use a
form expression to do this. You can use an EEP to set the variables to NULL,
or use a default value or format mask in the Field settings. Or, you can
simply display the values using the WRITE command in an EEP instead of
actually locating the variables.
Using an EEP
When using an EEP to set variables to NULL it's placement is vital. As a
new row is set up in a form, variable values and default values are
displayed before any EEP is executed. So if you place the EEP that resets
the variables to NULL On Entry into a row, it is executed after the
variables are displayed. They are reset to NULL, but that is not reflected
in the screen display. Instead, place the EEP After saving row. This retains
any variable values needed for loading data, then sets them to NULL before
the next row is displayed. The EEP contains a single SET VAR command.
*(RESET.EEP)
SET VAR var1 = NULL, var2 = NULL, var3 = NULL
RETURN
Note that the variables are simply reset to NULL, not cleared with the CLEAR
VAR command. You do not want to actually CLEAR a variable (remove it from
memory) in an EEP. That can cause problems with form execution.
This is a good method when you have a number of variables. If you just have
one or two variables you may want to consider using the Field settings.
Using an EEP to reset the variables also works both when adding data with
the form and when editing data.
Using Field settings
You can set up a default value for a variable. Default values do not
require any programming and are stored with the form. They are only valid
when adding data however. When editing data, it is assumed that located
fields already have a value, thus defined default values are ignored.
Default values work well if you truly have a default value, or want a
default value other than NULL if users just enter through the field. You
may want a value of 999, for example, to indicate no entry instead of NULL.
A use of default values that requires a little bit of programming is to use
a variable as the default value. Define a variable of the appropriate
datatype at the R> prompt or in a Custom action in Application Express.
Leave the variable NULL. Place the dotted variable name as the default
value. When the form is run, the default variable value is picked up and
placed in the field.
For example, use SET VAR vint INTEGER for an integer field, SET VAR vdate
DATE for a date field, etc.
For TEXT fields, use a format mask instead of a default value. Use a mask
such as [%]. The format mask displays the field as blank. You can still
enter more data than the mask specifies, the mask is used only for the
initial display of the field when adding data.