Power Builder - DDDW

 
Vista:

DDDW

Publicado por Barzi (36 intervenciones) el 31/10/2005 21:28:59
Hola amigos PB's encesito de su ayuda tengo una ventana (w_proveedor) que contiene un DataWindow donde estan los datos de los proveedores.. bueno dentro de este DataWindow tengo 4 DDDW's dddw_pais, dddw_departamento, dddw_provinvia, dddw_distrito... bueno lo que yo deseo es q cuando elija ejemplo:

En el dddw_pais.... PERU me muestre en los siguientes dddw's :

dddw_departamento, todos los departamentos que pertenecen a el pais seleccionado

y si en el dddw_departamento... elijo LIMA

en el dddw_provinvia , me muestre todos las provincia que pertenescan a ese departamento...

y si en el dddw_provincia... elijo LIMA

en el dddw_distrito, me muestre todos los distritos de esa provincia...

Mis tablas estan asi

Pais
-------------------------------
cod_pais varchar(4)
nom_pais varchar(50)
prefijo_pais varchar(3)

Departamento
------------------------------
cod_departamento varchar(4)
cod_pais varchar(4)
nombre_departamento varchar(4)
prefijo_departamento varchar(4)

Provincia
--------------------------------------------
cod_provincia varchar(4)
cod_pais varchar(4)
cod_departamento varchar(4)
nombre_provincia varchar(4)
prefijo_provincia varchar(4)

Distrito
---------------------------------------------
cod_distrito varchar(4)
cod_pais varchar(4)
cod_departamento varchar(4)
cod_provincia varchar(4)
nombre_distrito varchar(4)
prefijo_distrito varchar(4)

Gracias por su tiempo espero q me ayuden gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cargar DDDW

Publicado por Jancarlo (890 intervenciones) el 01/11/2005 03:57:04
Hola.

Primero q nada tu 4 dddw tienen q tener los siguientes argumentos

dddw_pais (Sin Argumentos)
dddw_dpto (cod_pais)
dddw_provi (cod_pais,cod_dpto)
dddw_dist (cod_pais,cod_dpto,cod_provi)

Primero programas en el evento retrieveend del dw donde se encuentran tus dddw.

//Esto es para recuperar los datos segun los guardaste.

datawindowchild dwc

if not rowcount >0 then return //Retornamos en caso q no haya filas

//primero filtramos los departamentos
getchild('cod_dpto',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(getitemstring(getrow(),'cod_pais'))

//segundo filtramos las provincias
getchild('cod_provi',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(getitemstring(getrow(),'cod_pais'),getitemstring(getrow(),'cod_dpto'))

//Por último filtramos los distritos
getchild('cod_dist',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(getitemstring(getrow(),'cod_pais'),getitemstring(getrow(),'cod_dpto'),getitemstring(getrow(),'cod_provi'))

Luego hay q programar en el evento itemChanged de tu dw

datawindowchild dwc
string ls_null

setnull(ls_null)

if not row>0 then return

accepttext( )

choose case this.getcolumnname()
case 'cod_pais'
setitem(row,'cod_dpto',ls_null)
setitem(row,'cod_provi',ls_null)
setitem(row,'cod_dist',ls_null)

getchild('cod_dpto',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(data)

getchild('cod_provi',dwc)
dwc.settransobject(sqlca)
dwc.reset()

getchild('cod_dist',dwc)
dwc.settransobject(sqlca)
dwc.reset()

case 'cod_dpto'
setitem(row,'cod_provi',ls_null)
setitem(row,'cod_dist',ls_null)

getchild('cod_provi',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(getitemstring(row,'cod_pais'),data)

getchild('cod_dist',dwc)
dwc.settransobject(sqlca)
dwc.reset()

case 'cod_provi'
setitem(row,'cod_dist',ls_null)

getchild('cod_dist',dwc)
dwc.settransobject(sqlca)
dwc.retrieve(getitemstring(row,'cod_pais'),getitemstring(row,'cod_dpto'),data)
end choose

Y esto es todo lo que tendrias q hacer....

Suerte!

PD: NO olvides desativar la propiedad Autoretrieve para el Departamento,Provincia y Distrito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar DDDW

Publicado por WilBet (12 intervenciones) el 02/11/2005 00:01:14
Hola Barzi,

Soy algo nuevo en PowerBuilder, no me quede con las ganas de analizar este código, porque precisamente hoy tuve que hacer algo parecido y no me funcionaba, pero gracias a DIOS y a Jancarlo apareció este código.

La respuesta que te dio Jancarlo funciona a la perfección, la única diferencia es que coloque en el evento ItemFocusChanged el código que el te sugirió colocar en el evento retrieveend, y además comenté la línea //if not rowcount >0 then return.

Att: WilBet
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Declarar los argumentos

Publicado por Barzi (36 intervenciones) el 02/11/2005 22:03:17
Gracias Juancarlo por el codigo te pasastes brother..! recien hoy pude entrar y chequear la solucion a mi problema y la verdad es justo lo que necesitaba.. mil gracias..

WilBet a mi si me respondio a perfeccion el codigo en los eventos que JuanCarlo me indico...

Pero tengo aun un problema bueno ya declare en los 4 DDDW los argumentos que JuanCarlo me indico

dddw_pais (Sin Argumentos)
dddw_dpto (cod_pais)
dddw_provi (cod_pais,cod_dpto)
dddw_dist (cod_pais, cod_dpto, cod_provi)

Ahora mi problema es cuando abro la ventana donde tengo el DataWindow que contiene los 4 DDDW (w_proveedor) me sale antes de la ventana un dialogo(Especify Retrieve Arguments) que me pide q especifique los arumentos pero no se donde declararlos lo que hice fue esto:

En el Open de la ventana (w_proveedor)

dw_1.Retrieve(ls_Pais, ls_Departamento, ls_Provincia)

pero nada... me pueden ayudar por favor como declarar esos argumentos para q no me muestre mas el dialogo (Especify Retrieve Arguments) este dialogo aparece 3 veces, la primera pidiendo el cod_pais, la segunda vez pidiendo el cod_pais y cod_dpto, y la tercera y ultima pidiendome cod_pais, cod_dpto, cod_provi, cuando doy cancelar todo normal y me funciona perfecto por favor sigamen ayudando gracias de antemano...!

Saludos de Lima - Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar los argumentos

Publicado por karen (274 intervenciones) el 02/11/2005 22:51:02
prueba poniendo el codigo en el open de tu ventana
//primero filtramos los departamentos
getchild('cod_dpto',dwc)
dwc.settransobject(sqlca)
dwc.insertrow(0)
//segundo filtramos las provincias
getchild('cod_provi',dwc)
dwc.settransobject(sqlca)
dwc.insertrow(0)

//Por último filtramos los distritos
getchild('cod_dist',dwc)
dwc.settransobject(sqlca)
dwc.insertrow(0)
insertrow por qu e aun no sabemos cual es el pais o dpto seleccionados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar los argumentos

Publicado por Jancarlo (890 intervenciones) el 03/11/2005 03:40:07
Hola Barzi

El problema es sencillo. Lo único q tienes q hacer es desactivar la propiedad AutoRetrieve de los campos que contienen el cod_dpto,cod_provi y cod_dist excepto el cod_pais

La propiedad AutoRetrieve se encuentra el la propiedades del los mencionados campos en el tab Edit.

Una vez desabilitada esa opción no tendras ningun problema.

cod_pais => AutoRetrieve = True
cod_dpto => AutoRetrieve = False
cod_provi => AutoRetrieve = False
cod_dist => AutoRetrieve = False

Atte. Jancarlo

Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar los argumentos

Publicado por WilBet (12 intervenciones) el 03/11/2005 13:55:41
Hola Barzi ,

Te envío a tu correo ([email protected]), el ejemplo en PB 10, además exporte los objetos en archivos en una carpeta llamada Export, agregue otra tabla,
te envio la estructura:


usuario: pruebitas
pass: pruebitas

Pais
-------------------------------
create table Pais
(
cod_pais varchar(4),
nom_pais varchar(50),
prefijo_pais varchar(3)
);

Departamento
------------------------------
create table Departamento
(
cod_departamento varchar(4),
cod_pais varchar(4),
nombre_departamento varchar(40),
prefijo_departamento varchar(4)
);


Provincia
--------------------------------------------
create table Provincia
(
cod_provincia varchar(4),
cod_pais varchar(4),
cod_departamento varchar(4),
nombre_provincia varchar(40),
prefijo_provincia varchar(4)
);


Distrito
---------------------------------------------

create table Distrito
(
cod_distrito varchar(4),
cod_pais varchar(4),
cod_departamento varchar(4),
cod_provincia varchar(4),
nombre_distrito varchar(40),
prefijo_distrito varchar(4)
);

Principal
---------------------------------------------
create table Principal
(
alumno varchar(40),
direccion varchar(40),
cod_pais varchar(4),
cod_departamento varchar(4),
cod_provincia varchar(4),
cod_distrito varchar(4)
);


Att: WilBet
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar DDDW

Publicado por SysPower (16 intervenciones) el 03/11/2005 16:52:45
Hola yo estoy desarrollando algo similar, yo cargo de un dddw_1 a un dddw_2 todo esta bien pero si yo selecciono algun campo del dddw_1 y ya no deseo y doy clic en el boton nuevo para q limpie los objetos me ocurre lo mismo que a barzi sale ese dialogo Especify Retrieve Argumets como puedo evitarlo y que me todo este como si estuviera abriendo recien la ventana y q el dddw_2 se desacctive tambien sin ningun campo ya q no se ah seleccionado nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar DDDW

Publicado por karen (274 intervenciones) el 03/11/2005 18:15:06
debes programar tambien los dws childs antes de hacerl el insertrow()
en lugar de hacer retrieve haces insertrow y con eso ya no debes tener mas problemas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar DDDW

Publicado por Jancarlo (890 intervenciones) el 04/11/2005 04:55:31
Lo que pasa es que cuando tu usas un DDDW con argumentos dentro de un DW y ha estos mismos no les especificas que el retrieve() sera manual (AutoRetrieve = False) entonces lo que hace PB es mostrar la famosa ventana de dialogo Specify Arguments para que ingreses los argumentos. Entonces simplemente hay q desabilitar este atributo (AutoRetrieve) para que PB no nos muestre esa ventana

Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar DDDW

Publicado por Barzi (36 intervenciones) el 04/11/2005 17:02:41
Gracias por la ayuda brindada... Jancarlo , Wilbet y Karen

Saludos de Lima - Peru
- Barzi -
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar DDDW

Publicado por Giselle (32 intervenciones) el 13/06/2006 18:47:20
Hola, mira yo tengo que hacer lo mismo que escribio Barzi, solo que quiero saber donde declaro mis tres dropdown. por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Cargar DDDW

Publicado por Jorge B (21 intervenciones) el 20/03/2009 05:30:44
Oee loca y si es datawindow grid, ahi se complica todo, aver Cha Jan... como es la cosa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar