Galera é a primeira vez que estou mexendo com ireport + java e estou tendo muitas dúvidas. Já busquei por exemplos na net (e aqui), mas ainda nao consigo entender.
É seguinte, meu relatório ireport recebe um parâmetro que é o código do funcionário. Quando testo ele no IReport ocorre tudo bem… clico no botão Preview e o programa pede que eu insira o código do funcionário para então gerar o relatório, até ai tudo bem.
O problema está no Java… Eu usei o seguinte código para chamar o relatório:
try {
URL arquivo = getClass().getResource("/relatorio/relatorio.jasper");
Map<String, Object> map = new HashMap<String, Object>();
map.put("idFunc",table_2.getValueAt(table_2.getSelectedRow(), 0));
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, AdmBancoSql.getConnection());
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
jrviewer.toFront();
}catch (Exception ex) {
System.out.println(ex);
}
Mas estou com certas dúvidas. O “map.put()”, por exemplo, ainda não entendi bem ele.
No primeiro parâmetro desse método coloquei como argumento o “idFunc” que é o parâmetro do relatório. Obs.: o nome do meu parâmetro no relatório do ireport é “idFunc”.
Em seguida, pego o valor da tabela onde está o código do funcionário, pois a ideia é selecionar um certo funcionário na tabela e então imprimir um relatório com as informações básicas daquele funcionário.
No meu relatório a query é algo como: SELECT nome, cpf, rg, pai, mae, endereco FROM funcionario WHERE idFunc = $P{idFunc}
E Nesse exemplo está dando o erro:[color=red]Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap[/color]
Acredito que esteja errando na passagem do parâmetro para o ireport, pois ainda não entendi como realmente faz.