Pessoal eu estou precisando de uma ajudinha com iReport. Eu não sei quase nada sobre isso mas eu preciso muito colocar essa função no meu TCC. Só falta isso pra finalmente terminar. O que eu quero fazer: fazer uma consulta no banco e exibir os dados na jTable (isso já está fazendo). Então eu quero selecionar um registro na tabela e exibir um relatório desse registro selecionado. Com esse código aqui exibe o relatório de todo o conteúdo do banco, de todos os registros. Mas eu preciso que exiba o relatório apenas do registro que eu selecionar na tabela.
private void imprimeRelatorio() {
try{
Connection c = (Connection) conexao.conectar();
String jasperFile = "../Relatorios/Cliente.jasper";
HashMap <String, String> parametro = new HashMap<String, String>();
parametro.put("","");
JasperPrint print = JasperFillManager.fillReport(jasperFile, parametro,c);
JasperViewer viewer = new JasperViewer(print , true);
viewer.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
if (print .getPages().size() != 0) {
viewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
viewer.setTitle("Relatório de Clientes");
viewer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
viewer.setVisible(true);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
E dentro de um evento do botão "Listar":
jButtonListar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
linha = jTable.getSelectedRow();
if(linha == -1){
JOptionPane.showMessageDialog(null, "Selecione um registro por favor!");
}else{
imprimeRelatorio();
}
}}
O arquivo "Cliente.jasper" eu criei com o uso da ferramenta iReport 3.5.2. E a query do meu banco fica dentro desse arquivo. O que me falaram que tem que fazer: pra poder filtrar assim o resultado, eu tenho que criar um parâmetro dentro dessa ferramenta e depois passar esse parâmetro no método parametro.put("","");. Eu tentei mas não consegui.
A minha query é essa:
SELECT
cliente.`IDCliente` AS cliente_IDCliente,
cliente.`Cliente` AS cliente_Cliente,
cliente.`EstadoCivil` AS cliente_EstadoCivil,
cliente.`Sexo` AS cliente_Sexo,
cliente.`DataNasc` AS cliente_DataNasc,
cliente.`RG` AS cliente_RG,
cliente.`CPF` AS cliente_CPF,
cliente.`Telefone` AS cliente_Telefone,
cliente.`Endereco` AS cliente_Endereco,
cliente.`Bairro` AS cliente_Bairro,
cliente.`Cidade` AS cliente_Cidade,
cliente.`Estado` AS cliente_Estado,
cliente.`Cep` AS cliente_Cep,
cliente.`Data` AS cliente_Data
FROM
`cliente` cliente
Me falaram que eu tenho que adicionar no final dessa query essa linha: WHERE cliente.`IDCliente` = $P{identificacao} onde "identificação" é o nome do parâmetro que eu devo criar. Eu já criei esse parâmetro dentro dessa ferramenta, só que quando eu mando rodar o relatório (dentro da ferramenta mesmo), aparece essa telinha pedindo pra setar um valor:
[img]http://img22.imageshack.us/img22/8929/imagemmh.jpg[/img]
Só que o problema é que eu não sei que valor que eu tenho que colocar aqui. Aí quando eu coloco qualquer valor ou deixo em branco e dou OK, aparece a mensagem que o documento está em branco. Não mostra nada no relatório. Isso só acontece quando eu adicino no final da minha query aquele "Where..." com o nome do parâmetro.
E após a criação desse parâmetro, eu sei que eu tenho que passar o nome desse parâmetro no método put, qu ficaria assim:
//mudo de String para Integer pra depois o método put aceitar um parâmetro do tipo int, pois nas propriedades do parâmetro eu deixei esse parâmetro do tipo Integer.
HashMap <String, Integer> parametro = new HashMap<String, Integer>();
parametro.put("identificacao",linha); //linha é aquela variavel que fica lá no método dentro do botão que é onde vai armazenar a linha clicada.
Então eu gostaria da ajuda de vocês pra me falar o que eu estou fazendo de errado com esse parâmetro e como eu devo proceder da maneira correta?
Aguardo a ajuda de vocês, obrigado.

