none
Foreach repetindo dados da listview no banco de dados RRS feed

  • 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

    segunda-feira, 7 de agosto de 2017 01:51

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
    segunda-feira, 14 de agosto de 2017 04:25

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.

    segunda-feira, 7 de agosto de 2017 20:54
    Moderador
  • 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

    terça-feira, 8 de agosto de 2017 01:32
  • 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.

    sexta-feira, 11 de agosto de 2017 20:34
    Moderador
  • 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
    segunda-feira, 14 de agosto de 2017 04:25