iReport - Problemas campo Data = "0000-00-00"

Pessoal,

Tenho um relatório no iReport q dá o seguinte erro: Value ‘0000-00-00’ can not be represented as java.sql.Date.

Tenho em uma das tabelas um campo data com o conteúdo “0000-00-00”.
Como faço p/ “enganar” o iReport e rodar o relatório ???

Amigo, posta ai o trecho de código da classe pertinente a sua pergunta.

Danyel, primeiro desculpe qualquer besteira q eu disse, sou iniciante.
Aí tem o trecho do erro:

Filling report… Using report virtualizer… Size: 100 Cache directory: Error filling print… java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date at com.mysql.jdbc.ResultSet.getNativeDate(ResultSet.java:3461) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1793) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1771) at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:132) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1217) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:127) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:953) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:780) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:163) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:625) at java.lang.Thread.run(Unknown Source) NESTED BY : java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date at com.mysql.jdbc.ResultSet.getNativeDate(ResultSet.java:3461) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1793) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1771) at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:132) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1217) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:127) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:953) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:780) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:163) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:625) at java.lang.Thread.run(Unknown Source) NESTED BY : net.sf.jasperreports.engine.JRException: Unable to get value for field ‘DATAVENC’ of class ‘java.util.Date’ at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:311) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1217) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:127) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:953) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:780) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:163) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:625) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date at com.mysql.jdbc.ResultSet.getNativeDate(ResultSet.java:3461) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1793) at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1771) at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:132) … 9 mor

Você quer que o relatório não traga o registro que tem esse conteúdo, ou você quer simplesmente que quando for ‘0000-00-00’ seja impresso espaço em branco?

Se você não quer que o registro venha pro relatório basta fazer um
where campo_tabela_tipo_date <> ‘0000-00-00’ na consulta ou lá no relatório testar se o conteúdo do campo for ‘0000-00-00’, se for fazer com que seja impresso um “”.

Juliano, eu quero q o registro seja impresso, mas esse campo não é nem usado no relatório, mas por ele estar ‘0000-00-00’, acredito q o mysql não gere a consulta por esse campo data estar assim.

ablemos,

Eu utilizo um formatador para isso. Ou seja, não sei ao certo o porquê desse erro, mas acredito que o java.sql.Date tem, além da data, a hora também. Então penso que este erro ocorre devido a não conter as horas (é apenas suposição, não sei se esse erro é realmente por causa disso).

Eu então faço assim:

Ou você pode formatar a sua data pela própria query.
Enfim, espero ter te ajudado.
Abraço!

Tente usar java.sql.Timestamp no lugar de java.util.Date.

Na verdade eu não conheço o comportamento do banco mysql por isso estou só na base do achismo.

Sugiro fazer uns testes com o SimpleDateFormat comentado pelo bland.

Vou testar…

Obrigado a todos