none
Loop de mensalidade c# RRS feed

  • Pergunta

  • i = Convert.ToInt32(txtparcelas.Text); try { ConectarBanco.Open(); while (i > 0) { MySqlCommand GerarP = new MySqlCommand("Insert into parcela" + "(venda_cod, dtavencimento, parcela, valorprincipal)" + "values" + "(@venda_cod, @dtavencimento, @parcela, @valorprincipal)", ConectarBanco); GerarP.Parameters.Add("@venda_cod", MySqlDbType.Text).Value = txtcodigo.Text;

    //AQUI NA DATA QUERIA QUE ELE PEGASSE A DATA E ACRESCENTASSE UM MES TIPO 1: 30/05/2018 2: 30/06/2018 ...

    GerarP.Parameters.AddWithValue("@dtavencimento", DateTime.Parse(txtdtavencimento.Text));

    // JÁ AQUI QUERIA QUE COLOCASSE ME PARCELAS ASSIM TIPO 1/12 2/12 3/12 .... GerarP.Parameters.Add("@parcela", MySqlDbType.Text).Value = txtparcelas.Text; GerarP.Parameters.Add("@valorprincipal", MySqlDbType.Text).Value = txtvalomensal.Text; GerarP.ExecuteNonQuery(); i = i - 1; }


    sexta-feira, 21 de dezembro de 2018 20:43

Respostas

  • Utilize o método AddMonths e String.Concat para concatenar as parcelas.

    Segue código (não testado):

    var i = 0;
    var qtdParcelas = Convert.ToInt32(txtparcelas.Text);
    try
    {
    	ConectarBanco.Open();
    	while (i < qtdParcelas)
    	{
    		MySqlCommand GerarP = new MySqlCommand("Insert into parcela" +
    			"(venda_cod, dtavencimento, parcela, valorprincipal)" +
    			"values" +
    			"(@venda_cod, @dtavencimento, @parcela, @valorprincipal)", ConectarBanco);
    		GerarP.Parameters.Add("@venda_cod", MySqlDbType.Text).Value = txtcodigo.Text;
    		GerarP.Parameters.AddWithValue("@dtavencimento", DateTime.Parse(txtdtavencimento.Text).AddMonths(i+1));
    		GerarP.Parameters.Add("@parcela", MySqlDbType.Text).Value = String.Concat((i+1).ToString(),"/",qtdParcelas.ToString());
    		GerarP.Parameters.Add("@valorprincipal", MySqlDbType.Text).Value = txtvalomensal.Text;                    
    		GerarP.ExecuteNonQuery();                    
    		i++;
    	}


    Carlos Eduardo Ferreira


    quarta-feira, 26 de dezembro de 2018 11:35

Todas as Respostas

  • Dá uma conferida neste vídeo:      C# - Gerar Parcelas em datagridView 

    . Vai te ajudar a resolver o seu problema.

    quarta-feira, 26 de dezembro de 2018 01:06
  • Utilize o método AddMonths e String.Concat para concatenar as parcelas.

    Segue código (não testado):

    var i = 0;
    var qtdParcelas = Convert.ToInt32(txtparcelas.Text);
    try
    {
    	ConectarBanco.Open();
    	while (i < qtdParcelas)
    	{
    		MySqlCommand GerarP = new MySqlCommand("Insert into parcela" +
    			"(venda_cod, dtavencimento, parcela, valorprincipal)" +
    			"values" +
    			"(@venda_cod, @dtavencimento, @parcela, @valorprincipal)", ConectarBanco);
    		GerarP.Parameters.Add("@venda_cod", MySqlDbType.Text).Value = txtcodigo.Text;
    		GerarP.Parameters.AddWithValue("@dtavencimento", DateTime.Parse(txtdtavencimento.Text).AddMonths(i+1));
    		GerarP.Parameters.Add("@parcela", MySqlDbType.Text).Value = String.Concat((i+1).ToString(),"/",qtdParcelas.ToString());
    		GerarP.Parameters.Add("@valorprincipal", MySqlDbType.Text).Value = txtvalomensal.Text;                    
    		GerarP.ExecuteNonQuery();                    
    		i++;
    	}


    Carlos Eduardo Ferreira


    quarta-feira, 26 de dezembro de 2018 11:35
  • Não é possível acessar esse site

    Não foi possível encontrar o endereço IP do servidor de https.

    quarta-feira, 26 de dezembro de 2018 20:16
  •  int p;
            int i;        
            String QtdParcela;
            public void GerarParcelas()
            {   // LOOP PARA GERAR PARCELAS
                QtdParcela = txtparcelas.Text;
                p = 1;
                i = 1;            
                string Mensal = txtvalomensal.Text;
                dtparcelas.Columns["valorprincipal"].DefaultCellStyle.Format = ("C2");
                try
                {
                    ConectarBanco.Open();
                    while (i <= Convert.ToInt32(txtparcelas.Text))
                    {
                        MySqlCommand GerarP = new MySqlCommand("Insert into parcela" +
                        "(venda_cod, dtavencimento, parcela, valorprincipal)" +
                        "values" +
                        "(@venda_cod, @dtavencimento, @parcela, @valorprincipal)", ConectarBanco);
                        GerarP.Parameters.Add("@venda_cod", MySqlDbType.Text).Value = txtcodigo.Text;
                        GerarP.Parameters.AddWithValue("@dtavencimento", DateTime.Parse(txtdtavencimento.Text).AddMonths( i + 1));
                        GerarP.Parameters.Add("@parcela", MySqlDbType.Text).Value = ( p + "/" + txtparcelas.Text);
                        GerarP.Parameters.AddWithValue("@valorprincipal", Double.Parse(Mensal, NumberStyles.Currency));
                        GerarP.ExecuteNonQuery();
                        
                        i++;
                        p = p + 1;
                    }
                }
                catch(MySqlException Erro)
                {
                    MessageBox.Show("Falha no parcelamento" + Erro);
                    ConectarBanco.Close();
                }

    Carlos consegui fazer da seguinte forma a questão da mensalidade, o que realmente não consigo fazer é a data mudar corretamente, tipo esse código que coloquei acima ele gera as parcelas, porém se coloco dia 30/12/2018 ele gera a partir de 30/02/2019 até 30/01/2020, ou seja pula dois , meses, sem falar que ele coloca fevereiro com 30 dias.

    • Editado A.Junior.cta quinta-feira, 27 de dezembro de 2018 01:32
    quinta-feira, 27 de dezembro de 2018 01:30
  • quinta-feira, 27 de dezembro de 2018 15:37
  • Está pulando dois meses porque você iniciou a variável i com valor 1. Ou inicia a variável com valor 0, ou altera o código de AddMonths( i + 1) para AddMonths(i).

    O .NET não gera data inexistentes. O código abaixo vai gerar o resultado: 2/28/2019 12:00:00 AM

    Console.WriteLine(Convert.ToDateTime("12/30/2018").AddMonths(2).ToString());


    Carlos Eduardo Ferreira

    sexta-feira, 28 de dezembro de 2018 13:41
  • Realmente não me toquei do erro, então para ajudar a quem precisar deixo o código funcionando 100%;

    int p;
            int i;                
            public void GerarParcelas()
            {              
                p = 1;
                i = 0;            
                string Mensal = txtvalomensal.Text;
                dtparcelas.Columns["valorprincipal"].DefaultCellStyle.Format = ("C2");
                try
                {
                    ConectarBanco.Open();
                    while (i < Convert.ToInt32(txtparcelas.Text))
                    {
                        MySqlCommand GerarP = new MySqlCommand("Insert into parcela" +
                        "(venda_cod, dtavencimento, parcela, valorprincipal)" +
                        "values" +
                        "(@venda_cod, @dtavencimento, @parcela, @valorprincipal)", ConectarBanco);
                        GerarP.Parameters.Add("@venda_cod", MySqlDbType.Text).Value = txtcodigo.Text;
                        GerarP.Parameters.AddWithValue("@dtavencimento", DateTime.Parse(txtdtavencimento.Text).AddMonths( i + 1));
                        GerarP.Parameters.Add("@parcela", MySqlDbType.Text).Value = ( p + "/" + txtparcelas.Text);
                        GerarP.Parameters.AddWithValue("@valorprincipal", Double.Parse(Mensal, NumberStyles.Currency));
                        GerarP.ExecuteNonQuery();                    
                        i++;
                        p = p + 1;
                    }
                }
                catch(MySqlException Erro)
                {
                    MessageBox.Show("Falha no parcelamento" + Erro);
                    ConectarBanco.Close();
                }

    domingo, 30 de dezembro de 2018 18:58