Saludos tropa, hetenido que regressar el Pentaho 2.0 para dar mantenimientos a unos reportes que tenia hecho. Y requiero de analizar si en un filtros se me pasa valor mostrar en el reporte el valor entrado y si no mostrar la palabra Todos.
Este es el caso en particular. tengo un reporte donde debo pasar un intervalo de fechas de caracter obligado y una lista de oficinas de donde se puede seleccionar una o ninguna.
el reporte tendrá el siguiente encabezado
1
para ello en el Design Studio declaramos las siguientes variables
2
el campo que esta subrayado es el que guardara el valor que pasaremos para la plantilla del reporte
OFICINAS=> ${OFICINAS}
mientras que OFICINA es a quien le asignaremos la lista de oficinas a seleccionar
a continuación les muestro como declaré a OFICINAS y OFICINASSEL
3
como se puede apreciar a ambas ls puse como defecto "Todas" después se verá el por qué.
4 a continuacion les muestro como hice uso de los if-statement
como se puede apreciar ambos if-statement se encuentran debajo de las consultas sql ya que el objetivo es solo mostrar el valor entrado en el encabezado, no en las consultas. Hay dos IF
1 If OFICINA == null con su respectiva accion
aqui se puede apreciar que el nombre de salida de este Mesage Template es "OFICINAS" subrayado dos veces, y a esta se le asigna el valor que contiene el campo "OFICINASSEL" subrayado una vez y que tiene por defecto el valor
TODASen pocas palabras lo que se quiere aqui es que si no se pasa un valor por OFICINA que se muestre en el enabezado "
TODAS"
2 if OFICINA != null
aqui sencillamente se mostrará el valor que se paso a OFICINA subrayado una vez y se le asigna a la isma variable de salida OFICINAS subrayada dos veces
posteriormente selecciono todas las variables que deseo enviar a la plantilla echa en PRD
5
ejecutemos ahora el reporte, si selecciono una oficina "LA HABANA" por ejemplo
6
el resultado es el siguiente
7
como se puee apreciar el if OFICINA != null funciono a la perfección, la el nombre de salida del Message Template OFICINAS cogió el valo que tenia OFICINA
pero cuando no selecciono una oficina
8
ocurre lo siguiente
9
el reporte no se ejecuta hasta que le haya pasado un valor al campo OFICINAS,
el problema esta en que el if OFICINA == null no funciona, lo comprobé al asignarle al otro if que en vez de coger la oficina que se pasa, mostrara el valor de OFICINASSEL que es"TODAS"
Y SI FUNCIONO
osea que el reconoce los valores de todos los campos, ya sean puestos por defectos o pasados por el usuario en un parametro. Por eso es que asumo que el if OFICINA == null no funciona
Alguien podria decirme que esta mal.
gracias