none
calculos de ganancias RRS feed

  • Pregunta

  • tengo unos tres elementos:
    dos textbox: txtcompra, txtventa
    un maskedtextbox: txtganancia mask= 00%

    necesito que cuando el usuario presione enter desde txtganancia se realicen estos calculos:
                database.SoloNumeros(e);
                if (e.KeyChar == Convert.ToChar(Keys.Enter))
                {
                    double compra = 0;
                    double ganancia = 0;
                    double.TryParse(txtcompra.Text, out compra);
                    double.TryParse(txtganancia.Text, out ganancia);
                    double venta = compra * (ganancia / 100) + compra;
                    txtventa.Text = venta.ToString();

    me realiza el calculo este codigo pero no me hace el calculo correctamente me explico:
    puse estos datos:
     txtcompra= 1000
    txtganancia= 10
    txtventa= deberia de ser 1100
    pero me da 1000




    samuel

    martes, 13 de junio de 2017 15:01

Respuestas

  • Es claro que el problema se da por el símbolo de porcentaje '%' que tiene como sufijo el valor contenido en la propiedad Text del control 'txtganancia', la evaluación que realiza el método TryPrase() resulta falso por tanto no incrementa ningún porcentaje sobre el valor.

    Realiza los siguientes cambios:

    decimal compra;
    decimal ganancia;
    
    txtventa.Text = string.Empty;
    if (decimal.TryParse(txtcompra.Text, out compra) 
    	&& decimal.TryParse(txtganancia.Text.Split('%')[0], out ganancia))            
    	txtventa.Text = (compra * ((ganancia / 100) + 1)).ToString("N2");

    Recomendación adicional, procura escribir tus post en los foros adecuados, el presente caso nada tiene que ver con SQL Server.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 13 de junio de 2017 15:29
  • Samuel Ignacio

    Estás trabajando con el evento keyPress? pruebo tu código pero está ok, solo por si acaso encierra en un paréntesis así como está en negrita

    private void txtganancia_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == Convert.ToChar(Keys.Enter))
                {
                    double compra = 0;
                    double ganancia = 0;
                    double.TryParse(txtcompra.Text, out compra);
                    double.TryParse(txtganancia.Text, out ganancia);
                    double venta = (compra * (ganancia / 100)) + compra;
                    txtventa.Text = venta.ToString();
                }
            }
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 13 de junio de 2017 15:20

Todas las respuestas

  • Samuel Ignacio

    Estás trabajando con el evento keyPress? pruebo tu código pero está ok, solo por si acaso encierra en un paréntesis así como está en negrita

    private void txtganancia_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == Convert.ToChar(Keys.Enter))
                {
                    double compra = 0;
                    double ganancia = 0;
                    double.TryParse(txtcompra.Text, out compra);
                    double.TryParse(txtganancia.Text, out ganancia);
                    double venta = (compra * (ganancia / 100)) + compra;
                    txtventa.Text = venta.ToString();
                }
            }
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 13 de junio de 2017 15:20
  • Es claro que el problema se da por el símbolo de porcentaje '%' que tiene como sufijo el valor contenido en la propiedad Text del control 'txtganancia', la evaluación que realiza el método TryPrase() resulta falso por tanto no incrementa ningún porcentaje sobre el valor.

    Realiza los siguientes cambios:

    decimal compra;
    decimal ganancia;
    
    txtventa.Text = string.Empty;
    if (decimal.TryParse(txtcompra.Text, out compra) 
    	&& decimal.TryParse(txtganancia.Text.Split('%')[0], out ganancia))            
    	txtventa.Text = (compra * ((ganancia / 100) + 1)).ToString("N2");

    Recomendación adicional, procura escribir tus post en los foros adecuados, el presente caso nada tiene que ver con SQL Server.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 13 de junio de 2017 15:29
  • Saludos, pruebalo como dice samuel, ademas te recomiento que lo programes en el evento validate no en el KeyPress, ya que por rendimiento no te va a ser muy util estar preguntando que si la tecla presionada es enter cada vez que oprimas cualquiera, mientras que en el evento validate realiza la validacion en cuanto te sales del control
    martes, 13 de junio de 2017 16:05
  • gracias me funciono


    samuel

    martes, 13 de junio de 2017 16:14
  • gracias tambien me funciono

    samuel

    martes, 13 de junio de 2017 16:14