Javafree
Página Inicial do Fórum > Java Básico

Dúvida ao fazer um insert em tabela banco de dados



Criar novo tópico   Responder tópico


  1. thiagomaria
    Posts:6


    Comment Arrow

    Publicado em: 14/08/2016 20:57:54

    Galera, tenho uma dúvida e espero que alguém possa me ajudar.
    Tenho as seguintes tabelas no meu banco: venda, itens venda, orçamento e itens orçamento.
    Conforme eu vou adicionando produtos na jtable de produtos, o algorítimo já insere os produtos na tabela itens venda no banco e já vai dando baixo no estoque na tabela produto. O frame de orçamento é praticamente igual ao de venda, no entanto, a baixa no estoque não é feita e ao término do mesmo, é inserido no banco o status de “pendente”.
    Eu fiz o seguinte, na pesquisa de orçamento, ao selecionar um orçamento um botão é habilitado e tenho a opção de negar ou autorizar o orçamento, com isso muda o status do orçamento no banco.
    Se o status for negado ele apenas altera o status, mas se for autorizado o Frame de venda é aberto com os campos já preenchidos. Quero fazer isso para o usuário não tem que digitar tudo de novo na hora de fazer a venda, ou seja, já vir tudo preenchido e apenas conferir e clicar em finalizar para finalizar a venda.
    Fiz o que citei acima, mas o que quero fazer e não estou conseguindo é o seguinte: Quero que ao iniciar esse frame de venda seja feito a baixa do estoque dos produtos com base nos itens da tabela itens orçamento. Por enquanto eu fiz o seguinte:
    Eu tenho as classes de Modelo e Controle que cuidam das transações com o banco, mas fiz o que está abaixo no frame de visão do “consulta orçamento”.
    O cod que está no final da instrução sql é passado como parâmetro ao mudar o status do orçamento selecionado.
    O try/catch faz a inclusão do valor 0 na tabela de venda, mas o outro try/catch não faz nada. = (

    Alguém poderia me ajudar a fazer o insert corretamente? Desde já agradeço.


    mod.setOrcStatus((String) jComboStatus.getSelectedItem());
    mod.setCodOrcamento(cod);

    con.conexao();

    if (jComboStatus.getSelectedItem().equals("AUTORIZADO") {
    control.alteraOrcamento(mod);

    try {

    PreparedStatement pst = con.fazcon.prepareStatement("insert into venda (venda_vlr)values(?)";
    pst.setFloat(1, 0);
    pst.execute();
    con.executaSQL("select * from venda order by venda_codigo";
    con.rs.last();
    codVenda = con.rs.getInt("venda_codigo";
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(rootPane, "Erro:" + ex);
    }

    con.executaSQL("select *from orcamento inner join itens_orcamento_produto on orcamento.orc_codigo = itens_orcamento_produto.orc_codigo inner join produto\n"
    + "on itens_orcamento_produto.prod_codigo = produto.prod_codigo where orcamento.orc_codigo =" + cod);

    try {
    con.rs.first();

    while (con.rs.next()) {
    quantidadeProduto = con.rs.getInt("quantidade_produto";
    codigoProduto = con.rs.getInt("prod_codigo";

    con.executaSQL("select * from produto where prod_codigo=" + codigoProduto);
    int qtdeProduto = con.rs.getInt("prod_quantidade";

    if (qtdeProduto >= quantidadeProduto) {

    PreparedStatement pst = con.fazcon.prepareStatement("insert into itens_venda_produto(venda_codigo,prod_codigo,quantidade_produto)values(?,?,?)";
    pst.setInt(1, codVenda);
    pst.setInt(2, codigoProduto);
    pst.setInt(3, quantidadeProduto);
    pst.execute();
    //Baixa de estoque
    int quant = 0, resul = 0;
    con.executaSQL("select *from produto where prod_codigo ='" + codigoProduto + "'";
    con.rs.first();
    quant = con.rs.getInt("prod_quantidade";
    resul = quant - quantidadeProduto;
    pst = con.fazcon.prepareStatement("update produto set prod_quantidade=? where prod_codigo=?";
    pst.setInt(1, resul);
    pst.setInt(2, codigoProduto);
    pst.execute();

    } else {
    JOptionPane.showMessageDialog(null, "Estoque insuficiente";
    }

    }
    } catch (SQLException ex) {
    //con.desconecta();
    JOptionPane.showMessageDialog(null, "Erro ao adicionar produto!" + ex);
    }



  1. Relacionados