none
Inserir dados múltiplos conforme a quantidade inserida RRS feed

  • Discussão Geral

  • Prezados boa tarde,

    Tenho um insert no meu sistema que preciso executar conforme a quantidade de parcelas que o usuário informa:

                                                                    

     {



                if (cb_credito.Checked == true)

                {

                    SqlConnection conn = new SqlConnection(@"Data Source=10.11.32.191;Initial Catalog=FINANC;Persist Security Info=True;User ID=sa;Password=St@ll0S2012");



                    SqlCommand comm = new SqlCommand();
                    comm.Connection = conn;

                    comm.CommandText = "insert into MOVIMENTOS (DATAINCLUSAO,CONTACREDITO,VALOR,HISTORICO,DATAVENCIMENTO,PARCELA)" + "VALUES (@DATAINCLUSAO,@CONTACREDITO,@VALOR,@HISTORICO,@DATAVENCIMENTO,@PARCELA)";

                    comm.Parameters.AddWithValue("@DATAINCLUSAO", Convert.ToDateTime(tb_datainclusao_movimento.Text));
                    comm.Parameters.AddWithValue("@CONTACREDITO", tb_inclusaoconta_movimento.Text);
                    comm.Parameters.AddWithValue("@VALOR",Convert.ToDouble(tb_inclusaovalor_movimento.Text));
                    comm.Parameters.AddWithValue("@HISTORICO", tb_historico.Text);
                    comm.Parameters.AddWithValue("@DATAVENCIMENTO", Convert.ToDateTime(tb_vencimento.Text));
                    comm.Parameters.AddWithValue("@PARCELA",Convert.ToInt32(tb_parcelas.Text));

                    conn.Open();
                    comm.ExecuteNonQuery();
                    conn.Close();
                }
                else if (cb_debito.Checked == true)

                {

                        {
                        SqlConnection conn = new SqlConnection(@"Data Source=10.11.32.191;Initial Catalog=FINANC;Persist Security Info=True;User ID=sa;Password=St@ll0S2012");

                            SqlCommand comm = new SqlCommand();
                            comm.Connection = conn;

                            comm.CommandText = "insert into MOVIMENTOS (DATAINCLUSAO,CONTADEBITO,VALOR,HISTORICO,DATAVENCIMENTO,PARCELA)" + "VALUES (@DATAINCLUSAO,@CONTADEBITO,@VALOR,@HISTORICO,@DATAVENCIMENTO,@PARCELA)";

                            comm.Parameters.AddWithValue("@DATAINCLUSAO", Convert.ToDateTime(tb_datainclusao_movimento.Text));
                            comm.Parameters.AddWithValue("@CONTADEBITO", tb_inclusaoconta_movimento.Text);
                            comm.Parameters.AddWithValue("@VALOR",Convert.ToDouble(tb_inclusaovalor_movimento.Text));
                            comm.Parameters.AddWithValue("@HISTORICO", tb_historico.Text);
                            comm.Parameters.AddWithValue("@DATAVENCIMENTO", Convert.ToDateTime(tb_vencimento.Text));
                            comm.Parameters.AddWithValue("@PARCELA", Convert.ToInt32(tb_parcelas.Text));

                        conn.Open();
                            comm.ExecuteNonQuery();
                            conn.Close();
                        }


                    }

    A questão é que quando é uma linha tudo bem ele insere, mais no caso preciso que o sistema considere a quantidade de parcelas inseridas pelo usuário, por exemplo se for 2x ele tem que inserir duas linhas de insert e no campo "parcelas" ele informar qual parcela corresponde ao registro

    Agradeço desde já,

    Att,

    Felipe Bretas

    segunda-feira, 28 de dezembro de 2015 14:03

Todas as Respostas

  • Boa tarde Felipe Bretas

    Você precisa de um LOOP com a quantidade de parcelas.

    Exemplo:

    int qtdParcelas = Convert.ToInt32(txtQtdParcelas.Text);
    int i = 0;
    do
    {
        INSTRUÇÕES DE INSERT
        i++;
    } while (i <= qtdParcelas);



    segunda-feira, 28 de dezembro de 2015 16:10
  • Fiz da forma abaixo mais não está inserindo nada na base de dados:

    SqlConnection conexao = new SqlConnection(strcon);



                            try
                            {
                                conexao.Open();
                            }
                            catch (SqlException)
                            {
                            MessageBox.Show("Não foi possível se conectar ao banco de dados", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        DateTime datainclusao =Convert.ToDateTime(tb_datainclusao_movimento.Text);
                            int contacredito =Convert.ToInt32(tb_inclusaoconta_movimento.Text);
                            float valor =Convert.ToInt32(tb_inclusaovalor_movimento.Text);
                            string historico = tb_historico.Text;
                            DateTime datavencimento = Convert.ToDateTime(tb_vencimento.Text);
                            int parcela =Convert.ToInt32(cb_parcelas.Text);


                            int qtdparcelas = Convert.ToInt32(cb_parcelas.Text);
                            int i = 0;
                            do
                            {
                                SqlCommand command = new SqlCommand("insert into MOVIMENTOS (DATAINCLUSAO,CONTACREDITO,VALOR,HISTORICO,DATAVENCIMENTO,PARCELA)" 
                                    + "VALUES('" + datainclusao + "','" + contacredito + "','" + valor + "','" + historico + "','" + datavencimento + "','" + parcela +"')");
                                i++;
                            } while (i <= qtdparcelas);

    terça-feira, 29 de dezembro de 2015 16:44
  • Fiz da forma abaixo mais não está inserindo nada na base de dados:

    SqlConnection conexao = new SqlConnection(strcon);



                            try
                            {
                                conexao.Open();
                            }
                            catch (SqlException)
                            {
                            MessageBox.Show("Não foi possível se conectar ao banco de dados", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        DateTime datainclusao =Convert.ToDateTime(tb_datainclusao_movimento.Text);
                            int contacredito =Convert.ToInt32(tb_inclusaoconta_movimento.Text);
                            float valor =Convert.ToInt32(tb_inclusaovalor_movimento.Text);
                            string historico = tb_historico.Text;
                            DateTime datavencimento = Convert.ToDateTime(tb_vencimento.Text);
                            int parcela =Convert.ToInt32(cb_parcelas.Text);


                            int qtdparcelas = Convert.ToInt32(cb_parcelas.Text);
                            int i = 0;
                            do
                            {
                                SqlCommand command = new SqlCommand("insert into MOVIMENTOS (DATAINCLUSAO,CONTACREDITO,VALOR,HISTORICO,DATAVENCIMENTO,PARCELA)" 
                                    + "VALUES('" + datainclusao + "','" + contacredito + "','" + valor + "','" + historico + "','" + datavencimento + "','" + parcela +"')");
                                i++;
                            } while (i <= qtdparcelas);

    Boa tarde.

    Não esqueça de executar a Query dentro do loop.


    Att., Rafael Simor

    terça-feira, 29 de dezembro de 2015 18:41
  • Faltou o  

    comm.ExecuteNonQuery();

    dentro do LOOP;


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.scrumbrasil.com.br

    terça-feira, 29 de dezembro de 2015 18:52