prezados amigos alguem poderia me informar uma apostila ou tutorial do ireport que ensina como filtrar um relatorio nele porque eu to parada com um projeto a um tempo ja…ja postei codigos aqui mais ninguem respondeu se puderem ajudar eu agradeco obrigada.
Ireport[resolvido]
34 Respostas
Ola, primeiramente temos que definir umas variaveis:
suponho que esteja usando banco de dados;
para seu relatorio, quer trazer estes dados do banco com o proprio ireport, ou atraves de sua aplicação?
dependendo de qual for o contexto muda completamente.
Oi, boa tarde!
Este aqui é muito legal:
http://www.k19.com.br/artigos/relatorios-em-java-jasperreports-e-irepor/
Abraço,
entao estou chamando meu relatorio atraves da minha aplicacao java na query do relatorio esta algo assim
select * from Date(data) = $P{data}
o codigo de chamada de relatorio esta assim que faz a conexao essa e a classe ai tem o botao do filtro que vai gerar o relatorio que o codigo esta logo abaixo
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import Modelo.Cliente;
public class RelatorioCliente
{
Connection con;
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("dd/MM/yyyy").format(new Date().getTime());
}
private static EntityManagerFactory fabricaDeEntidades = null;
private static EntityManager gerenciador = null;
public JasperPrint gerarRelatorioCliente()
throws Exception
{
JasperPrint rel=null;
String url = "jdbc:postgresql://localhost:5432/TurmaN40";
try {
Class.forName("org.postgresql.Driver");
} catch(java.lang.ClassNotFoundException e1) {
System.err.print("ClassNotFoundException: ");
System.err.println(e1.getMessage());
}
try {
con = DriverManager.getConnection(url,"postgres", "postgres");
} catch(SQLException ex) {
System.err.print("SQLException: ");
System.err.println(ex.getMessage());
}
try { // Connection con = Conexao.criaConexao();
HashMap<String, JasperPrint> map= new HashMap<String, JasperPrint>();
Cliente sb = new Cliente();
map.put("data: " + converteData(sb.getData()) +"\n",rel);
System.out.println("imprimi data"+map);
String arquivoJasper= "C:\\vidracaria\\RelatorioCliente.jasper";
rel=JasperFillManager.fillReport(arquivoJasper,map,con);
con.close();
}
catch (JRException e)
{ e.printStackTrace();
}
return rel;
}
}
codigo do botao do filtro este botao ele faz a chamada do relatorio junto com aquela conexao.
botao1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RelatorioCliente rep = new RelatorioCliente();
JasperPrint relat;
Cliente f = new Cliente();
try {
f.setData(b.getSelectedDate());
relat = rep.gerarRelatorioCliente();
JasperViewer.viewReport(relat, false);
} catch (Exception e1) {
e1.printStackTrace();
}
//
}
});
No seu código, aqui:
map.put("data: " + converteData(sb.getData()) +"\n",rel);
você tá passando como parâmetro uma data que tá vindo do seu objeto Cliente. Imagino que queira que seu relatório mostre dados referentes a essa data. Mas nesse método, ele vai retornar a data atual, não é isso ?
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("dd/MM/yyyy").format(new Date().getTime());
}
Outro detalhe a verificar: o parâmetro $P{data} que você criou dentro do report está como tipo Date ? É importante checar que o tipo de dado do parâmetro seja o mesmo do valor que você tá passando pra ele quando chama o relatório. E na query do relatório SE precisar dar cast, que seja no campo e no parâmetro, ficando assim:
select * from Date(data) = Date($P{data})
isso mesmo quero que ele mostre dados da data so que realmente esta me trazendo a data atual = null nao sei o que posso mudar no codigo para que isso nao aconteca mais…ja tentei varias coisas
mais nao consegui quando deixo apenas map.put(“data”,rel) apenas aparece a data como null o q posso mudar no codigo pra que isso nao aconteca mais
as variaveis data esta como calendar nao sei se com date e possivel que ele faca a consulta pois uso calendario para gravar no banco ou seja datechoosercombo ai fica do tipo calendar.
e nao sei da onde esta vindo este valor nulo caso coloque map.put(“data”,rel) ele vai entrar nulo o certo seria imprimir a data no map quando chamar o relatorio acho.
Olhando com mais atenção percebi outra coisa que não tinha me ligado antes. Sua passagem de parâmetros tem problema:
map.put("data: " + converteData(sb.getData()) +"\n",rel);
Está concatenando a String “data :” com o valor da data que seu método retorna. E está passando esse rel que é um JasperPrint que poucas linhas acima está null. Você tem que passar o nome do parâmetro(igualzinho o que tá na query do seu report) e o valor que vai pra ele. Ficaria isso:
map.put("data", converteData(sb.getData()));
E verifique atentamente essa conversão de data.
Não importa de onde você tá pegando a data no momento de gravar no banco… se estiver definido na tabela que o campo é do tipo Date ele entra lá como Date ou não entra.
map.put("data", converteData(sb.getData()));
quando coloco esta linha sem o rel da erro
Poste os erros … vamos resolver isso!!
map.put("data", converteData(sb.getData()));
pronto olha o erro que da compilando com esta linha de erro.
Exception in thread “AWT-EventQueue-0” java.lang.Error: Unresolved compilation problem:
The method put(String, JasperPrint) in the type HashMap<String,JasperPrint> is not applicable for the arguments (String, String)
at RelatorioCliente.gerarRelatorioCliente(RelatorioCliente.java:55)
at JanelaCliente$9.actionPerformed(JanelaCliente.java:554)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
percebi que esta string ai por isso o erro porem nao sei o que mudar para conseguir compilar esse relatorio.
Sim, você tem razão. Agora troque essa linha
HashMap<String, JasperPrint> map= new HashMap<String, JasperPrint>();
por isso:
HashMap map = new HashMap();
Isso vai resolver seu erro de compilação. Agora voltando à query do report, execute-a direto no banco e poste o formato em que as datas aparecem pra você
minhas datas estao assim 2012-06-16 neste formato
tem outro problema quando coloco no sql do banco isso aqui select * from cliente where data diretao pra ver se ele me tras a data
fala que argumento where tem que ser do tipo boolean nao date…eu uso o postgresql ele pelo jeito é diferente d outros bancos.
mais o formato dele é esse mesmo…que te falei…ai acima
ta dando um erro quando clico no botao do relatorio este aqui
net.sf.jasperreports.engine.JRException: Incompatible java.lang.String value assigned to parameter data in the RelatorioCliente dataset.
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameter(JRFillDataset.java:895)
at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java:652)
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:603)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:891)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:716)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:669)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
at RelatorioCliente.gerarRelatorioCliente(RelatorioCliente.java:58)
at FiltroCliente$1.actionPerformed(FiltroCliente.java:83)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
A variável data que você crio no relatório esta recebendo um valor não compatível !!! Você ta passando o conteúdo para o relatório da aplicação java ou faz o relatório dar select em algum banco ?
é que no where você tem que aplicar uma comparação, não apenas jogar o parâmetro lá. Isso não funcionaria em banco nenhum. Amanhã vou acordar com uma pequena ressaca mas vou subir um postgresql aqui e fazer uns testes pra te ajudar a encontrar isso
ele da select no banco postgree o pior que ja olhei a query do relatorio e vi se nao estava string pior que nao ta o codigo tem algo que esta passando string acho no codigo do relatorio cliente
as variaveis de data esta date…ta bem ademilton mto obrigada por estar me ajudando nisso eu pensei que fosse mais facil filtra o relatorio.
to achando que tem a ver com essa co nversao aqui nao é isso sera?
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("dd/MM/yyyy").format(new Date().getTime());
}
Vou postar novamente os codigos aqui pra vcs verem como estao
Classe Relatorio Cliente
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import Modelo.Cliente;
public class RelatorioCliente
{
Connection con;
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("yyyy-MM-dd").format(new Date().getTime());
}
private static EntityManagerFactory fabricaDeEntidades = null;
private static EntityManager gerenciador = null;
public JasperPrint gerarRelatorioCliente()
throws Exception
{
JasperPrint rel=null;
String url = "jdbc:postgresql://localhost:5432/TurmaN40";
try {
Class.forName("org.postgresql.Driver");
} catch(java.lang.ClassNotFoundException e1) {
System.err.print("ClassNotFoundException: ");
System.err.println(e1.getMessage());
}
try {
con = DriverManager.getConnection(url,"postgres", "postgres");
} catch(SQLException ex) {
System.err.print("SQLException: ");
System.err.println(ex.getMessage());
}
try { // Connection con = Conexao.criaConexao();
HashMap map= new HashMap();
Cliente sb = new Cliente();
map.put("data", converteData(sb.getData()));
System.out.println("imprimi data"+map);
String arquivoJasper= "C:\\vidracaria\\RelatorioCliente.jasper";
rel=JasperFillManager.fillReport(arquivoJasper,map,con);
con.close();
}
catch (JRException e)
{ e.printStackTrace();
}
return rel;
}
to postando a classe do filtro do relatorio o botao 1 é o que chama o relatorio
import java.awt.*;
import java.awt.event.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.*;
import datechooser.beans.DateChooserCombo;
//import org.eclipse.nebula.widgets.datechooser.DateChooserCombo;
import Modelo.Cliente;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
//import controle.Utilitarios;
// Ctrl+Shift+F => Formata o código
// Ctrl+A e Ctrl+i => Formata a seleção
public class FiltroCliente extends JFrame {
private JLabel rotulo1;
private JTextField caixa1;
private JButton botao1;
DateChooserCombo b = new DateChooserCombo();
private static EntityManagerFactory fabricaDeEntidades = null;
private static EntityManager gerenciador = null;
Cliente objetoCliente;
ImageIcon icone;
public FiltroCliente(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) throws ParseException {
super("Relatório Cliente");
Container tela = getContentPane();
icone = new ImageIcon("100.gif");
botao1 = new JButton (icone);
tela.setLayout(null);
fabricaDeEntidades=fabricaDeEntidades2;
gerenciador=gerenciador2;
rotulo1 = new JLabel("Data:");
b = new DateChooserCombo();
//botao1 = new JButton("Gerar Relatório");
// coluna, linha, largura, altura
rotulo1.setBounds(24, 19, 56, 20);
b.setBounds(75, 19, 100, 20);
botao1.setBounds(54, 60, 100, 20);
//rotulo2.setBounds(24, 50, 100, 20);
//caixa2.setBounds(75, 50, 100, 20);
tela.add(rotulo1);
tela.add(b);
//tela.add(rotulo2);
//tela.add(caixa2);
tela.add(botao1);
botao1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RelatorioCliente rep = new RelatorioCliente();
JasperPrint relat;
Cliente f = new Cliente();
try {
f.setData(b.getSelectedDate());
relat = rep.gerarRelatorioCliente();
JasperViewer.viewReport(relat, false);
} catch (Exception e1) {
e1.printStackTrace();
}
//
}
});
// setSize(largura, altura);
setSize(250, 150);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String[] args) throws ParseException {
fabricaDeEntidades = Persistence
.createEntityManagerFactory("TurmaN40PostgreSQL");
gerenciador = fabricaDeEntidades.createEntityManager();
FiltroCliente app = new FiltroCliente(fabricaDeEntidades, gerenciador);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
meus getters e setters da tabela cliente que cria a tabela no banco
package Modelo;
import java.util.Calendar;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import datechooser.beans.DateChooserCombo;
@Entity
public class Cliente {
@Id
private int codcliente;
@Temporal(TemporalType.DATE)
private Calendar data;
private String NomeCompleto;
private String endereco;
private String Bairro;
private String Cidade;
private String uf;
private int cep;
private int telefone;
private String complemento;
private String email;
private String rg;
private String cpf;
@Temporal(TemporalType.DATE)
private Calendar datadenascimento;
public String getBairro() {
return Bairro;
}
public void setBairro(String bairro) {
Bairro = bairro;
}
public int getCep() {
return cep;
}
public void setCep(int cep) {
this.cep = cep;
}
public String getCidade() {
return Cidade;
}
public void setCidade(String cidade) {
Cidade = cidade;
}
public int getCodcliente() {
return codcliente;
}
public void setCodcliente(int codcliente) {
this.codcliente = codcliente;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNomeCompleto() {
return NomeCompleto;
}
public void setNomeCompleto(String nomeCompleto) {
NomeCompleto = nomeCompleto;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public int getTelefone() {
return telefone;
}
public void setTelefone(int telefone) {
this.telefone = telefone;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public Calendar getData() {
return data;
}
public void setData(Calendar data) {
this.data = data;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public Calendar getDatadenascimento() {
return datadenascimento;
}
public void setDatadenascimento(Calendar datadenascimento) {
this.datadenascimento = datadenascimento;
}
}
e por ultimo a query que esta no relatorio
select * from Date(data) = Date($P{data}
o erro que apresenta ao clicar no botao1 do filtro cliente
net.sf.jasperreports.engine.JRException: Incompatible java.lang.String value assigned to parameter data in the RelatorioCliente dataset.
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameter(JRFillDataset.java:895)
at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java:652)
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:603)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:891)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:716)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:669)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
at RelatorioCliente.gerarRelatorioCliente(RelatorioCliente.java:58)
at FiltroCliente$1.actionPerformed(FiltroCliente.java:83)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Certo, sabemos então que seu parâmetro no report está definido como Date e está tentando passar uma String pra ele. Dá pra resolver assim: primeiro, troque o tipo do parâmetro no report de Date para String. E na query do report faça assim:
select * from sua_tabela where seu_campo = to_date($P{data},'yyyy-MM-dd')
sim mais se eu fizer isso eu teria que troca o valor da minha tabela nao é?
o que daria pau no resto programa certo?
deu certo o filtro agora tem outra coisa essa conversao ta pegando a data atual e nao as datas anteriores q eu faço?
tipo se eu coloca la no calendario dia 15 tem q mostra dia 15 ele pega e mostra do dia 17 que seria a data atual hj q eu posso fazer pra mostra a data que foi selecionada no filtro agora?
o codigo do filtro e do relatorio ta ali acima.
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("yyyy-MM-dd").format(new Date().getTime());
}
essa conversao ta puxando a data atual do banco
e o botao que era pra selecionar e trazer é este abaixo provavel que la na classe relatorio cliente essa conversao esteja errada que eu posso fazer pra ele pegar a data que eu coloca no datechoosercombo no filtro e me traze o relatorio com ela?o erro ja parou de da eu consegui fazer com que parasse mais agora ele so esta trazendo o que registrei hj no banco ou seja a data atual.
botao1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RelatorioCliente rep = new RelatorioCliente();
JasperPrint relat;
Cliente f = new Cliente();
try {
f.setData(b.getSelectedDate());
relat = rep.gerarRelatorioCliente();
JasperViewer.viewReport(relat, false);
} catch (Exception e1) {
e1.printStackTrace();
}
//
}
});
tava escrevendo exatamente isso pra você. agora está perto. Primeiro altere seu método gerarRelatorioCliente para receber um parâmetro:
gerarRelatorioCliente(Calendar data)
no código do seu botão, na linha 09 passe a selecionada para o método:
relat = rep.gerarRelatorioCliente(b.getSelectedDate());
e a cerejinha do bolo é isso:
private String converteData(Calendar data) {
return new SimpleDateFormat("yyyy-MM-dd").format(data.getTime());
}
Mudei assim da uma oolhada
botao1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RelatorioCliente rep = new RelatorioCliente();
JasperPrint relat;
Cliente f = new Cliente();
try {
//f.setData(b.getSelectedDate());
relat = rep.gerarRelatorioCliente(b.getSelectedDate());
JasperViewer.viewReport(relat, false);
} catch (Exception e1) {
e1.printStackTrace();
}
//
}
});
public JasperPrint gerarRelatorioCliente(Calendar data)
private String converteData(Calendar data) {
// TODO Auto-generated method stub
return new SimpleDateFormat("yyyy-MM-dd").format(data.getTime());
}
mais isso e erro mais uma vez
java.lang.NullPointerException
at RelatorioCliente.converteData(RelatorioCliente.java:25)
at RelatorioCliente.gerarRelatorioCliente(RelatorioCliente.java:55)
at FiltroCliente$1.actionPerformed(FiltroCliente.java:83)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
map.put("data", converteData(data));
ae consegui resolve fazendo assim \o obrigadaaa pelaa ajudaaa muito mesmo tu é o caraa valeu mesmoooo \o
O bom que este topico ja fica aberto como exemplo e pra ajuda outras pessoas obrigadaaaaa muitooooooo valeu mesmooo maior tempao parada por causa disso obrigada xD
Parabéns!!