Tenho um campo data do cadastro, quero pegar todos os clientes que tenha a data do cadastro, igual entre duas datas PARÂMETROS !
[code]SELECT
cliente_fisica."clfi_cpf" AS cliente_fisica_clfi_cpf,
cliente_fisica."clfi_nome" AS cliente_fisica_clfi_nome,
cliente_fisica."clfi_pk_id" AS cliente_fisica_clfi_pk_id,
cliente_fisica."clfi_data_cadastro" AS cliente_fisica_clfi_data_cadastro
FROM
"sigi"."cliente_fisica" cliente_fisica
WHERE clfi_data_cadastro
BETWEEN date’$P{DATAINICIO}’ AND date’$P{DATAFIM}’[/code]
To pegando este erro :
Compiling to file... /home/junior/06102010/Catequese/src/java/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper
Compilation running time: 337!
Filling report...
Locale: português (Brasil)
Time zone: Default
Error filling print... Error preparing statement for executing the report query : SELECT cliente_fisica."clfi_cpf" AS cliente_fisica_clfi_cpf, cliente_fisica."clfi_nome" AS cliente_fisica_clfi_nome, cliente_fisica."clfi_pk_id" AS cliente_fisica_clfi_pk_id, cliente_fisica."clfi_data_cadastro" AS cliente_fisica_clfi_data_cadastro FROM "sigi"."cliente_fisica" cliente_fisica WHERE clfi_data_cadastro BETWEEN date'?' AND date'?'
net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query : SELECT cliente_fisica."clfi_cpf" AS cliente_fisica_clfi_cpf, cliente_fisica."clfi_nome" AS cliente_fisica_clfi_nome, cliente_fisica."clfi_pk_id" AS cliente_fisica_clfi_pk_id, cliente_fisica."clfi_data_cadastro" AS cliente_fisica_clfi_data_cadastro FROM "sigi"."cliente_fisica" cliente_fisica WHERE clfi_data_cadastro BETWEEN date'?' AND date'?' at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:240) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:131) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:684) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:605) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1281) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:877) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997) Caused by: org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 1, número de colunas: 0. at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:52) at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:117) at org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2123) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1244) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1230) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:411) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:257) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:232) ... 12 more
Print not filled. Try to use an EmptyDataSource...
Se eu fazer assim :
[code]SELECT
cliente_fisica."clfi_cpf" AS cliente_fisica_clfi_cpf,
cliente_fisica."clfi_nome" AS cliente_fisica_clfi_nome,
cliente_fisica."clfi_pk_id" AS cliente_fisica_clfi_pk_id,
cliente_fisica."clfi_data_cadastro" AS cliente_fisica_clfi_data_cadastro
FROM
"sigi"."cliente_fisica" cliente_fisica
WHERE clfi_data_cadastro
BETWEEN $P{DATAINICIO} AND $P{DATAFIM}[/code]
da este erro :
Filling report...
Locale: português (Brasil)
Time zone: Default
Error filling print... Error executing SQL statement for : relClientesFisicoAtentidoPorPeriodo
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : relClientesFisicoAtentidoPorPeriodo at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:143) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:684) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:605) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1281) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:877) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997) Caused by: org.postgresql.util.PSQLException: ERRO: operador não existe: date >= character varying at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:137) ... 11 more
Print not filled. Try to use an EmptyDataSource...
Configure os parâmetros com o tipo java.util.Date e insira direto na query.
Obviamente é necessário passar os valores pelo mapa de parâmetros como objetos do tipo date.
Se você quer mesmo usar os parâmetros como Strings p/ usar a função de conversão (cada banco vai ser de um jeito…), vc precisa usar os parênteses ( date($P{nomeParametro}) )
Ficou Assim :
SELECT
cliente_fisica.“clfi_cpf” AS cliente_fisica_clfi_cpf,
cliente_fisica.“clfi_nome” AS cliente_fisica_clfi_nome,
cliente_fisica.“clfi_pk_id” AS cliente_fisica_clfi_pk_id,
cliente_fisica.“clfi_data_cadastro” AS cliente_fisica_clfi_data_cadastro
FROM
“sigi”.“cliente_fisica” cliente_fisica
WHERE clfi_data_cadastro
BETWEEN (date($P{DATAINICIO})) AND (date($P{DATAFIM}))
Mas mesmo assim não gerou o PDF, mas não deu erro ! no postgresql pega normal, lista por data etc…
Será que é BUG do Ireport ?
[img]http://lh6.ggpht.com/_nTzBoYSeT2I/TLxSMvmDC9I/AAAAAAAAEMI/Rg80xUTw4aI/s720/t1.png[/img]
[quote] Compiling to file… /home/junior/06102010/Catequese/src/java/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper
Errors compiling /home/junior/06102010/Catequese/src/java/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper!
Compilation exceptions: com.jaspersoft.ireport.designer.compiler.ErrorsCollector@1c99a17c net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 2. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 3. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 4. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 5. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 6. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 6 errors at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:191) at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:498) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Compilation running time: 125[/quote]
Não é suficiente apenas passar os parâmetros como Date (pelo mapa de parâmetros). Vc precisa modificar o tipo do parâmetro tbm. Dentro do iReport, no Report Inspector, procure pelos parâmetros que você está usando. Selecione cada um e veja o tipo da Expression Class - ou Parameter Class, não lembro o nome - nas propriedades. Provavelmente lá vai estar como String, por isso o erro. Mude para java.util.Date.
Mude a query para:
[code]SELECT
cliente_fisica.“clfi_cpf” AS cliente_fisica_clfi_cpf,
cliente_fisica.“clfi_nome” AS cliente_fisica_clfi_nome,
cliente_fisica.“clfi_pk_id” AS cliente_fisica_clfi_pk_id,
cliente_fisica.“clfi_data_cadastro” AS cliente_fisica_clfi_data_cadastro
FROM
“sigi”.“cliente_fisica” cliente_fisica
WHERE
clfi_data_cadastro BETWEEN $P{DATAINICIO} AND $P{DATAFIM}[/code]
Teste e veja se funciona.
Compiling to file... /home/junior/06102010/Catequese/src/java/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper
Errors compiling /home/junior/06102010/Catequese/src/java/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper!
Compilation exceptions: com.jaspersoft.ireport.designer.compiler.ErrorsCollector@7daf053e net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 2. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 3. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 4. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 5. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAFIM.getValue())); //$JR_EXPR_ID=14$ <----------------------------------------------------------------> 6. Cannot cast from Date to String value = (java.lang.String)(((java.util.Date)parameter_DATAINICIO.getValue())); //$JR_EXPR_ID=15$ <-------------------------------------------------------------------> 6 errors at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:191) at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:498) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Compilation running time: 130
Todos os componentes que usarem as datas tem que estar com o mesmo tipo.
Seu problema não está na query, mas nos campos de texto apontados pelo TheKill.