1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Gerar Relatório com dados de uma linha selecionada da jtable

Olá a todos,

Gostaria de agradecer pela ajuda! Consegui resolver meu problema, por isso reeditei este post:

Segue abaixo meu código fonte de como gerar um relatório na IReport com dados de uma linha selecionada de uma jtable:

Minha classe usuarioDAO que contem meu método para gerar o relatorio da linha selecionada

import com.lowagie.text.pdf.codec.Base64.InputStream;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
import conexao.classeconexao;
import java.awt.Button;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.DocFlavor.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.swing.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
import telas.TelaPrincipal;

public class usuarioDAO {

    public PreparedStatement preparedStatement;
    public Connection conexao;
    public ResultSet rs;
    public int contadorderegistros = 1;
    public Statement statement = null;
    private String campot;

    public usuarioDAO() throws Exception {

        try {
            this.conexao = classeconexao.getConnection();
        } catch (Exception e) {
            throw new Exception("ERRO: " + "\n" + e.getMessage());
        }
    }


    public void GeraRelatorioSelectUsuario() throws JRException, Exception {
        try {
            String selecao = ((String) meujframe.minhajtable.getModel().getValueAt(meujframe.minhajtable.getSelectedRow(), 0));
//0 é o indice da coluna da jtable que contém o valor que eu irei usar como parametro, no meu caso, MinhaColunaOndeTemOIdDaTabela
            Map parametro = new HashMap();

            parametro.put("meuParametro", selecao);
            String arquivo = null;
            arquivo = System.getProperty("user.dir") + "/src/relatoriosgerados/teste.jasper"; \\colocar aqui o endereço do seu relatório
            JasperPrint jp = JasperFillManager.fillReport(arquivo, parametro, conexao);
            JasperViewer view = new JasperViewer(jp, false);
            view.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
            view.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
            view.setVisible(true);

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro ao gerar relatório: " + ex);
        }
   }
}

Codigo do evento do jbutton na classe do seu jframe:

    private void meujbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                                                 
        try {
            usuarioDAO usuario = new usuarioDAO();
            usuario.GeraRelatorioSelectUsuario();
        } catch (Exception ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
  • Feito isto, abra seu relatório criado, na opção parametros, crie um novo parametro chamado "meuParametro";
  • Depois na opção de report query, insira a seguinte query:

SELECT

 minhatabela.`minhacoluna` AS minhatabela_MinhaColuna,

 minhatabela.`minhacoluna` AS minhatabela_MinhaColuna,

 minhatabela.`minhacoluna` AS minhatabela_MinhaColuna... até onde der suas colunas da sua tabela

FROM

 `minhatabela` minhatabela

WHERE

minhatabela.MinhaColunaOndeTemOIdDaTabela=$P{meuParametro}

  • Você criou um tableModel para carregar o Jtable?

    Demys Cota   18 de jul de 2013
  • Criei sim, eu alterei minha postagem e inseri o código de criação da minha jtable.

    Jessica Jolie   18 de jul de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java relatórios sql swing ou faça a sua própria pergunta.