Muchos dwchild relacionados

En powerbuilder 7: en una ventana donde tengo que especificar la identificación de una localidad tengo que definir el país, departamento, provincia y distrito de un establecimiento, y lo que hice fue configurar tres controles dropdowndw para departamento, provincia y distrito, respectivamente, cada uno de los dataobject que use en los dropdownDW piden como argumento el código de su nivel superior(osea el departamento pide el código de país, el de provincia pide el de país y departamento, el de distrito pide país, departamento y provincia) el problema esta en lo siguiente, cuando conecto el datawindow principal todos los datawindowschild configurados comienzan a pedirme argumentos, he estado intentando utilizar el datawindow principal desconectado y me da resultado hasta cierto nivel pero cuando lo conecto para utilizar el retrieve todos los dwchild me vuelven a presentar su ventana para ingresar los argumentos. Esperando que tenga una solución para mi inconveniente me despido.

1 Respuesta

Respuesta
1
Se puede solucionar de la siguiente forma:
Supongo que ya controlas que cuando se modifica el campo país, departamento y provincia haga el retrive correspondiente a los dddw.
En el constructor de la datawindows ponemos lo siguiente:
DataWindowChild ldwc
// Recuperamos el pais
this.GetChild('pais',ldwc)
ldwc.SetTransObject(SQLCA)
if ldwc.Retrieve()= 0 then
ldwc.InsertRow(0)
end if
// Como no tenemos pais todavía recuperamos el departamento en vacio
this.GetChild('departamento',ldwc)
ldwc.SetTransObject(SQLCA)
if ldwc.Retrieve(' ')= 0 then
ldwc.InsertRow(0)
end if
// Idem para provincia, este necesita dos argumentos, el pais y el departamento
this.GetChild('provincia',ldwc)
ldwc.SetTransObject(SQLCA)
if ldwc.Retrieve('','') = 0 then
ldwc.InsertRow(0)
end if
en el evento ItemChanged ponemos lo siguiente:
DataWindowChild ldwc
String ls_pais
if row > 0 then
choose case dwo.name
case 'pais'
if len(data) > 0 then
// Tenemos pais, por lo que inicializamos departamento
this.GetChild('departamento',ldwc)
ldwc.SetTransObject(SQLCA)
if ldwc.Retrieve(data) = 0 then
ldwc.InsertRow(0)
end if
end if
case 'departamento'
if len(data) > 0 then
// Tenemos departamento, para que esto salga, necesitamos haber
// seleccionado el pais, por lo que este dato ya lo tenemos
ls_pais = this.Object.pais[row]
this.GetChild('provincia',ldwc)
ldwc.SetTransObject(SQLCA)
if ldwc.Retrieve(ls_pais, data) = 0 then
ldwc.InsertRow(0)
end if
end if
end choose
end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas