Para acceder a los valores de los campos del registro en el que se encuentra el cursor se puede hacer simplemente usando :bloque.campo.
Si se hace desde una unidad de programa de una PLL habría que usar el Bult-in NAME_IN que se usa de de la siguiente forma: NAME_IN('BLOQUE.CAMPO'). Además de permitir usarse en desde una librería también nos permite hacer código genérico en tiempo de ejecución.
De forma similar, para asignar un valor habría que usar COPY. Se usaría de la siguiente forma: COPY('VALOR A ASIGNAR', 'BLOQUE.CAMPO');
Cuando se quiere acceder a valores de campos de otros registros distintos al actual es donde entra en juego la propiedad DATA_VALUE de Get_Item_Instance_Property y Set_Item_Instance_Property.
Para acceder al valor de un campo del registro anterior al actual se haría con:
Get_Item_Instance_Property('BL.CAMPO', TO_NUMBER(:system.cursor_record) - 1, DATA_VALUE);
Para cambiar el valor de un campo del registro anterior:
Set_Item_Instance_Property('BL.CAMPO', TO_NUMBER(:system.cursor_record) - 1, DATA_VALUE, 'VALOR A ASIGNAR');
Por ejemplo, si queremos colorear un registro basándonos en registros anteriores, se podría hacer de la siguiente forma. POST-QUERY:
FMB de ejemplo: giip_data_value.fmb
No hay comentarios:
Publicar un comentario