BIRT – parseInt(’08’) regresa ‘undefined’

agosto 9, 2011

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😉

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: