Campo dddw

Campos dddw (14/04/04)
Buen día:
Tengo una datawindow con los campos Departamento y ciudad, el departamento es dddw igual que la ciudad, pero esta ultima (ciudad) debe cargarse con las ciudades según escojan en el departamento.

1 Respuesta

Respuesta
1
Lo que tienes que hacer es usar un datawindowchild para tu campo ciudad...
Lo primero que debes hacer es crea un dddw para tu campo ciudad pero con el argumento el código del departamento..
Luego en el evento itemchanged() del campo Departamento haz esto..
datawindowchild dwc_ciudad
cdw_datos.Getchild("cod_ciudad",dwc_ciudad)
dwc_ciudad.SetTransObject(sqlca)
dwc_ciudad. Retrieve(long(data))
Esto hara que cada vez que eliga un Dpto. filtre solo las ciudades de ese departamento de acuerdo al argumento que colocamos en el dddw de ciudades...
Antes de insertar una linea en du datawindow también debes hacer esto.. por que o sino te saltara una pantalla pidiéndote el argumento.. para ese caso puedes tirarle cualquier valor..
Bue día:
Te explico algo, los campos de la datawindow de dpto y ciudad son dddw,
Lo que no alcanzoa entender como capturo el depto elegido y cargar las ciudades de ese depto en el dddw de ciudad!
Me podrías aclarar esto y el código.
De antemano muchas gracias!
No hay problema.. te explico...
Al dddw de ciudades ponle un argumento de recuperación.. que en este caso seria el código del departamento... ya que imagino que tienes en una tabla todas las ciudades con los códigos de dptos respectivos.. y el dddw de ciudades es un select de esta tabla.. ¿verdad? En caso de que sea esto cierto.. quedaría un dddw con argumento de recuperación.. que la utilizaremos para recuperar en tiempo de ejecución las ciudades que queramos... según el dpto. seleccionado..
Acá te va el código..
//coloca esto en el evento itemchanged() de tu controldatawindow
datawindowchild dwc_ciudad //declaramos una variable tipo datawindowchild
//tomo como ejemplo que tu campo se llama cod_dpto..
//esto es para que corra el codigo solo si hay alguna modificación el en campo cod_dpto
if this.getcolumnname() = "cod_dpto" then
//relacionamos el datawindowchild con el campo cod_ciudad
cdw_datos.Getchild("cod_ciudad",dwc_ciudad)
//conectamos el dwc
dwc_ciudad.SetTransObject(sqlca)
//Recuperamos el dwc conectado a tu campo cod_dpto
//esto hace un filtro de todas las ciudades del departamento seleccionado
//ya que colocamos como argumento de recuperación el código del dpto. en el dddw de ciudades
// y long(data) no trae el valor del dpto. seleccionado...
dwc_ciudad. Retrieve(long(data))
end if
Espero te sirva y no dudes en consultar cualquier duda..
Una cosa que había olvidado.. es que al tener tu dddw de ciudades argumento de recuperación...
Esta te pedirá el argumento al insertar una linea en blanco...
o sea..
Supongamos que tienes un evento.. "ue_nuevo" que es el que limpia tu pantalla e inserta una linea en blanco..
Con el siguiente. código...
//Esto es por poner un ejemplo rapido.. pero es lo básico.. creo yo...
cdw_datos.reset()
cdw_datos.insertrow(0)
cdw_datos.setfocus()
//Aquí es donde te saldrá una ventana pidiéndote el arguemento.. cosa que solucionaremos...
Antes de esto tendrías que recuperar el dddw_ciudades que es el que tiene el argumento de recuperación..
O sea.. tu evento "ue_nuevo" quedaría de la siguiente manera...
cdw_datos.Getchild("cod_ciudad",dwc_ciudad)
dwc_ciudad.SetTransObject(sqlca)
dwc_ciudad. Retrieve(1) //acá le digo que recupere con el dpto uno... tu puedes tirar lo que mejor te parezca...
cdw_datos.reset()
cdw_datos.insertrow(0)
cdw_datos.setfocus()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas