Dúvida ao inserir dados em uma tabela netbeans

2 respostas
netbeans
C

Boa tarde,
Estou tentando adicionar itens em uma tabela ao clicar em um botão adicionar e depois atualizá-la com o estoque atualizado para cada produto ,só que ao inserir as linhas a comparação entre os campos não é feita e são adicionados produtos além do estoque no banco.

a comparação é feita apenas uma vez e se mantém apartir dessa inserção com o dado atual , repetindo o valor de estoque restante e permitindo a inserção além do estoque.
Eis o código:

private void btnAdicProdutoActionPerformed(java.awt.event.ActionEvent evt) {

modelProdutos = controllerProdutos.retornarProdutoController(Integer.parseInt(txtCodProd.getText()));

    int codigoProduto = modelProdutos.getIdProduto();
    double quantidade = 0;
    double somaQuantidadeDigitada = 0;
    quantidade = Double.parseDouble(txtQuantProd.getText());// passando de int para double para poder calcular o valor total abaixo.
    somaQuantidadeDigitada = somaQuantidadeDigitada + quantidade;
    //Double quantidadeAtual = quantidade;

// int primeiroIdInserido = (int) tblCadVendas.getValueAt(0, 0);

int estoque = modelProdutos.getProEstoque();

    DefaultTableModel modelo = (DefaultTableModel) tblCadVendas.getModel();

    if (txtQuantProd.getText().equals("") || txtQuantProd.getText().equals("0")) {

        JOptionPane.showMessageDialog(null, "Prencha uma quantidade válida para o produto desejado!");
        txtQuantProd.setText("1");
//

} else if (quantidade < estoque && estoque > 0) {

//

int cont = 0;
for (int i = 0; i < cont; i++) {
            modelo.setNumRows(0);

        }

// tblCadVendas.revalidate();
//adicionando uma linha na tabela a cada iteração do for

modelo.addRow(new Object[]{
            //adicionando o conteudo das colunas a cada iteração do for
            modelProdutos.getIdProduto(),
            modelProdutos.getProNome(),
            txtQuantProd.getText(),
            modelProdutos.getProvalor(),
            quantidade * modelProdutos.getProvalor(), //calculo do valor total resultado da quantidade de itens multiplicado pelo valor do produto (por linha ou subtotais)
            modelProdutos.getProEstoque(),
            modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText())

        });

       int novoEstoque = modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText());
         estoque = novoEstoque;
        somaValorTotalProdutos();

//
} else if (quantidade == estoque && estoque > 0) {

//

//                    //adicionando uma linha na tabela a cada iteração do for

//

modelo.addRow(new Object[]{

//adicionando o conteudo das colunas a cada iteração do for

modelProdutos.getIdProduto(),

modelProdutos.getProNome(),

txtQuantProd.getText(),

modelProdutos.getProvalor(),

quantidade * modelProdutos.getProvalor(), //calculo do valor total resultado da quantidade de itens multiplicado pelo valor do produto (por linha ou subtotais)

modelProdutos.getProEstoque(),

modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText())
});
//              int cont = 0;

//

//            for (int i = 0; i < cont; i++) {

//              tblCadVendas.setValueAt(estoque - quantidade, i, 6);

//            estoque = (int) tblCadVendas.getValueAt(i, 6);

//            }

//

//            // a linha abaixo seleciona a primeira linha da tabela

//            <a href="//tblCadVendas.addRowSelectionInterval">//tblCadVendas.addRowSelectionInterval</a>(0, 0);

////                dispose();

////                new ViewPedido12().setVisible(true);

} else {
//            novoultimoId = modelProdutos.getIdProduto();

//            proximoIdInserido = proximoIdInserido;

JOptionPane.showMessageDialog(this, Produto ou quantidade indisponivel!”);
quantidade = 0;
        somaQuantidadeDigitada = 0;
        somaValorTotalProdutos();
        
    }
        int novoEstoque = modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText());
         estoque = novoEstoque;
        somaValorTotalProdutos();
//            System.out.println(“primeiroIdInserido”+primeiroIdInserido);

//            System.out.println("proximoIdInserido "+proximoIdInserido);

System.out.println(Quantidade + quantidade);

System.out.println(somaquantidade + somaQuantidadeDigitada);
}

2 Respostas

staroski

Não faz essa gambiarra de usar DefaultTableModel.
Implementa o seu próprio TableModel para renderizar a lista de produtos de seu estoque.
Aí você não precisa se preocupar em ficar adicionando manualmente itens nas linhas e colunas da JTable.

C

Desculpe, Boa tarde , estou tentando essa solução há uma semana

Criado 14 de setembro de 2020
Ultima resposta 14 de set. de 2020
Respostas 2
Participantes 2