Defining a code table
To reduce storage needs, you frequently want to store short,
encoded values in the database. But these encoded values may not
be meaningful to users. To make DataWindow objects easy to use, you can
define code tables.
Each row in a code table is a pair of corresponding values:
a display value and a data value. The display values are those users see at
runtime. The data values are those that are saved in the database.
Limit on size of data value The data value you specify for the Checkbox, DropDownListBox,
Edit, EditMask, and RadioButtons edit styles is limited to 255 characters.
How code tables are implemented
You can define a code table as a property of the following
column edit styles:
- Edit
- DropDownListBox
- RadioButtons
- DropDownDataWindow
- EditMask, using spin control
The steps to specify the code table property for each edit
style are similar: you begin by defining a new edit style in the
Database painter. Once you select an edit style, use the following
specific procedure to define the code table property.
For how to create an edit style, see “About edit styles “.
Allowing NULL values An internal PowerBuilder code, NULL!, indicates null values
are allowed. To use this code, specify NULL! as the data value,
then specify a display format for nulls for the
column.
To define a code table as a property of the Edit
edit style:
-
Select the Use Code Table check box.
-
Enter the display and data values for the code
table. -
If you want to restrict input in the column to
values in the code table, select the Validate check box.For more information, see “Validating user input”.
To define a code table as a property of the DropDownListBox
edit style:
-
Enter the display and data values for the
code table. -
If you want to restrict input in the column to
values in the code table, clear the Allow Editing check box.For more information, see “Validating user input”.
To define a code table as a property of the RadioButtons
edit style:
-
Enter the display and data values for the
code table.
To define a code table as a property of the DropDownDataWindow
edit style:
-
Specify the column that provides the display
values in the Display Column box. -
Specify the column that provides the data values
in the Data Column box. -
If you want to restrict input to values in the
code table, clear the Allow Editing check box.
To define a code table as a property of the EditMask
edit style:
-
Select the Spin Control check box.
-
Select the Code Table check box.
-
Enter the display and data values for the code
table.
How code tables are processed
When data is retrieved into a DataWindow object column with a code
table, processing begins at the top of the data value column. If
the data matches a data value, the corresponding display value displays.
If there is no match, the actual value displays.
Consider the example in Table 22-10.
| Display values |
Data values |
|---|---|
| Massachusetts | MA |
| Massachusetts | ma |
| ma | MA |
| Mass | MA |
| Rhode Island | RI |
| RI | RI |
If the data is MA or ma, the corresponding display value (Massachusetts) displays.
If the data is Ma, there is no match, so Ma displays.
Case sensitivity Code table processing is case sensitive.
If the code table is in a DropDownListBox edit style, and
if the column has a code table that contains duplicate display values,
then each value displays only once. So if this code table is defined
for a column in a DataWindow object that has a DropDownListBox edit style,
Massachusetts and Rhode Island display in the ListBox portion of
the DropDownListBox.
Validating user input
When users enter data into a column in a DataWindow object,
processing begins at the top of the display value column of the
associated code table.
If the data matches a display value, the corresponding data
value is put in the internal buffer. For each display value, the
first data value is used. Using the sample code table, if the user
enters Massachusetts, ma, or Mass, MA is the data value.
You can specify that only the values
in the code table are acceptable:
- For a column using the Edit edit style, select the Validate
check box.
If you have selected the Validate check box for the Edit edit
style, an ItemError event is triggered whenever a user enters a
value not in the code table. Otherwise, the entered value is validated
using the column’s validation rule, if any, and put in
the DataWindow buffer. - For the DropDownListBox and DropDownDataWindow edit
styles, clear the Allow Editing check box: users cannot type
a value.
Although users cannot type a value when you clear the Allow
Editing check box, they can search for a row in the drop-down list
or DataWindow by typing in the initial character for the row display
value. The search is case sensitive. For the DropDownDataWindow
edit style, the initial character for a search cannot be an asterisk
or a question mark. This restriction does not apply to the DropDownListBox
edit style.
When the code table processing is complete, the ItemChanged
or ItemError event is triggered.
Code table data The data values in the code table must pass validation for
the column and must have the same datatype as the column.