Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ireport

Estas en el tema de ireport en el foro de Java en Foros del Web. Hola amigos, tengo un problema, en la consulta que hago para el reporte me devuelve dos columnas una es cantidad (5,8,3,etc...) y en la otra ...
  #1 (permalink)  
Antiguo 20/05/2014, 09:42
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
ireport

Hola amigos, tengo un problema, en la consulta que hago para el reporte me devuelve dos columnas una es cantidad (5,8,3,etc...) y en la otra tipo de pago ("efectivo" o "tarjeta") como puedo hacer para que en la variable de sumatoria pueda solamente sumar los que me devuelva con efectivo (no sume los de tarjeta) probe con una condición en la expresión y todavía no me funciona, de antemano les agradezco

Última edición por adrajo; 20/05/2014 a las 17:10
  #2 (permalink)  
Antiguo 21/05/2014, 13:45
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Hola. Yo tambien tengo el mismo problema con el ireport. Eh probado con muchas condiocionales, pero ni uno que encontrado por la red me a funcionado..
Alguien que sepa como se deve hacer correctamente una variable con condiocion, ya sea SUM o COUNT.
Gracias..
  #3 (permalink)  
Antiguo 21/05/2014, 15:53
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: ireport

Es sencillo.
Creas una variable que sume el field $F{CANTIDAD} de la siguiente manera:
Report Inspector -> Variables -> Agregar Variable
  • Name: SUM_CANTIDAD
  • Variable Class: java.math.BigDecimal (o java.lang.Double, depende del tipo de variable de $F{CANTIDAD}).
  • Calculation: Sum
  • Reset type: Report (depende de tu reporte)
  • Increment Type: None (depende de tu reporte)
  • Variable Expression: $F{TIPO_PAGO}.equals("EFECTIVO") ? $F{CANTIDAD} : BigDecimal.ZERO

Y voilà, la magia está hecha.
  #4 (permalink)  
Antiguo 22/05/2014, 10:43
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Farfamor eh probado lo que as comentado. Pero igual, no me funciona, el resultado que me arroja es 0. No se por que me arrojara 0 si lo acabo de hacer como tu mencionas..
  #5 (permalink)  
Antiguo 22/05/2014, 12:07
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Muchas gracias! farfamorA!!, he podido solucionarlo como tu me lo recomendaste!!
  #6 (permalink)  
Antiguo 22/05/2014, 13:13
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

yo no logro todavia solucionarlo... no se si sera mi ireport que descargue, no lo se.. pero ago todo igual pero simpre me bota como resultado 0....
me podrian dar un link de done puedo descargar un ireport actualizado
  #7 (permalink)  
Antiguo 22/05/2014, 13:27
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: ireport

Cita:
Iniciado por LBAS Ver Mensaje
yo no logro todavia solucionarlo... no se si sera mi ireport que descargue, no lo se.. pero ago todo igual pero simpre me bota como resultado 0....
me podrian dar un link de done puedo descargar un ireport actualizado
Pega aquí estos datos:
  • Name:
  • Variable Class:
  • Calculation: Sum
  • Reset type:
  • Increment Type:
  • Variable Expression:

Así como también el tipo y nombre de la variable que quieres sumar y el tipo y nombre de la o las variables que estás usando para la condicional.
  #8 (permalink)  
Antiguo 22/05/2014, 13:37
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Name: TOTAL_ACTIVO
Variable Class: java.math.BigDecimal
Calculation: Sum
Reset type: Report
Increment Type: None
Variable Expression: $F{ESTADO}.equals("ACTIVO") ? $F{IMPORTE} : BigDecimal.ZERO

el resultado siempre es 0
  #9 (permalink)  
Antiguo 22/05/2014, 15:23
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: ireport

Si retiras la condicional en Variable Expression, es decir si queda así: $F{IMPORTE}. ¿La suma se efectua correctamente?

De ser así, debe ser porque el condicional no se cumple nunca. Tienes que centrarte acá: $F{ESTADO}.equals("ACTIVO")
¿Qué tipo de dato es el field $F{ESTADO}? Porque lo que estamos haciendo ahí es utilizar el método equals para comparar dos objetos String. Es decir, se está asumiendo que $F{ESTADO} es de tipo String. Verifica eso.
  #10 (permalink)  
Antiguo 22/05/2014, 18:24
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Cuando coloco solamente $F{IMPORTE} se efectua la suma.
$F{ESTADO} es un Field de tipo String, no se por que todavia no me llega funcionar.
  #11 (permalink)  
Antiguo 22/05/2014, 18:59
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: ireport

Ya pude solucionarlo.
Estoy utilizando postgres y cuando ago una consulta siempre me devuelve el valor String con muchos caracteres en blanco.
Asi que tube que aplicar el metodo trim() para que compare correctamente.
Me quedo asi:

$F{ESTADO}.trim().equals("ACTIVO") ? $F{IMPORTE} : BigDecimal.ZERO
  #12 (permalink)  
Antiguo 22/05/2014, 19:00
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: ireport

¿Puedes copiar aquí una fila del resultado de ejecutar la Query en tu base de datos?

--
Ah, contestaste justo antes de enviar mi pregunta.
Claro, la única opción era que el problema venía de lo que te estaba devolviendo la base de datos.

Última edición por farfamorA; 22/05/2014 a las 19:01 Razón: Respuesta anterior editada

Etiquetas: ireport, jasperreports, reportes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.