Estou desenvolvendo uma aplicação de protocolo, estou tentando fazer um relatório. Quero fazer um filtro por data, mas não está obedecendo retorna todos os dados sem filtro.
Estou usando primefaces calendar e na classe java uso java.util.date.
Alguém pode me ajudar?
desde já agradeço quem poder me ajudar.
Sem o código nao vao conseguir te ajudar a consertar o problema.
Esta é view
<p:calendar value="#{relatorioBean.entrada}"
pattern=“dd/MM/yyyy” mask=“true” mode="popup"
locale="pt"
timeZone=“GMT-3”>
<f:convertDateTime pattern=“dd/MM/yyyy” timeZone=“GMT-3” />
<f:validateBean />
</p:calendar>
no bean se encontra assim:
public void relatorioDocumentos(){
String caminho = “/reports/documentos.jasper”;
Map<String, Object> parametros = new HashMap<>();
parametros.put("STATUS_DOC",this.status);
parametros.put("SECRETARIA_DOC",this.secretaria);
parametros.put("RESPONSAVEL_DOC",this.responsavel.getNome());
parametros.put("ENTRADA_DOC", this.entrada );
GeraRelatorio gerador = new GeraRelatorio();
gerador.geradorDeRelatorios(caminho, parametros);
}
Faltou o principal, a query. Execute a query com os parametros na ferramenta do banco pra ver se reproduz o problema.
Vou fazer, mas no preview do jasperstudio dá certo, só dá errado quando executo na aplicação que não dá certo, alguma ideia?
Deu certo no MySQL mas na aplicação dá errado. Já não sei o que fazer mais.
Sem o código da query e parametros fica mais difícil. Quando voce debuga, o parametro está com o mesmo valor que testou na ferramenta do mysql?
A minha query é
SELECT db_documentos.tbl_documento.dt_entrada,
db_documentos.tbl_documento.dt_saida,
db_documentos.tbl_documento.objeto,
db_documentos.tbl_documento.processo,
db_documentos.tbl_documento.secretaria,
db_documentos.tbl_documento.status,
db_documentos.tbl_documento.encaminhamento,
db_documentos.tbl_funcionario.nome
FROM db_documentos.tbl_documento
INNER JOIN db_documentos.tbl_funcionario ON
db_documentos.tbl_documento.fk_funcionario = db_documentos.tbl_funcionario.cod_fun
WHERE
db_documentos.tbl_documento.status LIKE '%%'
AND db_documentos.tbl_documento.secretaria LIKE '%%'
AND db_documentos.tbl_funcionario.nome LIKE '%%'
AND db_documentos.tbl_documento.dt_entrada >= ‘2018-02-01’
Ela funciona tanto no mysql quanto no jasper studio, mas quando eu utilizo o primefaces calendar ela não funciona.
O formato que o calendar retorna provavelmente não é o mesmo do que testou no MySql. O ideal é usar o tipo Date como parametro ou usar SimpleDateFormat pra ter a string no formato padrao do MySql.
valeu javaflex, vou testar aqui qualquer coisa posto a solução.
Encontrei a solução:
o problema estava na formatação do calendar no primefaces antes estava assim:
<p:calendar value="#{relatorioBean.entrada}"
pattern=“dd/MM/yyyy” mask=“true” mode="popup"
locale="pt"
timeZone=“GMT-3”>
<f:convertDateTime pattern=“dd/MM/yyyy” timeZone=“GMT-3” />
<f:validateBean />
</p:calendar>
ai troquei o f:convertDateTime para:
<f:convertDateTime pattern=“yyyy-MM-dd”/>
ai não deu mais erro o relatório gerou, obrigado pela dica javaflex.
1 curtida