Dropdowndw

Quisiera que me ayudes con un objeto column de un datawindow que le asocio un dddw, quisiera saber como hago para filtrar los datos del dddw en tiempo de ejecución a partir de una variable global cuyo valor se determina al inicio del programa, yo se que para el datawindow principal se puede crear un retrieval arguments y luego hacer un retrieve pasándole el valor de la variable, pero para el dddw pasarle la variable como argumento no lo se, ayudame please

2 Respuestas

Respuesta
1
2 formas:
1.Hacer retrieve a la dddw con el parámetro
2.Aplicarle un filtro a la dddw
Para el 2.
1.Tienes que hacer un getchild de la dddw
2.a la datawindowchild que obtenes le haces un setfilter("campo="+gs_variable_global)
Y un filter()
Para el 1.
1.A la datawindow que va en el dddw le creas un retrieval argument
2.Tienes que hacer un getchild de la dddw
3.A la datawindowchild que obtenés le haces un settransobject(sqlca)
4.le haces un retrieve(gs_variable_global)
Respuesta
1
Los objetos datawindow que se encuentran relacionados con una columna, que a su vez pertenecen a un datawindow son conocidos como dropdowndatawindow, estos simplemente reciben un dato directamente de un datawindow object.
Igualmente que como se indican los argumentos en un datawindow normal, también así son indicados en un drwopdatawindow, sin embargo estos argumentos se aplican de diferente manera. Por ejemplo.
En un datawindow object existe una columna llamada sub_familia, con esta se encuentra relacionada un datawindow por medio de un dddw, sin embargo el datawindow esta condicionado por una familia, por lo que el dropdowndatawindow unicamente deberá contener las sub-familias que pertenezcan a la familia activa.
Esto será más o menos así.
Existe un evento en el datawindow control llamado itemchanged(), en este se registran los cambios que serán hechos a la columna una vez que el usuario presione enter o tab, o simplemente cambie el foco, el nuevo dato es dado en una variable llamada DATA y de de tipo string.
DATAWINDOWCHILD ldwc_local
CHOOSE CASE LOWER(dwo.name)
CASE 'familia'
IF (THIS.Getchild('sub_familia', ldwc_local) = 1) THEN
ldwc_local.SetTransObject(SQLCA)
ldwc_local.retrieve(data)
END IF
END CHOOSE
Explicando:
La variable ldwc_local, contiene un datawindowchild, el cual es muy parecido a un datastore, la asignación del datawindow la hace la función GETCHILD(), la cual recibe 2 argumentos, el primero el nombre de la columna que contiene el dropdowndatawindow, y el otro argumento es la variable del tipo datawindowchild, la función devuelve un valor numérico 1 si todo fue correctamente y -1 si ocurrió un error.
En caso de ir todo bien. El datawindow del dddw, se encuentra en una situación de instancia en la variable ldwc_local, a la cual hay que asignar el objeto de transacción que contiene la conexión activa, en este caso SQLCA, luego efectúa un RETRIEVE() con el valor que contiene DATA, dicha variable contiene el nuevo valor que va a ser asignado a la columna FAMILIA
El cual antes que sea asignado a dicha columna, es pasado a el datawindow que se encuentra relacionado con el dddw, de la columna sub-familia,
Cuidado:
Tienes que tener cuidado en colocar la propiedad autoretrieval, en APAGADO, para que en el momento que el objeto datawindow sea construido, no cargue automáticamente los datos del datawindow, y eventualmente aparezca un cuadro de dialogo solicitando los valores de los argumentos correspondientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas