Power Builder - DW Composite (2 dw filtrados)

   
Vista:
Imágen de perfil de Leonardo

DW Composite (2 dw filtrados)

Publicado por Leonardo (75 intervenciones) el 26/10/2009 22:16:22
Hola que tal, necesito hacer un reporte compuesto, el cual lleva dentro 3 DW, los cuales tienen sus parametros de entrada, pero no se como hacer para que haga los retrieve en cada uno

ya intente lo sig. en el informe principal coloque los parametros y luego en cada dw anidado asigne esos valores ( del inform principal) a cada uno de los parametros del de anidado, y solo lo hace para el primer DW, para los otros 2 nop, en modo de ejecucion del sistema, porque si lo hago en el preview del diseñador, si los muestra como es.!

2da. sin parametros en el contenedor de los dw, pero los dw anidados si con sus argumentos de consulta

e intente hacerlo con Getchild, pero solo me lo hace para el primer dw

para los otros 2, se los brinca y me muestra la ventana para que yo meta los valores..!!


s_reporte ls_reporte
string ls_orden
datawindowchild dw_rep1, dw_rep2
integer li_rtn, li_año, li_qna
string ls_qna

ls_reporte = Message.PowerObjectParm

this.title = ls_reporte.s_titulo

if ls_reporte.s_size = "C" then
st_size.Text = "Carta"
else
st_size.Text = "Oficio"
end if

dw_reporte.Object.DataWindow.Print.Preview = "yes"
dw_reporte.SetTransObject(sqlca)

string ls_er
if ls_reporte.s_size = "C" then
ls_er = dw_reporte.modify("datawindow.print.paper.size=1")
else
ls_er=dw_reporte.modify("datawindow.print.paper.size=5")
end if
dw_reporte.SetRedraw(false)

li_año = Integer( w_rep_comb.em_año.Text )
li_qna = Integer( w_rep_comb.em_qna.Text )
ls_qna = String(li_año)+"01"

//dw_reporte.Retrieve( li_año, li_qna, Integer(ls_qna) )
li_rtn = dw_reporte.GetChild('dw_1', dw_rep1)
dw_rep1.Settransobject( sqlca )

li_rtn = dw_reporte.GetChild('dw_2', dw_rep2)
dw_rep2.Settransobject( sqlca )
dw_rep2.Retrieve( li_año, li_qna, Integer(ls_qna) )
dw_rep1.Retrieve( li_año, li_qna, Integer(ls_qna) )

//if dw_reporte.Retrieve() = 0 then
// Messagebox("Aviso", "No existe Información Solicitada")
// close(this)
// return
//end if
//
//
dw_reporte.SetRedraw(true)
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:DW Composite (2 dw filtrados)

Publicado por miguell (153 intervenciones) el 27/10/2009 02:47:09
o sea, cuando haces un preview desde powerbuilder (sin ejecutar) te pide rellenar los argumentos y todo va bien?

entonces yo diría que desde código debería bastar con un sólo retrieve del contenador, pasando los argumentos de recup.
Me da por pensar que a lo mejor tienes (uno de los dw's) repetidos en alguna librería, al la hora de ejecutar encuentra siempre el primero según la lista de librerías que tengas. Si la tienes en librería A (accidentalmente) y haces el preview con los objetos en librería B (donde deben de estar), pero tienes lib A antes de lib B asignado en el objeto de la aplicación, te va a usar la de lib A.

por si no es eso:
-----------------------
has intentado quitar el :

dw_reporte.Object.DataWindow.Print.Preview = "yes"

y el
dw_reporte.SetRedraw(false) por si acaso también temporalmente?

me suena que eso del "printpreview" da (y también resuelve) muchas problemas
lo puedes poner después de la recuperación ???

primero haría la recuperación y a ver qué es lo que no está bien.
( cuando lo haces con GetChild( ) , tu dw_2 realmente se llama dw_2?, has probado lo que devuelve el Getchild( ) y el retrieve()
?
)

si no lo logras, mándame el código exportado de los 3 datawindows y veré si hay algo raro con los 'id's internos', aunque no creo ya que desde printpreview va bien.)

miguel ( mjlreina38 hotmail com )
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
Imágen de perfil de Leonardo

RE:DW Composite (2 dw filtrados)

Publicado por Leonardo (75 intervenciones) el 27/10/2009 15:26:06
Hola, pues ya habia probado el quitar el

dw_reporte.Object.DataWindow.Print.Preview = "yes"

y el
dw_reporte.SetRedraw(false)

pero no funciono.!

ya verifique ke no marque error con getchild y con retrieve y no marca nada.!
no se ke seaa...!
---------------------------------------------------------------------------------------------------
li_rtn = dw_reporte.GetChild('dw_1', dw_rep1)
if li_rtn = - 1 then
messagebox("aviso", "no pude con dw1")
end if
dw_rep1.Settransobject( sqlca )
if dw_rep1.Retrieve( li_año, li_qna, Integer(ls_qna) ) = -1 then
messagebox("aviso", "no pude con retrieve dw1")
end if

li_rtn = dw_reporte.GetChild('dw_2', dw_rep2)
if li_rtn = - 1 then
messagebox("aviso", "no pude con dw2")
end if
dw_rep2.Settransobject( sqlca )

if dw_rep2.Retrieve( li_año, li_qna, Integer(ls_qna) ) = -1 then
messagebox("aviso", "no pude con retrieve dw2")
end if
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:DW Composite (2 dw filtrados)

Publicado por miguell (153 intervenciones) el 27/10/2009 19:49:02
pues si no hay ninguno de los objetos repetido (y diferente) en otra pbl de powerb y a no ser que tenga que ver algo con lo de "integer( ls_qna)" entonces me quedo en blanco.

mándame los objetos si quieres y lo miro.
Miguel
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:DW Composite (2 dw filtrados)

Publicado por miguell (153 intervenciones) el 27/10/2009 20:12:19
especialmente si has copiado columnas de un dw y pegado en otra, suele pasar que "se corrompen los 'id's internos de las columnas" de los datawindows'.

exportalos y mira que cada id corresponde a la columna que realmente es.
( busca "id=1", mira cuál columna es y si corresponde con el orden de las columnas del select (busca "COLUMN(") ).
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:DW Composite (2 dw filtrados)

Publicado por miguell (153 intervenciones) el 27/10/2009 20:01:04
hola Leanardo,

me ha llamado la atención que usas una variable "li_año". No sé con qué versión de powerbuilder estás ni con cuales parches, pero intenta no usar el carácter "ñ", cambia el nombre de variable.

he visto cosas realmente extrañas en versiones antiguas de pb y no es nada nuevo que antiguos errores ya resueltos vuelven a existir en versiones más nuevas de pb.

si no es por eso:

la única explicación lógica me parece que va a ser lo siguiente.

desde powerbuilder, abriendo el dw y haciendo un preview va bien dices:
allí la diferencia es que al teclear los argumentos powerbuilder los convierte automáticamente al tipo que es: en otras palabras si un argumento es un string no hace falta teclear los "".

desde tu código estás convirtiendo uno de los argumentos a integer( ). no dudo de tu inteligencia pero ... verificaría si eso va bien, y si los argumentos del retrieve están en el orden adecuado.

miguel
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
Imágen de perfil de Leonardo

RE:DW Composite (2 dw filtrados)

Publicado por Leonardo (75 intervenciones) el 27/10/2009 21:19:18
Hola, los parametros ke recibe el DW son numericos los 3, por eso lo envio asi, hice lo ke me dijiste de quitar el integer( ls_qna ) y me marca error de tipo

no se ke pase, la vdd, ya estoy hasta la madre jajajaja como decimos aki en mexico


con respecto a lo de los ID's pues es el mismo DW pero lo modifique le cambie la clausula where, pero en realidad pues viene siendo el mismo, lo guarde con otro nombre dw_rep_amplicacion_presup1 y lo modifique y lo guarde como dw_rep_amplicacion_presup2


y pues ya le puse los parametros al contenedor composite y le asigne esos parametros a los otros 2 DW, en preview de diseño todo se ve perfecto
pero en ejecucion no pasa asi, ya verifique los datos con el debugger y todo va bien....! solo me muestra el primer DW del composite, el 2do, no lo muestra
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:DW Composite (2 dw filtrados)

Publicado por miguell (153 intervenciones) el 27/10/2009 22:10:53
- intenta ver si algún código en algún evento del control del dw principal que pueda influir.
- quita el segundo dw y vuelve a añadirlo al dw del report ...

más no se me ocurre

mjlreina38 hotmail com
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
Imágen de perfil de leonardo

RE:DW Composite (2 dw filtrados)

Publicado por leonardo (75 intervenciones) el 28/10/2009 20:29:24
hola, jajajaajja a quedoooo, no no puedo creerlooooo

era el parametro de Integer( ls_qna ) lo pase a Long( ls_qna ) y asunto arreglado jajaajaj

como no lo supuse, ya habia tenido broncas pasando parametros a funciones..!

de todas formas 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:DW Composite (2 dw filtrados)

Publicado por jajaja (153 intervenciones) el 28/10/2009 22:44:52
jajaja, ya ... era lo único que quedaba...

felicidades amigo,
a veces cositas tan sencillas nos cuestan (a mi también me pasa a veces)
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