na minha tabela tenho 6 colunas.
A coluna 1 itens, a coluna 2 id do produto, a coluna 3 descrição, a coluna 4 quantidade, a coluna 5 preço, a coluna 6 subtotal.
Quando clica no botão incluir ele pega os dados das jtextfield id do produto, descrição do produto, quantidade, preço, e multiplica o preço do produto pela quantidade vendida. e insere estes dados na jtable e tambem no bd.
eu quero que ao clicar no botao incluir, ele continue inserindo esses dados pegos dos jtextfields, e insira quantidade 1 na coluna itens, a cada novo produto inserido na jtable.
Está usando DefaultTableModel ou um TableModel próprio?
Se tem uma table model própria, tem uma List ou um array com os elementos, que correspondem a cada linha da tabela, certo? Se tem isso, já tem a quantidade de itens existentes na tabela.
Não é essa a dúvida?
o item ja existe, e é adicionado na jtable, mas todos os produtos que sao adicionados a venda, sao adicionados como zero no campo item, e eu quero que ele insira como 1 no campo item, em todo produto adicionado.
O valor aparenta estar vindo dai. Verifique o valor deste campo.
A melhor coisa é vc debugar pra descobrir oq se passa.
verifiquei no codigo do botao incluir onde existe os mods, e nao exista esta linha, e na função do botao incluir ele insere os dados que ele pega dos jtextfield, e para o campo item eu nao criei nenhum jtextfield, pois quero que seja automatico ele inserir o numero 1 no campo item a cada produto adicionado.
Q?
Esta linha está no código q vc postou. Se vc já mexeu no código e n tem mais posta novamente.
O fato de tirar a linha n resolve o problema, vc ainda precisa q algum lugar informe o valor 1.
Outra coisa é q vc tem um campo texto para quantidade jTextFieldQtdeProdutos de onde supostamente vem o valor.
Segue o código do botão incluir
private void jButtonIncluirActionPerformed(java.awt.event.ActionEvent evt) {
try {
int idvenda;
int qtde = 0;
conecta.conexao();
conecta.executaSQL("select * from produtos where descricao_produto='"+jTextFieldProduto.getText()+"'");
conecta.rs.first();
qtde = conecta.rs.getInt("qtdeatual_produto");
if (qtde >= Integer.parseInt(jTextFieldQtdeProdutos.getText())) {
mod.setIdProduto(Integer.parseInt(jTextFieldIDProduto.getText()));
mod.setProduto(jTextFieldProduto.getText());
mod.setQtdeProduto(Integer.parseInt(jTextFieldQtdeProdutos.getText()));
mod.setPrecoProduto(Float.valueOf(jTextFieldPrecoProduto.getText()));
mod.setTotalProduto(Float.valueOf(jTextFieldSubTotal.getText()));
mod.setIdVenda(IDvenda);
addItem.AdicionaItem(mod);
preencherTabelaItensVenda("select * from produtos inner join itens_venda"
+ " on produtos.id_produto = itens_venda.id_produto inner join vendas"
+ " on vendas.id_vendas = itens_venda.id_venda where vendas.id_vendas="+IDvenda);
}else{
JOptionPane.showMessageDialog(rootPane, "Não hã quantidade disponivel no estoque deste produto!");
}
jTextFieldIDProduto.setText("");
jTextFieldProduto.setText("");
jTextFieldQtdeProdutos.setText("");
jTextFieldPrecoProduto.setText("");
jTextFieldSubTotal.setText("");
jTextFieldItem.setEnabled(true);
jComboBoxPagamento.setEnabled(true);
jTextFieldQtdeProdutos.setEnabled(false);
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(rootPane, "Erro ao pesquisar a quantidade!"+ ex);
}
jTableItensVenda.setEnabled(true);
jButtonDeletarItem.setEnabled(true);
jButtonDesconto.setEnabled(true);
jButtonFinalizar.setEnabled(true);
jButtonCancelar.setEnabled(true);
jButtonConcluirDepois.setEnabled(true);
}
eu tenho um jtextfield para todos os campos, a quantidade de produtos que o cliente esta comprando, a descrição do produto, o valor do produto, porem eu nao criei um jtextfield para o campo item, eu quero que ele insira o valor 1 sem pegar esse valor em um jtextfield.
mod é o objeto q vai pra tabela certo?
Qual é o tipo deste objeto e onde vc está instanciando ele?
instanciei no próprio formulário de vendas, como segue abaixo.
public class VendaCaixa extends javax.swing.JDialog {
//CadastroClientes tela = new CadastroClientes();
BeansVendaCaixa mod = new BeansVendaCaixa();
DaoVendaCaixa addItem = new DaoVendaCaixa();
ConexaoBD conecta = new ConexaoBD();
e para inserir no bd eu tenho uma classe, como segue abaixo
public void AdicionaItem (BeansVendaCaixa mod) {
//LocalizarIDProduto(mod.getProduto());
conecta.conexao();
try {
PreparedStatement pst = conecta.Con.prepareStatement(“insert into itens_venda(id_venda,id_produto,qtde_produto)values(?,?,?)”);
pst.setInt(1, mod.getIdVenda());
//pst.setInt(2, IDProduto);
pst.setInt(2, mod.getIdProduto());
pst.setInt(3, mod.getQtdeProduto());
//pst.setInt(4, Itens());
pst.execute();
int quant = 0;
int resul = 0;
conecta.executaSQL("select *from produtos where descricao_produto='"+mod.getProduto()+"'");
conecta.rs.first();
quant = conecta.rs.getInt("qtdeatual_produto");
resul = quant - mod.getQtdeProduto();
pst = conecta.Con.prepareStatement("update produtos set qtdeatual_produto=? where descricao_produto=?");
pst.setInt(1, resul);
pst.setString(2, mod.getProduto());
pst.execute();
JOptionPane.showMessageDialog(null, "Produto adicionado com sucesso!");
conecta.desconexao();
} catch (SQLException ex) {
conecta.desconexao();
JOptionPane.showMessageDialog(null, "Erro ao realizar a venda:"+ex);
}
}
E pq vc instancia ele globalmente e usa em N lugares? pq o correto é cv criar seus objetos apenas nos lugares onde for usar de modo q c n for compartilhar valores entre chamadas de método ele n tm pq ser global.
Posta o código da classe deste objeto mod.
Outra dúvida q me surgiu, qual a diferença entre itens e quantidade?
nao tem uma classe do objeto mod, ele e declarado no proprio formulario somente.
a diferença entre itens e quantidade - itens - sao quantos itens voce tem dentro de um carrinho de compras, e quantidade - e a quantidade que voce comprou de cada produto.
exemplo: no meu carinho eu tenho 5 itens, ou seja 5 produtos, porem eu comprei do produto 1 - 3 quantidades, comprei do produto 2 - 4 quantidades, comprei do produto 3 - 2 quantidades, comprei do produto 4 - 1 quantidade, comprei do produto 5 - 6 quantidades
Acho q agora entendi.
O problema é vc. Provavelmente esse código n é seu e vc n faz a mínima ideia de como funciona, tão pouco tem os conhecimentos necessários na programação para fazer oq precisa.
Não tem como vc tr um objeto de uma classe q não existe. A classe existe e é deste projeto pq vi no código.
E qual a lógica de colocar em cada item da tabela a informação de quantos itens existem no carinho? essa é uma informação que apareceria no máximo fora da tabela. N faz sentido algum.
Vou encerar minha participação pr aqui. A última mensagem q deixo é q c vc deseja entender este código, comece a usar a ferramenta de debug, aí então se tens lógica saberá como fazer. No mais, boa sorte.