GeneXus - Reporte en columnas

 
Vista:

Reporte en columnas

Publicado por alberto (4 intervenciones) el 19/05/2007 01:24:55
Hola

Estoy trabajando en Gx 9 con net y sql server, queria saber si es posible generar un reporte con 2 columnas, una al lado de otra; o sea:

---------------------------------------------------------------------------------------------------------
ENCABEZADO
---------------------------------------------------------------------------------------------------------

COLUMNA 1 COLUMNA 2
DATO1 DATO1
DATO2 DATO2
........... ...............
TOTAL COLUMNA 1 TOTAL COLUMNA 2

---------------------------------------------------------------------------------------------------------
PIE DE INFORME
---------------------------------------------------------------------------------------------------------

Esto seria mas o menos lo que quiero implementar, me gustaria que me dieran unas ideas ya que soy muy nuevo en genexus...

saludos
alberto
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:Reporte en columnas

Publicado por Juan Garcia (53 intervenciones) el 19/05/2007 02:45:12
Una de las prestaciones mas atractivas de GX es la facilidad con la que se pueden Generar reportes, no se que tan novicio seas en el uso de la herramienta pero si puedes hecharle un vistazo al GXDL de Genexus y leer el capitulo 'Impresiones con Genexus' encontraras solucion a tus dudas para la generacion de reportes, muchas veces tambien es bueno leer la ayuda de Genexus, regularmente en la descripcion de la cada instruccion hay un ejemplo basico, por lo pronto y en forma muy general seria algo como esto:

Header
print encabezado
end

for each atributo
&total1 =&total1+dato1
&total2 =&total2+dato2
print detalle
Endfor

Print Total

Footer
Print pie
end

espero sirva
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:Reporte en columnas

Publicado por alberto (4 intervenciones) el 21/05/2007 23:02:53
Juan

Gracias por responder.
Quizas no me explique bien, quiero generar 2 columnas, una al lado de la otra, de la siguiente manera:

---------------------------------------------------------------------------------------------------------
ENCABEZADO
---------------------------------------------------------------------------------------------------------

COLUMNA 1 COLUMNA 2
DATO1 DATO1
DATO2 DATO2
........... ...............
TOTAL COLUMNA 1 TOTAL COLUMNA 2

---------------------------------------------------------------------------------------------------------
PIE DE INFORME
---------------------------------------------------------------------------------------------------------

Es decir creo que debo poner 2 printblocks uno al lado de otro... ya la logica para columna 1 es distinta de la de columna 2 y no se de antemano la cantidad de DATO que tendra cada una.

Es la como una columna de Creditos y otra de Debitos, las que pertenecen a la persona X -Encabezado- y cuyos totales estan en PIE.

Agradecere cualquier ayuda-

saludos
alberto
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:Reporte en columnas

Publicado por Juan Garcia (53 intervenciones) el 22/05/2007 03:08:55
Por lo que entiendo dato1 de la columna 1 y dato 1 de la columna 2 son distintos, cada uno lo obtienes de realizar calculos distintos, si es asi, te insisto que debes usar solo un print block.
No entiendo exactamente cual es la duda, lo que te puedo decir es que despues del header/end tu puedes hacer cuantos for each necesites, imaginemos que es un reporte de clientes donde debes de representar por cada cliente en la columna 1 el monto de las facturas que le has generado y en la columna 2 el monto de los pagos que has recibido, tanto las facturas como los pagos estan en distintos archivos ok?

La logica quedaria mas o menos asi

Header
print encabezado
end

For each clientenum // aqui lees el archivo de clientes
&dato1 = 0
&dato2 = 0
for each clientenum facnum /// sumas los importes de facturas de este cliente
&dato1 = &dato1 + impfactura
endfor
For each clentenum pagonum // sumas los importes de pagos del cliente
&dato2 = &dato2 + imppago
endfor
print detalle
endfor

Footer
print pie
end

espero que esto ayude, si pudieras ser mas especifico en el caso concreto tal vez pueda darte una mejor respuesta
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:Reporte en columnas

Publicado por alberto (4 intervenciones) el 22/05/2007 22:36:39
Juan

Gracias por responder.
Te doy en caso en concreto, necesito imprimir para cada uno de los clientes el detalle de Creditos (seria columna 1) y Debitos (seria columna 2) con el total de cada uno y el total general para cada cliente.

Aclaro que puede ser que el cliente tenga N creditos (Ej: Sistema puntos $45,76, Premio $98,34) y M debitos (compra $124,23) y no tienen que ser igual N y M, o sea cualquiera de las columnas puede ser mayor a la otra.

Como decia, para cada cliente imprimo el total de debitos, total de creditos y el total situacion= credito - debito

en el pie saco los totales grales de creditos, debitos y situacion.

Si interprete bien el ejemplo que me distes, me mostrará en el print bloq el acumulador de importes factura en &dato1 y el acumuldor de importes pagados en &dato2, pero no todos los creditos y debitos que se tenga el cliente mostrados en columna... disculpa si estoy errado, pero soy medio novato en esto y me cuesta ver la situación...

Te agradezco nuevamente la ayuda amigo :-)

saludos
alberto
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:Reporte en columnas

Publicado por Juan garcia (53 intervenciones) el 23/05/2007 03:12:47
voy a asumir que tienes los importes de creditos y los de debitos en un mismo archivo y de alguna forma puedes diferenciar unos de otros (para el ejemplo vamos a suponer que los creditos son positivos y los debitos negativos), por otra parte tienes el maestro de clientes

Header
print encabezado
end

For each clientenum // lees el maestro de clientes
&creditos = 0 // por cada cliente aqui inicializas los acumuladores
&debitos = 0
for each movimiento // ahora lees los movimientos de ese cliente
if importe >0 // aqui identificas si es debito o credito
&creditos = &creditos + importe
else
&debitos = &debitos + importe
endif
endfor
&situacion = &creditos + debitos
print detalle // aqui imprimes la linea sumarizada por cada cliente
&totalcreditos = &totalcreditos + &creditos
&Totalcebitos = &totaldebitos + &debitos
Endfor // aqui terminaste de leer el maestro de clientes y resta imprimir los totales generales

&Totalsituacion = &Totalcreditos + &totaldebitos
Print Totales

si no quieres leer el maestro de clientes y que genexus realize la extension de la tabla y obtenga el nombre del cliente entonces lo que debes hacer es un corte de control, es decir, realizar un corte sobre la misma tabla cada vez que cambie el cliente, entonces quedaria asi:

Header
print encabezado
end

For each clientenum // lees el archivo de movimientos
defined by importe // esto instruye a genexus que lea el archivo especifico
&creditos = 0 // por cada cliente aqui inicializas los acumuladores
&debitos = 0
for each clientenum movimiento // ahora lees los movimientos de ese cliente
if importe >0 // aqui identificas si es debito o credito
&creditos = &creditos + importe
else
&debitos = &debitos + importe
endif
endfor
&situacion = &creditos + debitos
print detalle // aqui imprimes la linea sumarizada por cada cliente
&totalcreditos = &totalcreditos + &creditos
&Totalcebitos = &totaldebitos + &debitos
Endfor // resta imprimir los totales generales

&Totalsituacion = &Totalcreditos + &totaldebitos
Print Totales

la unica diferencia importante es el defined by
espero no confundirte es exactamente lo mismo pero en esta ocasionno estas entrando por el maestro de clientes sino es el archivo de moovimientos ordenado por numero de cliente donde realiza el corte
espero te sirva, sigo a tus ordenes
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:Reporte en columnas

Publicado por alberto (4 intervenciones) el 29/05/2007 01:04:48
Estimado Juan Garcia

Realmente me has ayudado mucho con mi duda, te agradezco mucho y espero poder ayudarte en algun momento...

Es la primera vez que participo del foro y estoy muy contento por el nivel del mismo, gracias a todos por participar!!

Saludos
Alberto
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