Power Builder - DataWindow Dinamico

   
Vista:

DataWindow Dinamico

Publicado por Cibernauta (45 intervenciones) el 27/09/2007 22:59:29
Amigos una consulta:
Estoy haciendo un window (de tipo ancestro) con dos datawindow donde uno sera el padre (dw_1) y el otro será el hijo (dw_2).
La idea es que con solo pegar los dataobjects correspondientes el conjunto interactue solo; el código detras de todo eso estara solo en el ancestro que estoy haciendo.

Como los casos pueden ser variados, es decir, en un caso el dw_1, padre, puede no requerir argumento en el retrieve y el hijo de hecho que si, el hijo puede requerir uno, dos, tres, etc. argumentos, para este caso ya encontre la forma de identificar que columnas del dw_1 serviran de argumentos para el dw_2.
Mi problema es el pasar los argumentos al dw_2. Por lo general suele ser un retrieve con una cantidad fija de argumentos:
dw_2.retrieve('01020','05/02/2006')
ya sea que se ponga como valores constantes o como variables pero siempre se indica una cantidad fija de valores en el retrieve. Lo que necesito es poder hacer retrieve de una cantidad variable. ¿Me dejo entender? Para un caso el dw_2 puede requerir solo un argumento, para otros puede que tres, para otro puede que 5, etc.
Hasta donde he programado, me es posible saber los datos del dw_1 que requiere como argumento el dw_2. Estos datos los puedo armar como cadena o meterlos en un array si fuera necesario. pero no se como invocar el retrieve sin pasar la cantidad exacta de parametros para que sea de forma automatica.
¿alguien ha hecho algo asi?

Agradecere sus aportes.
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:DataWindow Dinamico

Publicado por davis (79 intervenciones) el 28/09/2007 17:12:10
Hola Cibernauta

Lo q puedes hacer es crear un evento en tu dw
q no este asociado a ningun evento , y sin argumentos

ue_hacer_retireve

luego en el open de tus ventana Padre
llamarias al evento q creado

Open Window Padre
----
dw_1.ue_hacer_retireve ()

//hasta ahi todo bien
//el siguiente paso es escribir el codigo en el evento ue_hacer_retireve ()
de los dw , en los windows heredados

Window_Heredado_1
dw_1.ue_hacer_retireve ()
dw_1.retrieve (arg_1 ,arg_2 ,arg_3 , nargumentos .... )

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:DataWindow Dinamico

Publicado por Cibernauta (45 intervenciones) el 28/09/2007 18:32:20
Gracias por su ayuda, ciertamente me han ayudado a solucionar mi problema.
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:DataWindow Dinamico

Publicado por achafio (88 intervenciones) el 28/09/2007 17:23:00
Puedes utilizar esta forma, para ello el dw2 no debe recibir parametro alguno, por medio del script lo pasas.

Evento constructor dw2
is_query = object.datawindow.table.select

//Colocarlo donde deseas que haga el retrieve
if condicion=1 then
ls_opcion = "WHERE campo1='"+param1+"' and campo2='"+param2+"'"
end if
if condicion=2 then
ls_opcion = "WHERE campo1='"+param1+"'"
end if
...

ls_sql = is_query + ls_opcion
dw_2.object.datawindow.table.select = ls_sql
dw_2.settransobject(sqlca)
dw_2.retrieve()

Saludos de Lima - Peru
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:DataWindow Dinamico

Publicado por Cibernauta (45 intervenciones) el 28/09/2007 18:31:41
Gracias por su ayuda, ciertamente me han ayudado a solucionar mi problema.
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:DataWindow Dinamico

Publicado por LIDIA (2 intervenciones) el 05/10/2011 21:46:09
ESPERO ME FUNCIONE..!!!! GRACIAS
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:DataWindow Dinamico

Publicado por TIROLOKO (40 intervenciones) el 28/09/2007 17:47:21
la respuesta de achafio es muy buena .. creo que a estas alturas ya solucionaste ese problema con lo que te dijo achafio,,, pero no esta por demas dejarte este comentario ..
tambien c puede hacer poniendo el numero paximo de argumentos que tu creas que vas a usar en el dw y en la condicion en osea en el where poner el like en vez de = 0 <> y si solo necesitas mandar 1 o 2 argumentos mandalos y los demas le mandas un '%' asi y en caso de que el argumento sea numerico puedes usar el convert(char(x), campo_tabla) en el where .....
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:DataWindow Dinamico

Publicado por Cibernauta (45 intervenciones) el 28/09/2007 18:31:16
Gracias por su ayuda, ciertamente me han ayudado a solucionar mi problema.
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:DataWindow Dinamico

Publicado por davis (79 intervenciones) el 28/09/2007 19:41:56
.......O tambien podria probar con
string ls_select_q_quieres_cargar

dw_1.setsqlselect(ls_select_q_quieres_cargar )
dw_1.retrieve
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:DataWindow Dinamico

Publicado por cUCo (1 intervención) el 25/04/2008 00:22:31
Gracias por su ayuda, ciertamente me han ayudado a solucionar mi problema.
Saludos

PLOP!
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