Usuário com melhor resposta
Foreach repetindo dados da listview no banco de dados

Pergunta
-
olá boa noite a todos! gostaria da ajuda do senhores
estou desenvolvendo uma aplicação em Windows Form com cadastro de produtos e venda, com banco de dados MySql e estou tendo dificuldades para fazer o meu foreach funcionar, na realidade ele esta funcionando so que na hora de salvar o dados da listview no banco de dados ele so salva a primeira linha do listview e depois apenas copia as outras linha igual a primeira. segue imagens do programa e código.
Obrigado desde já =D
Listview com os dados dos produtos a serem enviados para o banco de dados.
private void button1_Click(object sender, EventArgs e) { string val4 = "0.00"; Double Saida = Convert.ToDouble(txtValTotalProduto.Text); Double Total = Convert.ToDouble(lblTotalPagar.Text); ListViewItem lvi = new ListViewItem(txtCodProduto.Text); lvi.SubItems.Add(txtDescProduto.Text); lvi.SubItems.Add(txtQtdProduto.Text); lvi.SubItems.Add(txtValUnitProduto.Text); lvi.SubItems.Add(txtValTotalProduto.Text); lvi.SubItems.Add(val4); listView1.Items.Add(lvi); txtVal.Text = txtValTotalProduto.Text; lblTotalPagar.Text = (Saida + Total).ToString("0.00"); txtCodProduto.Clear(); txtDescProduto.Clear(); txtValUnitProduto.Clear(); txtQtdProduto.Clear(); txtValTotalProduto.Clear(); txtCodProduto.Focus(); }
foreach para salvar no banco de dados.
private void btnFinaliza_Click(object sender, EventArgs e) { string strconexao = NovoProjeto.Properties.Settings.Default.strconexao; SqlConnection conexao = new SqlConnection(strconexao); conexao.Open(); foreach (ListViewItem item in listView1.Items) { string codigo = item.SubItems[0].Text; string descricao = item.SubItems[1].Text; string qtd = item.SubItems[2].Text; string valunit = item.SubItems[3].Text; string valtotal = item.SubItems[4].Text; string desconto = item.SubItems[5].Text; string IncluirVendas = " Insert into Vendas (codigo, descricao, qtd, valunitario, valtotal, desconto) values ('" + codigo + "','" + descricao + "','" + qtd + "','" + valunit + "','" + valtotal + "','" + desconto + "')"; SqlCommand incluirItens = new SqlCommand(IncluirVendas, conexao); incluirItens.ExecuteNonQuery(); try { int i = incluirItens.ExecuteNonQuery(); if (i > 0) MessageBox.Show("Produtos Salvos Com Sucesso"); } catch(Exception ex) { MessageBox.Show("Erro:" + ex.ToString()); } finally { conexao.Close(); } } txtCodProduto.Focus(); }
James Miranda
Respostas
-
olá boa noite Filipe B de Castro,
então eu consegui resolver apenas removendo esta parte do codigo
try { int i = incluirItens.ExecuteNonQuery(); if (i > 0) MessageBox.Show("Produtos Salvos Com Sucesso"); } catch(Exception ex) { MessageBox.Show("Erro:" + ex.ToString()); } finally { conexao.Close(); }
então ficou assim agora
foreach (ListViewItem item in listView1.Items) { string codigo = item.SubItems[0].Text; string descricao = item.SubItems[1].Text; string qtdvenda = item.SubItems[2].Text; string valunit = item.SubItems[3].Text; string valtotal = item.SubItems[4].Text; string desconto = item.SubItems[5].Text; string qtdExclui = qtdvenda; string IncluirVendas = " Insert into Vendas (codigo, descricao, qtdvenda, valunitario, valtotal, desconto) values ('" + codigo + "','" + descricao + "','" + qtdvenda + "','" + valunit + "','" + valtotal + "','" + desconto + "')"; SqlCommand incluirItens = new SqlCommand(IncluirVendas, conexao); incluirItens.ExecuteNonQuery(); } if (MessageBox.Show("Deseja Realmente Finalizar Esta Compra?", "Cheia de Charme | Aviso!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) MessageBox.Show("Compra Finzalizada Com Sucesso!", "Cheia de Charme | Aviso!", MessageBoxButtons.OK, MessageBoxIcon.Information); listView1.Items.Clear(); lblTotalPagar.Text = "0,00"; txtCodProduto.Focus();
Muito Obrigado pela Ajuda Filipe B Castro
James Miranda
- Marcado como Resposta James Miranda segunda-feira, 14 de agosto de 2017 04:27
Todas as Respostas
-
Boa tarde, James Miranda. Tudo bem?
Obrigado por usar o fórum MSDN.
Essa seria uma questão de "Break fix/Erro" ou "How to/Customização"?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Ola Felipe boa noite! Então não entendi a sua pergunta, no caso acima está apresentando um problema , o código está salvando , mas só a primeira linha digitada no listview , depois dessa ele só cópia a primeira linha , mesmo que seja inserido outros produtos.
James Miranda
-
Boa tarde, James Miranda. Tudo bem?
Ele te retorna algum erro, algo do gênero?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
olá boa noite Filipe B de Castro,
então eu consegui resolver apenas removendo esta parte do codigo
try { int i = incluirItens.ExecuteNonQuery(); if (i > 0) MessageBox.Show("Produtos Salvos Com Sucesso"); } catch(Exception ex) { MessageBox.Show("Erro:" + ex.ToString()); } finally { conexao.Close(); }
então ficou assim agora
foreach (ListViewItem item in listView1.Items) { string codigo = item.SubItems[0].Text; string descricao = item.SubItems[1].Text; string qtdvenda = item.SubItems[2].Text; string valunit = item.SubItems[3].Text; string valtotal = item.SubItems[4].Text; string desconto = item.SubItems[5].Text; string qtdExclui = qtdvenda; string IncluirVendas = " Insert into Vendas (codigo, descricao, qtdvenda, valunitario, valtotal, desconto) values ('" + codigo + "','" + descricao + "','" + qtdvenda + "','" + valunit + "','" + valtotal + "','" + desconto + "')"; SqlCommand incluirItens = new SqlCommand(IncluirVendas, conexao); incluirItens.ExecuteNonQuery(); } if (MessageBox.Show("Deseja Realmente Finalizar Esta Compra?", "Cheia de Charme | Aviso!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) MessageBox.Show("Compra Finzalizada Com Sucesso!", "Cheia de Charme | Aviso!", MessageBoxButtons.OK, MessageBoxIcon.Information); listView1.Items.Clear(); lblTotalPagar.Text = "0,00"; txtCodProduto.Focus();
Muito Obrigado pela Ajuda Filipe B Castro
James Miranda
- Marcado como Resposta James Miranda segunda-feira, 14 de agosto de 2017 04:27