miércoles, 4 de enero de 2017

Colorear los registros de una datawindow

Para colorear los registros de una datawindow alternadamente (por ejemplo, pares con un color, impares con otro) modificamos la clausula de expression del background en el detalle de la datawindow.
Lo que modificaremos será el color del fondo de cada detalle. Para esto seleccionamos el cuadro resaltado de la imagen para modificar la clausula.

Al principio el contenido del recuadro estará vacío, lo que significa que el fondo de cada detalle estará coloreado del color seleccionado (generalmente blanco). El código que debes introducir en el recuadro es un número que represente el color.
En powerbuilder podemos utilizar la función RGB(red int, green int, blue int) para producir este código. Generalmente queremos asignar el color dependiendo de alguna condición. En este primer ejemplo, asignaremos el color alternadamente. Asignaremos un color para cuando la división del número de renglón entre dos sea exacta, y otro color para cuando no lo sea (pares e impares).
if ( mod(getrow(),2) = 0 , rgb(255,255,255), rgb(240,240,240) )

Podemos utilizar el mismo método para cualquier condición, por ejemplo, para asignar el color basados en el valor de una celda, o el valor de una operación.
if ( num_emp > 0 , rgb(255,0,0), rgb(255,255,255) )

Nota: Si los campos de cada detalle aparecen con un fondo diferente, debes seleccionar todos los campos y asignarles el color 'transparent', de esta manera serán transparentes, mostrandose al fondo sólo el color que queremos.

Agregar un Where a una datawindow

Para agregar una clausula where al script select de una datawindow, hacemos lo siguiente:

string ls_select, ls_where
long ll_ret
// Obtenemos el código select
ls_select = dw_emp.GetSqlSelect()
// Escribimos el where
ls_where = ' where emp > 1500 '
// Modificamos el sql select
ls_select = ls_select + ls_where
// Modificamos el sql de la datawindow
ll_ret = dw_emp.SetSQLSelect(ls_select)
La función SetSqlSelect() regresa 1 si todo salió bien, o -1 en su defecto.

Ver el código select de una datawindow

Para conocer el query Select que tiene una datawindow, siempre y cuando la datawindow haga una conexión a base de datos, haz lo siguiente:

string ls_select
// Obten el script Select
ls_select = dw_emp.GetSQLSelect()
MessageBox('', ls_select)