This document describes how to set default values when creating new records.
There are two types of default values. These types are listed below and described in more detail in separate sections.
The client defaults give the end-user some default values before starting to register a new object in the client.
These defaults are then used like any other attribute on the screen (and maybe updated) before being sent in the ordinary packed attribute string to the server environment. The default values will be validated in the server like all other attributes, even if the field is not modified by the end-user.
New__
method in PREPARE
mode.New__
calls the implementation method
Prepare_Insert___
Prepare_Insert___
adds
the default values to the attribute string by calling system services dedicated for this purpose
i.e. the Client_SYS.Add_To_Attr
.
Note: The Prepare_Insert___
is mainly for the client but this method can be initiated from the server as well. If the record contains enumeration values, you
should remove the client
representative of the enumeration value from the attribute string, especially if you change the
server value in your business logic.
Server defaults are values that are set
by the server if the value is not set by the client in the attribute string.
Typical attributes are columns that are mandatory in the database, but are not
mandatory in the client environment. The client/server communication model
suggests that all default values set by the server
when calling the methods New__
or Modify__
are
added to any attribute string(s) when they are sent back to the client to avoid
unnecessary database queries. That is why the parameter attr_
is of
type IN OUT
in all methods for inserting or the updating of records.
The setting of server default values should be placed in the procedure
Insert___
(when creating records), or in Update___
(when modifying records). These methods can be overridden as shown in the example below. If
sequences are used for generating keys, then this code must also be placed in these
methods. It is important that the client attribute flags define the client
behavior of an attribute, a column that gets the value from a sequence should not be mandatory or not even able to insert, even if the attribute is a key
column. The column can still be set to not null using the property Nullable
on the attribute in the model, see
DbTableColumnNullable.