Mostrar dados do Banco na JTable

2 respostas
E

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.

2 Respostas

diego_qmota

Usa um ObjectTableModel (do projeto Towel https://github.com/MarkyVasconcelos/Towel/wiki/Introduction) que a maioria dos seus problemas vai acabar…
Você terá que entender como a classe funciona, mas depois que entender, você vai poder manipular o Model igual a um ArrayList!! :slight_smile:

E

É to lendo aqui, tentando em ingles complico um pouco, é dura essa vida de iniciante !

Até eu conseguir entender o projeto Towel mais alguem pode me dar alguma dica de como resolver o problema da seleção dos itens de compra na minha JTable, pois apesar do erro minha consulta esta adicionando os itens na tabela !
Quando tenho mais de um item de compra é necessario clicar o numero de vezes dos itens da compra !

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)
Criado 1 de fevereiro de 2011
Ultima resposta 1 de fev. de 2011
Respostas 2
Participantes 2