Caros colegas, tenho grandes duvidas em relação a como fazer uma pesquisa para filtrar as informações do relatorio.
Como por exemplo digitar uma data inicial e uma data final dai gerar um relatorio contendo apenas informações filtradas pela data.
Se puderem ajudar, ou tiverem algum codigo para ter uma base de como gerar o filtro, agradeço …
Olá gleybsonmanso, com um post tão generico assim fica dificil vc conseguir uma ajuda.
Tente falar realmente qual o seu problema, por exemplo:
- vc esta usando hibernate ou a api sql do java?
- é um sistema web ou desktop?
- ja tem algo implementado e ta com problema gerando algum erro?
Tente expor realmente seu problema, assim com certeza o pessoal aqui do forum vai poder te ajudar!
[]'s
Estou precisando gerar um relatorio com parametros de pesquisa por data, para uma aplicação desktop, estou usando uma conexão com banco de dados MySQL.
Já tenho o seguinte codigo implementado, o qual gera perfeitamente o relatorios:
public void geraRelatorio_veiculos_desejados() throws JRException, Exception {
Connection con = getConnection();
Statement stm = con.createStatement();
String query = "select * from cadastro";
ResultSet rs = stm.executeQuery(query);
HashMap parameters = new HashMap();
JasperPrint jp = JasperFillManager.fillReport("C:\\Relatorios\\rel_veiculos.jasper", parameters, con);
JasperViewer jrv = new JasperViewer(jp,false);
jrv.setVisible(true);
JasperViewer.viewReport("C:\\Relatorios\\rel_veiculos.pdf", true);
}
O codigo acima estou utilizando dentro de um jButton chamado “gerar relatorio”.
Gostaria de ajuda, desde já obrigado.
Pelo visto vc ja tem td funcionando falta so a consulta por data, se for isso vc tera q fazer:
- Alterar seu relatorio original no ireport para exibir tambem as datas do filtro;
- Vc pode controlar a visibilidade dos labels das datas inicial e final para exibir apenas se os parametros data inicial e final forem passados para o relatorio;
- Vc vai precisar setar essas datas dos parametros na sua varialvel parameters;
- Vc vai precisar alterar seu sql para algo como:
String query = "select * from cadastro where data between dataInicial and dataFinal"
(provavelmente esse sql esta errado, vc precisa adotar o nome do seu campo em sua tabela)
Fora isso é o mesmo esquema pra vc gerar o seu relatorio.
[]'s
Olá thiago, fiz umas alterações no codigo que passei anteriormente.
public void geraRelatorio_clientes() throws JRException, Exception {
Connection con = getConnection();
Statement stm = con.createStatement();
String query = "select * from cadastro where data_cadastro between '"+dtini.getText().toUpperCase()+"' and '"+dtfim.getText().toUpperCase()+"'";
ResultSet rs = stm.executeQuery(query);
HashMap parameters = new HashMap();
parameters.put("dt1", " '"+dtini.getText().toUpperCase()+"' ");
parameters.put("dt2", "'"+dtfim.getText().toUpperCase()+"'");
JasperPrint jp = JasperFillManager.fillReport("C:\\Relatorios\\rel_clientes2.jasper", parameters, con);
JasperViewer jrv = new JasperViewer(jp,false);
jrv.setVisible(true);
JasperViewer.viewReport("C:\\Relatorios\\rel_clientes2.pdf", true);
}
Fiz alteração no select e acrecentei dois parametros. Teria algo mais a acrecentar e se eu devo colocar o select do report como esta no pograma acima?
Sendo que o select do report est´r assim: select * from cadastro
Obrigado deste já.
amigo se o seu campo for um data no banco essa consulta não vai funcionar pq vc ta passando String, da uma olhada nisso.
Hum vc faz a consulta no relatorio né, ou ta passando a consulta como parametro?
Se der algum erro posta o erro q fica mais facil ajudar!
[]'s
Thiago joia ?
O campo la no banco do tipo String mesmo, então o codigo está certo?
Eu tenho a consulta do codigo e no report esta configurado na query uma consulta tambem.
Se vc pudese dar uma olhadinha no arquivo report agradeceria.
Cara, posso estar enganado, mas acho q vc não vai conseguir filtrar por um periodo usando String’s, o campo teria q ser date.
Eu não costumo gerar o relatorio fazendo consulta sql, sempre passo a coleção ja pronta pro relatorio e ele só tem o trabalho de montar.
Posta ai que eu dou uma olhada.
[]'s
Então vou mudar o campo de String para Date.
Mas enquanto isso estou lhe enviando o arquivo gerado pelo Ireport para seu email ok.
Se caso vc tirer algum exemplo que possa me enviar, ficaria agradecido…
Atenciosamente.
Cara, nao tenho mais o ireport instalado na minha maq. aqui no serviço não usamos ele.
E pelo xml fica dificil analisar.
sorry!
Olha só…duas dicas:
- Não utilize querys no relatório. Utilize JRCollectionBeanDatasource.
- Não passe o caminho do relatório. Se tu colocar sua aplicação em outro local? Utilize this.getClass().getResourceAsStream("/META-INF/nome-relatorio.jasper"), por exemplo se seu relatório estiver na pasta META-INF do teu arquivo .jar.
Da uma procurada no guj que tem um tutorial que parece ser completo, ensinando a usar bean para mandar os dados.
Fernando
Concordo plenamente com as dicas do amigo Fernando, eu sempre utilizo o JRBeanCollectionDataSource para enviar os dados para meus relatorios.
Segue um link de um blog onde tem um tutorial muito bom sobre o uso do JRBeanCollectionDataSource.
http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/
[]'s
pessoal estou com o mesmo problema nao consigo fazer o relatorio alguem pode me ajudar