En un reporte de BIRT necesitaba desplegar en el encabezado el mes de acuerdo a un parámetro. Dicho parámetro se recibe como una cadena del “01”-“12” porque para la consulta necesito que sean 2 dígitos. Para determinar el mes, realizaba lo siguiente en el evento “initialize” del reporte:

meses="ENERO","FEBRERO","MARZO","ABRIL","MAYO"
    ,"JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE"
    ,"NOVIEMBRE","DICIEMBRE"];
params["Titulo"]=meses[parseInt(params["MES"])-1]+" del "+params["ANYO"];

Y funcionaba, eso creía yo, hasta que me dijeron que en Agosto(“08”) y Septiembre(“09”) aparecía la leyenda “undefined” en el título del reporte. Pues la causa de esto, es la interpretación que hace la función parseInt cuando le pasamos una cadena que comienza con “0” (recordemos que el código del reporte es Javascript), aquí encuentras la explicación. Para resolverlo, podemos hacer lo siguiente:

params["Titulo"]=meses[parseInt(params["MES"]
    ,10)-1]+" del "+params["ANYO"];

Simplemente le pasamos un segundo parámetro a la función parseInt para indicarle que la cadena(número) que le estamos pasando es en base 10 y no intente interpretarlo como un número octal.
Listo, ya podemos generar el reporte para Agosto y Septiembre 😉

Anuncios