Galera boa tarde
Alguem pode dar uma dica?
Estoum com um jtable que recebe os produtos de uma venda, só que está gravando como se fosse uma pilha.
ex: na tabela produtos tenho: calça,tenis,meia e cinto, ai compro 1 calça e um cinto, ao inserir na greed blz, mas ao gravar no banco grava 1 calça e 1 tenis, ele pega o primeiro e o segundo item da tabela e ñ os itens que selecionei.
aqui o código
[code]private void cadastrarVenda(){
if (venda.size() == 0){
JOptionPane.showMessageDialog(this, “Inclua pelo menos um produto!”);
} else {
try {
VendasControl vc = new VendasControl();
SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date d = new java.util.Date();
Date data = Date.valueOf(formato.format(d));
int codigo = vc.buscarCodigoUltimaVenda() + 1;//pega o codigo da utima venda e soma 1
for (int i = 0; i < venda.size(); i++){
venda.get(i).setNomeProduto(produtos.get(i).getNome());//pega o nome do produto de indice i
venda.get(i).setNomeCliente(clientes.get(cbClientes.getSelectedIndex()).getnome());//pega o nome do cliente de linha selecionada
venda.get(i).setDataVenda(data);
venda.get(i).setCodigo(codigo);
venda.get(i).setCodigoProduto(produtos.get(i).getCodigo());//pega o codigo do produto de indice i
venda.get(i).setCodigoCliente(clientes.get(cbClientes.getSelectedIndex()).getcodigo());
vc.cadastrarVenda(venda.get(i));
}
JOptionPane.showMessageDialog(this, "Venda cadastrada com sucesso!");
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Erro ao cadastrar Venda!");
}
}
}[/code]
Coloque nomes significativos nas suas variáveis para serem fáceis de outros desenvolvedores indentificarem-as. As variáveis venda e produtos são de que tipo?
Você criou um TableModel para a sua JTable? Você criou um campo boolean para representar as check boxes, já que você seleciona os itens que quer comprar?
O Meu conterranio, obrigado pela atenção, mas consegui solucionar, o problema estáva no meu metodo de incluir produtos, bom, dava para arrumar de outra maneira, mas arrumei dessa forma, segue o código
[code] private void incluirProduto(){
if (verificarQuantidade()){
String quantidade = String.valueOf(ftfQuantidade.getValue());
ProdutoBean produtoAlteraEstoque = new ProdutoBean();
ProdutoControl pc = new ProdutoControl();
produtoAlteraEstoque = pc.consultar(produtos.get(cbProdutos.getSelectedIndex()).getCodigo());
if(Integer.parseInt(quantidade) > produtoAlteraEstoque.getEstoque()){
JOptionPane.showMessageDialog(this, "Quantidade maior que o estoque, tente quantidade menor.");
}else{
VendasBean vb = new VendasBean();
vb.setNomeProduto(produtos.get(cbProdutos.getSelectedIndex()).getNome());
vb.setCodigoProduto(produtos.get(cbProdutos.getSelectedIndex()).getCodigo());
vb.setQuantidade(Integer.parseInt(String.valueOf(ftfQuantidade.getValue())));
venda.add(vb);
String produto = produtos.get(cbProdutos.getSelectedIndex()).getNome();
String valor = String.valueOf(produtos.get(cbProdutos.getSelectedIndex()).getValor() * Integer.parseInt(quantidade));//ñ da para colocar aqui
String [] campos = new String [] { produto, quantidade, valor };
tmVendas.addRow(campos);
total += Double.parseDouble(valor);
ftfTotal.setValue(total);
//tem que carregar em um objeto produto, a quantidade do estoque anterior, para poder subtrair
produtoAlteraEstoque.setEstoque(produtoAlteraEstoque.getEstoque() - Integer.parseInt(quantidade));//estoque atual = estoque anterior - quantidade
pc.alterarEstoqueProduto(produtoAlteraEstoque);
}
} else {
JOptionPane.showMessageDialog(this, "Quantidade invalida!");
ftfQuantidade.requestFocus();
}
}[/code]
Que bom que resolveu o problema. Porém, deixe-me dar alguns pitacos sobre o teu código:
Você tá tratando as exceções que podem vir do banco de dados caso haja um erro? Como você tá trabalhando com comandos INSERT, UPDATE e DELETE, pode ocorrer erros em determinados momentos, e não vi nenhum bloco try/catch para tratar disso. Pode ser legal pensar no tratamento de erros;
Comece a pensar em criar o seu próprio TableModel. Pelo que vejo, você tá trabalhando com o DefaultTableModel. Tenha em mente que ele foi um modelo primário e não evoluiu com o tempo. Recomendo fortemente a criar seu próprio modelo, trabalhando diretamente com objetos ao invés de linhas/colunas.
Então meu querido, sou mais para o norte de MG, proximo ao Espirito Santo(Vitoria)
Mas já passei pela sua cidade, para pegar a fernão Dias.
Então eu estou tratando com try catch sim. Esse trabalho tenho que apresentar daqui 15 dias, está meio tenso, pois tenho que implementar a venda a prazo,relatório de vendas e alimentar estoque, e no mais tratar alguns metodos, tipo ñ deixar inserir o mesmo produto 2 vezes na greed.
E quanto a criar meu proprio Jtable, ainda ñ sei fazer, mas vou pesquisar.
Boa noite, que Deus te abençoe
[quote=neybox]Então meu querido, sou mais para o norte de MG, proximo ao Espirito Santo(Vitoria)
Mas já passei pela sua cidade, para pegar a fernão Dias.
Então eu estou tratando com try catch sim. Esse trabalho tenho que apresentar daqui 15 dias, está meio tenso, pois tenho que implementar a venda a prazo,relatório de vendas e alimentar estoque, e no mais tratar alguns metodos, tipo ñ deixar inserir o mesmo produto 2 vezes na greed.
E quanto a criar meu proprio Jtable, ainda ñ sei fazer, mas vou pesquisar.
Boa noite, que Deus te abençoe[/quote]
Existe um projeto que chama ObjectTableModel. Bem simples de utilizar e já é pronto, bastando apenas você inserir o .jar em seu projeto e utiliza-lo.