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!");
}
}
}
Select no Jtable
5 Respostas
Opa, neybox, beleza?
Duas coisas:
- 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?
Abraços!
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();
}
}
Opa, neybox. É do Sul de Minas, também?
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.
Grande abraço,
fique com Deus! 
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
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
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.
Abraços