Filtrar data no iReport

5 respostas
W

Bom dia pessoal,

Preciso fazer a impressão de um relatório, porém gostaria de filtrá-lo por data. Por exemplo:

Quando digitar uma data com formato dd/mm/aaaa apareceria somente as informações daquele dia e assim por diante.

Desde já agradeço,

Elcio

PS. Não precisa ser como dia inicial e dia final, pois o que interessa é a data do dia

Veja a figura em anexo. Gostaria de filtrar onde está data de realização

5 Respostas

M

webelcio, posta pra gente o que vc já tem feito sobre o assunto…
Assim fica mais fácil pra gente te ajudar…

De qualquer maneira, vc só precisa filtrar os dados no seu SELECT, e depois passar a lista já “filtrada” pro seu relatório

E

Olá,

Você pode criar um parâmetro do tipo java.util.Date e utilizá-lo para forma a consulta no banco de dados.

Um exemplo com o parâmetro já criado chamado DT_NASCIMENTO, a consulta ficaria assim:

SELECT * FROM usuarios WHERE dt_nascimento >= $P{DT_NASCIMENTO}

[ ]'s

W

Bom dia Ev3rton,

Estou em uma internet pública e no momento não estou com o código aqui, mas o que vc postou parece que irá me ajudar. Por exemplo:

Preciso filtrar a data de realização e não a data de nascimento. Então a partir daí crio um parâmetro com o nome de $p{data_realizacao} e a consulta ficaria assim:

SELECT * FROM usuarios WHERE dt_realizacao>= $P{DT_REALIZACAO}

Caso não dê certo, da próxima vez posto o código.

Muito obrigado,

Elcio

W

Bom dia caros amigos,

Se puderem me ajudar, gostaria de saber como faço para filtrar uma data no ireport buscando somente aquela data que desejo. Abaixo segue a query e o código onde chamo o relatório:

SELECT * FROM PACIENTE_EXAME WHERE PACIENTE_EXAME_DATA_EXAME >= $P

{PACIENTE_EXAME_DATA_EXAME}
private void visualisarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            java.util.HashMap parametros = new java.util.HashMap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", parametros, con);
            JasperViewer jrv = new JasperViewer (jp, false);
            jrv.setVisible(true);
        }   catch (Exception e) {
            e.printStackTrace();
            
        }
}                                         

    private void pdfActionPerformed(java.awt.event.ActionEvent evt) {                                    
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            java.util.HashMap parametros = new java.util.HashMap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", parametros, con);
            JasperExportManager.exportReportToPdfFile(jp, "./Mapatrab.pdf");
        }   catch (Exception e) {
            e.printStackTrace();
        }
    }                                  

    private void htmlActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            java.util.HashMap parametros = new java.util.HashMap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", parametros, con);
            JasperExportManager.exportReportToHtmlFile(jp, "./Mapatrab.html");
        }   catch (Exception e) {
            e.printStackTrace();
        }
    }

E

Olá,

Existem diversas maneria para você passar uma data para o relatório e utilizá-la na composição da query que realiza a consulta. Vou explicar a que considero mais simples.

Com iReport aberto e seu relatório carregado, procure pela janela Report Inspector, nela você encontrará uma separação chamada Parameters.

Crie um parâmetro chamado DATA. Com ele selecionado clique na janela de propriedades, então edite a propriedade Parameter Class para java.lang.String.

Abra o Report query (janela onde você digita sua consulta). Digite a sua consulta adicionando a cláusula WHERE, você poderá puxar o parâmetro data da área Available parameters.

Um exemplo de query usando um parâmetro:

SELECT * FROM usuarios WHERE dt_nascimento = $P{DATA}

Seu relatório estará pronto para receber o parâmetro e utilizá-lo na consulta.

Agora você deve alterar seu código para enviar o parâmetro. Os parâmetros são enviados para o relatório através de um Map com a chave sendo o nome do parâmetro definido no relatório e o valor como um objeto do tipo também definido no relatório.

Utilizando o exemplo da data, você precisaria formatar sua data para que ela fique compatível com o que o banco de dados utiliza. Se você está trabalhando com o objetos do tipo java.util.Date, pode utilizar um SimpleDateFormat para formatar as datas, por exemplo:

new SimpleDateFormat("yyyy-mm-dd").format(minhaData);

Então colocaria a data formatada em um Map:

Map<String, Object> parametros = new Hashmap<String, Object>();
parametros.put("DATA", minhaDataFormatada);

E por fim enviaria esse map para o relatório.

JasperPrint jp = JasperFillManager.fillReport("./meu_relatorio.jasper", parametros, con);

[ ]'s

Criado 17 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 5
Participantes 3