Pessoal to com problema para fazer a consulta da minha compra !
Pesquisei aqui consegui fazer funcionar porem ainda esta com problemas.
public static final String SQLCONSULTAITENSCOMPRADOS = "SELECT DISTINCT"
+ " COMPRA.COM_CODIGO, ITENSCOMPRA.ITECOM_CODIGO,"
+ " PRODUTO.PRO_DESCRICAO, ITENSCOMPRA.ITECOM_QTD, "
+ " ITENSCOMPRA.ITECOM_VLRUNITARIO, ITENSCOMPRA.ITECOM_VLRTOTAL"
+ " FROM ITENSCOMPRA, PRODUTO, COMPRA WHERE "
+ " ITENSCOMPRA.PRO_CODIGO = PRODUTO.PRO_CODIGO"
+ " AND ITENSCOMPRA.COM_CODIGO = COMPRA.COM_CODIGO AND"
+ " COMPRA.COM_CODIGO = ?";
//O sql esta rodando certo.
//O problema é adicionar os itens de compra na JTable
public boolean consultarI(int cod) {
try {
PreparedStatement ps = ConexaoFirebird.getConexao().prepareStatement(SQLCONSULTAITENSCOMPRADOS);
ps.setInt(1, cod);
linha.removeAllElements();
ResultSet rs = ps.executeQuery();
while (rs.next()) {
coluna = new Vector();
coluna.add(rs.getInt("COM_CODIGO"));
coluna.add(rs.getString("PRO_DESCRICAO"));
coluna.add(rs.getInt("ITECOM_QTD"));
coluna.add(rs.getDouble("ITECOM_VLRUNITARIO"));
coluna.add(rs.getDouble("ITECOM_VLRTOTAL"));
linha.add(coluna);
// JOptionPane.showMessageDialog(null, linha.size()+" linha");
}
return true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não foi possível consultar itens de compra :" + e);
e.printStackTrace();
return false;
}
}
//Na minha classe Compra eu mostro os itens na tabela
public void mostra_dadosCompra() {
jtCodigoCompra.setText("" + compra.getCodigo());
jtNota.setText("" + compra.getNumeroNota());
jlDataCadastro.setText(compra.getData());
jtCodigoFornecedor.setText("" + compra.getCodigoFornecedor());
jtFornecedor.setText("" + compra.getFornecedor());
// Essa parte eu nao sei se esta correta, mas funciona
DefaultTableModel dtm = (DefaultTableModel) tabelaCompra.getTabela().getModel();
dtm.addRow(new String[]{"", ""});
for (int l = 0; l < itemCompra.linha.size(); l++) {
for (int c = 0; c < tabelaCompra.getTabela().getColumnCount(); c++) {
tabelaCompra.setTabela().setValueAt(itemCompra.linha.get(l).get(c), l, c);
}
}
}
//Para consultar eu passo a tela que chamou por parametro, e na tela de consulta eu clico 2 vezes e passo o codigo da compra
//Aqui agora eu tenho que clicar a quantidade de linhas dos itens comprados para mostrar na tela por exemplo na compra 1 eu tenho 3 itens entao eu tenho que clicar 3 vezes para mostra na tela
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
String valor = (String) jtTable.getValueAt(jtTable.getSelectedRow(), 0);
telaChamadora.preencher(Integer.parseInt(valor));
telaChamadora.fechaTelaConsulta();
}
}
//Erro.......
//run:
//Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
// at java.util.Vector.elementAt(Vector.java:427)
// at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:648)
// at javax.swing.JTable.setValueAt(JTable.java:2709)
// at TelaMovimento.MovimentoCompra.mostra_dadosCompra(MovimentoCompra.java:455)
Se eu não precisar ficar clicando o numero de linhas existentes nos itens de compra eu ja fico satisfeito.
