É o seguinte pessoal eu estava usando o ireport num programa que criei só que sem parametros e ele gerava o relatório de todo os funcionários. Só que queria selecionar um funcionário da Jtable e o relatório puxar somente esse funcionário selecionado e não todos os que existem no banco de dados. E não sei como fazer isso.
Fui no ireport e criei um paramêtro chamado Nome, valor padrão $F{Nome} do tipo String (não usei id tipo integer)
SELECT
FUNCIONARIOS.`NOME_FUNC` AS Nome,
FUNCIONARIOS.`MATRICULA_FUNC` AS Matrícula,
FUNCIONARIOS.`CPF_FUNC` AS CPF,
FUNCIONARIOS.`FUNCAO_FUNC` AS Função,
DEPARTAMENTO.`NOME_DEPTO` AS Departamento,
UNIDADE.`NOME_UNIDADE` AS Unidade
FROM
`DEPARTAMENTO` DEPARTAMENTO INNER JOIN `FUNCIONARIOS` FUNCIONARIOS ON DEPARTAMENTO.`COD_DEPTO` = FUNCIONARIOS.`COD_DEPTO`
INNER JOIN `UNIDADE` UNIDADE ON FUNCIONARIOS.`COD_UNIDADE` = UNIDADE.`COD_UNIDADE`
WHERE
FUNCIONARIOS.`NOME_FUNC` LIKE '%$P!{Nome}%'
dica abaixo do usuário leslie-UFT
Quando clico em preview no ireport ele abre uma janelinha para inserir um valor e coloco o nome do funcionário e sai que é uma beleza.
Criei um método no java que chama a classe conexão.[color=darkred] [/color][size=18] [/size]
[code]private void imprimeRelatorio(String nome) {
try{
Connection con = new Conexao().getConnection();
String jasperFile = "./Relatorio.jasper";
String NOME_FUNC = nome;
HashMap parametro = new HashMap();
parametro.put("Nome",NOME_FUNC);
JasperPrint print = JasperFillManager.fillReport(jasperFile, parametro,con);
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.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
viewer.setVisible(true);
}
}catch(Exception erro){
erro.printStackTrace();
}
}[/code]
E agora como faço para chamar no botão Listar(JButton2) para selecionar um funcionário da jtable e passar o relatório apenas do funcionário selecionado?
Estou usando Netbeans deve chamar pelo evento-> action-> actionperformed ou eventos->mouse->MouseClicked?
Dá para fazer o paramêtro sem usar id integer como acima apenas com o nome string?
Qualquer sugestão para completar o código abaixo será bem vinda?
jTable.getSelectedRow();
imprimeRelatorio();