Power Builder - una preguntita!!!

 
Vista:

una preguntita!!!

Publicado por Giselle (32 intervenciones) el 13/06/2006 19:04:21
Hola estuve biendo un ejemplo que soluciono Jancarlo acerca del dropdown, el ejemplo es el siguientE (MIRA DONDE DICE DONDE DECLARO ESTO....)

Primero q nada tu 4 dddw tienen q tener los siguientes argumentos (DONDE DECLARO ESTO)
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
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:una preguntita!!!

Publicado por Jancarlo (890 intervenciones) el 13/06/2006 19:33:43
Hola Giselle

Eso que señalas no son variables es decir no las tienes que definir. Esos son los nombres de los DDDW y sus cada uno con los argumentos de recuperación (Estos argumentos se definen en el query de cada DDDW). Cada uno de estos DDDW se supone que deben estar asociados a una columna donde seleccionas el "padre" y se filtran todos sus "hijos" y asi sucesivamente.

Pero xq no mejor nos comentas que deseas realizar para darte una solución más precisa.

Saludos !
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:una preguntita!!!

Publicado por Giselle (32 intervenciones) el 13/06/2006 19:49:42
Bien lo que deseo hacer es lo siguiente tengo las siguientes tablas cuentas,especificacion, y subespecificacion.

mi tablas estan asi
cuentas
cod_cuentas
num_cuenta
descrip.

t2 especificacion
cod_especificacion
cod_cuentas
num_especificacion

t3 subesp_cuenta
cod_subesp_cuenta
cod_cuentas
cod_especificacion

Entonces yo lo que quiero es que cuando voy a capturar nuevas subespecificaciones, y escoja mi cuenta , solo se me cargue en el dropdown de especificacion, las especificaciones de la cuenta que escogi.

y asi de igual manera cuando utilice estos tres dropdown en otra ventana se me cargue las especificaciones y subespecificaciones de la cuenta esojida..

Nota: las capturas de cuentas, especificacion y subespecificaion la estoy haciendo en un mismo window , ya que estoy utilizando esta propiedad "opensheetwithparm", no c si esto tenga algo que ver..
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:una preguntita!!!

Publicado por ERIC (26 intervenciones) el 13/06/2006 19:39:02
Hala que tal, al inicio del evento tendrias que declararar las var, y luego hacer sus respectivos Getitem....

Ej. para el caso que muestras.

string ls_cod_dpto, ls_cod_provi, ls_cod_dist

ls_cod_dpto = DW.GetItemString(1,'cod_dpto)
ls_cod_provi= DW.GetItemString(1,cod_provi)
ls_cod_dist = DW.GetItemString(1,'cod_dist')

Estas seran las var. que utilizaras en el Retrieve de dddw.

Espero te de una idea...

Saludos
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:una preguntita!!!

Publicado por Giselle (32 intervenciones) el 13/06/2006 19:56:49
Bien pero no entiendo, me estas diciendo que en mi drowdown tengo que crear un retrieve arguments, primero , y luego declarar lo que me indicas.
Ahora que indica el 1 que tiene el GetitemString?
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:una preguntita!!!

Publicado por ERIC (26 intervenciones) el 13/06/2006 20:51:54
Que tal Gisell, este ejemplo te lo detallo, puedes tener un solo Child, pero te lo detallo para que lo comprendas.

Este es en le evento Open de la Ventada, si en el openwhithparm le estas enviando valores que utilizan los Child, tendrias que remplazar los insertrow del Child, por Retrieve y pasar esos valores

Este es el Open

datawindowchild dwc_0,dwc_1,dwc_2,dwc_3
dw_1.SetTransObject(sqlca)

dw_1.getchild('facultad', dwc_0)
dw_1.getchild('carrera', dwc_1)
dw_1.getchild('enfasis', dwc_2)
dw_1.getchild('plan_estudio', dwc_3)

dwc_0.settransobject(sqlca)
dwc_1.settransobject(sqlca)
dwc_2.settransobject(sqlca)
dwc_3.settransobject(sqlca)

dwc_0.insertrow(1)
dwc_1.insertrow(1)
dwc_2.insertrow(1)
dwc_3.insertrow(1)

dw_1.InsertRow(1)

Este es el ItemChanged

string ls_facultad,ls_carrera,ls_enfasis,ls_planestudio
setnull(ls_facultad)
setnull(ls_carrera)
setnull(ls_enfasis)
setnull(ls_planestudio)
datawindowchild dwc_0,dwc_1,dwc_2,dwc_3
AcceptText()
Choose case GetcolumnName()
case 'facultad'
dwc_1.Reset()
dwc_2.Reset()
dwc_3.Reset()
setitem(1,'carrera',ls_carrera)
setitem(1,'enfasis',ls_enfasis)
setitem(1,'plan',ls_planestudio)
Getchild('carrera', dwc_1)
dwc_1.SettransObject(sqlca)
if dwc_1.Retrieve(data) <= 0 then
dwc_1.Reset()
dwc_1.Insertrow(1)
end if

case 'carrera'
dwc_2.Reset()
dwc_3.Reset()
setitem(1,'enfasis',ls_enfasis)
setitem(1,'plan',ls_planestudio)
ls_facultad = GetitemString(1,'facultad')
Getchild('enfasis', dwc_2)
dwc_2.settransobject(sqlca)
if dwc_2.Retrieve(ls_facultad,data) <= 0 then
dwc_2.Reset()
dwc_2.Insertrow(1)
end if

Case 'enfasis'
dwc_3.Reset()
setitem(1,'m04cod',ls_planestudio)
ls_facultad = getitemString(1,'facultad')
ls_carrera = getitemString(1,carrera')
Getchild('m04cod', dwc_3)
dwc_3.settransobject(sqlca)
if dwc_3.Retrieve(ls_facultad,ls_carrera,data) <= 0 then
dwc_3.Reset()
dwc_3.Insertrow(1)
end if
end choose

Espero te de una idea, esta es una de las formas que lo podrias hacer.

Me comentas.... Saludos
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:una preguntita!!!

Publicado por karen (274 intervenciones) el 13/06/2006 22:36:42
Giselle, tienes que hacer tus tres dw para ponerlos como dddw, el primero sin argumento de recuperacion, el segundo con 1 argumento que seria la cuenta y el tercero con dos argumentos, la cuenta y la especificacion, bueno y despues hacer lo que ya te dijeron en el itemchanged capturas el dato de la cuenta y haces retrieve con ese dato al segundo dddw y cuando estes en el campo de la especificacion capturas el valor de la cuenta y la especificacion y con esos dos datos haces retireve al ultimo dddw
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