ON ROW CHANGE block
Syntax
ON ROW CHANGE
instruction [...]
Usage
The ON ROW CHANGE
block is executed in a list controlled by an INPUT
ARRAY
, when leaving the current row and when the row has been modified since it got the
focus. This is typically used to detect row modification.
The code in ON ROW CHANGE
will not be executed when leaving new rows created by
the user with the default append or insert action. To detect row creation, you must use the
BEFORE INSERT
or AFTER INSERT
control blocks.
The ON ROW CHANGE
block is only executed if at least one field value in the
current row has changed since the row was entered, and the modification flag of the field is set.
The modified field(s) may not be the current field, and several field values can be changed. Values
may have been changed by the user or by the program. The modification flag is reset for all fields
when entering another row, when going to another sub-dialog, or when leaving the dialog
instruction.
ON ROW CHANGE
is executed after the AFTER FIELD
block
and before the AFTER ROW
block.
When called in this block, DIALOG.getCurrentRow() / arr_curr()
return the index of the current row that has been changed.
You can, for example, code database modifications (UPDATE
) in the ON ROW
CHANGE
block:
INPUT ARRAY p_items FROM s_items.*
...
ON ROW CHANGE
LET r = DIALOG.getCurrentRow("s_items")
UPDATE items SET
items.item_code = p_items[r].item_code,
items.item_description = p_items[r].item_description,
items.item_price = p_items[r].item_price,
items.item_updatedate = TODAY
WHERE items.item_num = p_items[r].item_num