Pessoal, estou com a seguinte dúvida:
Tenho 3 BD em MySql (cliente, lojista, lançamentos). Como eu faço para exibir todos os lançamentos que um cliente possui com base em um campo onde eu digite seu código?
O campo codCli (Cliente) e codLojista (Lojista) estão relacionados na tabela Lançamentos.
Estou usando o Eclipse para fazer o programa.
Segue o diagrama de classe.
Abraços.
O código está assim:
package gui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import classes.sql.ClienteDAO;
import classes.sql.Conexao;
import classes.sql.LancamentosDAO;
import classes.sql.LojistaDAO;
@SuppressWarnings("serial")
public class ConsultaClientesDébitos extends JFrame {
private Container c;
private JPanel jpnlNorte;
private JPanel jpnlSul;
private JLabel lblNome;
private JTextField jtxtNome;
private JButton jbtnConsultar;
private JButton jbtnSair;
private JTable jtResultado;
private DefaultTableModel dtm;
private Conexao conect;
private ClienteDAO clienteDAO;
private LancamentosDAO lancamentosDAO;
private LojistaDAO lojistaDAO;
private String[] campos = { "Código Cliente", "Nome", "CPF", "Loja", "Valor Débito", "Situação Débito" };
private String[][] registros = { { "", "", "", "", "", "" } };
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ConsultaClientesDébitos frame = new ConsultaClientesDébitos();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public ConsultaClientesDébitos(){
super("Consulta de Débitos do Cliente");
setTitle("Consulta de Débitos do Cliente");
c = getContentPane();
c.setLayout(new BorderLayout());
jpnlNorte = new JPanel(new FlowLayout());
jpnlSul = new JPanel(new FlowLayout());
lblNome = new JLabel("Código Cliente:");
jtxtNome = new JTextField(07);
//jtxtNome.setToolTipText("Utilize % para fazer pesquisa aproximada.");
jtResultado = new JTable(registros, campos);
dtm = new DefaultTableModel();
jtResultado.setFillsViewportHeight(true);
jbtnConsultar = new JButton("Consultar");
jbtnSair = new JButton("Sair");
c.add(jpnlNorte, BorderLayout.NORTH);
c.add(new JScrollPane(jtResultado),
BorderLayout.CENTER);
c.add(jpnlSul,BorderLayout.SOUTH);
jpnlNorte.add(lblNome);
jpnlNorte.add(jtxtNome);
jpnlNorte.add(jbtnConsultar);
jpnlSul.add(jbtnSair);
getJbtnSair();
//getJbtnAtualizar();
getJbtnConsultar();
setSize(950,550);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public JButton getJbtnConsultar() {
jbtnConsultar.addActionListener(new ActionListener() {
//@Override
public void actionPerformed(ActionEvent arg0) {
String consulta = "select cli.codCli, cli.nomeCli, cli.cpfCli, loj.rsLojista, lanc.valorLanc, lanc.situacaoLanc" +
"from Lancamentos lanc inner join Cliente cli on cli.codCli = lanc.codCli " +
"inner JOIN Lojista loj on loj.codLojista = lanc.codLojista;";
conect = new Conexao();
conect.conectar();
clienteDAO = new ClienteDAO(conect);
lojistaDAO = new LojistaDAO(conect);
lancamentosDAO = new LancamentosDAO(conect);
dtm = new DefaultTableModel();
dtm.setColumnIdentifiers(campos);
consulta = jtxtNome.getText();
for(Cliente cli :clienteDAO.consultar(consulta))
for (Lojista loj :lojistaDAO.consultar(consulta))
for (Lançamentos lanc :lancamentosDAO.consultar(consulta))
{
dtm.addRow(new Object[]
{cli.getcodCli(), cli.getnomeCli(), cli.getcpfCli(), loj.getrsLojista(),
lanc.getvalorLanc(), lanc.getsituacaoLanc()} );
}
jtResultado.setModel(dtm);
conect.desconectar();
}
});
return jbtnConsultar;
}
public JButton getJbtnSair() {
jbtnSair.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
return jbtnSair;
}
}
Alguém sabe como posso fazer?
