Cambiar contenido de una DropDowDatawindow

Tengo una Datawindow con 2 campos:Documento y Observación, ambos son DDDatawindows, y quiero que cuando se escoja en el primer campo (Documento)la opción 1:documento de salida, el segundo campo me muestre un listado de las áreas u oficinas; si se escoge la opción 2:documento de entrada, el segundo campo debe mostrarme un listado de Proveedores.
He intentado varias opciones, pero hasta ahora no he tenido los resultados esperados.
Estaré muy agradecido por la respuesta que me brinde.
1

1 Respuesta

107.925 pts. clipper todas sus versiones (manejo total) power...
El manejo de un datawindow incluido en un dropdowndatawindow, es un poco peculiar. Aunque al final te das cuenta que es prácticamente lo mismo.
Por ejemplo:
En la ficha de un producto, tengo un family tree, que incluye familia y subfamilia
Cuando estoy atachando un producto a un family tree, simplemente tengo que indicar su familia y subfamilia, pero claro cuando seleccione la familia necesito ver las sub-familias
que se encuentran relacionadas, no vaya a colocar una subfamilia que no tenga nada que ver con una familia.
Bien entremos en detalle.
Para conocer el datawindow que se encuentra intregado en un dropdowndatawindow, deberás utilizar la función GETCHILD()
Esta función recibe 2 argumentos, el primero es el nombre de la columna que posee del dddw, y el segundo es una instancia de un objeto llamado
DATAWINDOWCHILD, que en definitiva es un DATASTORE.
La función en cuestión devuelve un valor del tipo numérico, 1 significa que pudo recuperar el datawindow en caso contrario devuelve un valor -1
Vamos un ejemplo.
DATAWINDOWCHILD ldwc_local
STRING ls_familia
ls_familia = dw_1.GetItemString(1, 'familia')
IF (dw_1.GETCHILD('subfamilia', ldwc_local) = 1) THEN
ldwc_local.SETTRANSOBJECT(SQLCA)
ldwc_local.RETRIEVE(ls_familia)
END IF
Como veras es simple la proyección la idea es que la función integre el datawindow en la variable ldwc_local, como pudiste observar
hay que indicar el objeto de transacción activo, recuerda que cada datawindow contiene su propio objeto de transacción.
Luevo simplemente hago un retrieve con un argumento el cual dentro del datawindow object se encuentra condicionado para hacer
una discriminación de registros que no cumplan con la condición puesta en la instrucción WHERE.
Cada vez que cambia el valor de la columna FAMILIA el proceso de actualización del datawindow en el dddw deberá ser efectuado.
De esta forma habrá una relación entre una cosa y la otra.
Para finalizar,
Cuando integres un dddw, con un datawindow que requiere un argumento, deberás desmarcar la propiedad de AUTORETRIEVE, en la ficha de la columna.
De esa forma evitaras que salga en pantalla el molesto cuadro de dialogo, solicitando dicho argumento condicional.
Esperoe esto pueda serte de utilidad
Para cambiar el datawindow object del dropdowndatawindow puedes utilizar 2 formas
La primera
dw_1.Modify("emp_status.dddw.Name='d_status'")
la segunda
dw_1.object.emp_status.dddw.Name = 'd_status'

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas