viernes, diciembre 21

Manejo de Fechas "0000-00-00" en BIRT

En BIRT Reports, cuando manejas campos de fecha y estos tienen el valor "0000-00-00", uno usualmente trata de darle un formato, como es dd/mm/yyyy, pero cuando la fecha es 0000-00-00 el BIRT Envia el siguiente mensaje de error:

Data (id = 223):
Cannot get the date value from column: 5 Cannot get date value in the result set. SQL error: Value '0000-00-00' can not be represented as java.sql.Date

Esto es porque 0000-00-00 no es una fecha, pero tampoco es un valor null, entonces el BIRT no lo puede representar o formatear.

Para resolver este problema, hay que meter una condicion en nuestro Data Set o consulta sql, y seria de la siguiente manera:

if (Tabla.Fecha="0000-00-00",null,Tabla.Fecha) as miFecha o bien

if (Tabla.Fecha="0000-00-00",null,DATE_FORMAT(Tabla.Fecha,"%d-%m-%Y")) as miFecha

significa que si el campo fecha es igual a 0000-00-00 entonces que en vez de arrojar el valor 0000-00-00, le ponga un valor null, de lo contrario que si ponga el valor que tenga el campo fecha., o bien desde mysql ya mandarlo con formato hacia birt, usando el DATE_FORMAT

Una vez modificada la consulta SQL, en el BIRT hay que agregar esta condicion:

if (dataSetRow.Fecha!=null)
{
dataSetRow.fecha
}else {
"Sin Fecha"
}

y de esta manera ya no tendremos problemas con las fechas con valor 0000-00-00.

No hay comentarios: