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

consultas query en jasperreport, listado strings

Estas en el tema de consultas query en jasperreport, listado strings en el foro de Java en Foros del Web. Hola, estoy intentando hacer una consulta con JasperReport y no comprendo porqué no funciona. La query es la siguiente: Cita: select companies.company as compania, (select ...
  #1 (permalink)  
Antiguo 15/09/2011, 04:24
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
consultas query en jasperreport, listado strings

Hola, estoy intentando hacer una consulta con JasperReport y no comprendo porqué no funciona. La query es la siguiente:

Cita:
select
companies.company as compania,
(select
count(*)
from `aodb`.`arrivalflight` a
where a.iataCompanyCode = compania and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}
) as numArr,
(select
count(*)
from `aodb`.`departureflight` b
where b.iataCompanyCode = compania and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta}
) as numDep,
(
(select
count(*)
from `aodb`.`arrivalflight` a
where a.iataCompanyCode = compania and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}
)
+
(select
count(*)
from `aodb`.`departureflight` b
where b.iataCompanyCode = compania and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta}
)
) as totalMov

from
(select distinct
e.iataCompanyCode as company
from `aodb`.`arrivalFlight` e where e.iataCompanyCode in ($P{listadoAerolineas})
union
(select distinct
f.iataCompanyCode as company
from `aodb`.`departureflight` f where f.iataCompanyCode in ($P{listadoAerolineas})
)
) as companies;
dónde listadoAerolineas es un parámetro, un string, al que si le meto los valores de modo por ej. IB", "SPP", "AEM es decir, como una lista de strings pero sin las comillas inicial y final, en otros casos, otros reportes me funciona perfectamente, pero con esta consulta no, y no tengo ni idea de porqué. Y si le meto por ejemplo solamente el valor IB, sólo un valor, entonces me funciona bien, pero necesito meterle varios.

¿Puede alguien echarme un cable? No comprendo porqué en unos sitios sí y en otros no, me estoy haciendo un lío.
Muchas gracias
  #2 (permalink)  
Antiguo 15/09/2011, 05:26
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: consultas query en jasperreport, listado strings

MmM si listadoAerolineas.por ejemplo solamente el valor IB, sólo un valor, entonces me funciona bien, pero necesito meterle varios.
No necesitaras un for para recorrer?

y en caso de que recorra, al final de cada valor de listado tiene que ver una "," para que los valores que hay dentro de la consulta in sea algo asi:
where e.iataCompanyCode in ('a','b',..)

Saludos
  #3 (permalink)  
Antiguo 19/09/2011, 08:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: consultas query en jasperreport, listado strings

Hola, al final he dado con la solución.

Por un lado, la consulta queda como sigue:

Cita:
select
companies.company as airline,
(select
count(*)
from `aodb`.`arrivalflight` a
where a.iataCompanyCode = airline and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}
) as numArr,
(select
count(*)
from `aodb`.`departureflight` b
where b.iataCompanyCode = airline and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta}
) as numDep,
(
(select
count(*)
from `aodb`.`arrivalflight` a
where a.iataCompanyCode = airline and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}
)
+
(select
count(*)
from `aodb`.`departureflight` b
where b.iataCompanyCode = 'airline' and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta}
)
) as totalMov

from
(
select distinct
e.iataCompanyCode as company
from `aodb`.`arrivalFlight` e where e.iataCompanyCode in ("$P!{listadoAerolineas}")
union
(select distinct
f.iataCompanyCode as company
from `aodb`.`departureflight` f where f.iataCompanyCode in ("$P!{listadoAerolineas}")
)
) as companies;
y por otro lado, hay que definir el parámetro listadoAerolineas como un string en el ireport, y aquí viene lo importante, ponerle un valor inicial por defecto (yo le he puesto ""). De éste modo no hay problema y todo va bien.
Además, el listado que debe metérsele como string no debe contener las comillas inicial y final, es decir, debería ser algo así:

listadoAerolineas = IB", "AEM", "OCC

Espero que le sirva a alguien, y gracias por todo.

Un saludo

Etiquetas: jasperreport, listado, query, strings
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 21:41.