none
Evitar redondeo en un informe(Precio) RRS feed

  • Pregunta

  • Hola muy buenas noches estoy tratando de imprimir un reporte con precios por ejemplo $1.50, 1.99 y 0.99 pero me los redondea el primero me lo deja en 2, el segundo en 2 y el tercero en 1 que expresión se usa para no redondear los precios 

    martes, 3 de octubre de 2017 3:14

Respuestas

  • Hagamos una cosa, al momento de pasar el valor del textbox, en lugar de pasar el valor del textbox, pasa lo siguiente:

    decimal costo = Math.Truncate(Convert.ToDecimal(txt_costo.Text) * 100) / 100  
    if (Bll_Validacion.Validacion(Controles, error))
    {
                        dgv_cotizacion.Rows.Add();
                        int Index = dgv_cotizacion.Rows.Count - 1;
                        dgv_cotizacion.Rows[Index].Cells[0].Value = txt_producto.Text;
                        dgv_cotizacion.Rows[Index].Cells[1].Value = txt_presentacion.Text;
                        dgv_cotizacion.Rows[Index].Cells[2].Value = txt_cantidad.Text;
                        dgv_cotizacion.Rows[Index].Cells[3].Value = costo;

    Fíjate que declararás una variable costo y la pasarás (lo he resaltado en negrita)

    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 18:07
    martes, 3 de octubre de 2017 14:42
  • Hola Ballsfox12

    Podrías usar Método Math.Truncate (Decimal)

    decimal numero = Math.Truncate(1.999 * 100) / 100  // esto sería 1.99

    y para mostrarlo:

    numero.ToString("#.00");
    // o también:
    numero.ToString("N2");

    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 3:32
    martes, 3 de octubre de 2017 3:22
  • en parte del código y en el informe el formato que te comentaba de 

    numero.ToString("#.00");
    // o también:
    numero.ToString("N2");


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 3:37
    martes, 3 de octubre de 2017 3:32
  • Ballsfox12

    A qué te refieres? a obtener desde el datagridview y ponerlo en tu MDC.Costo? algo como:

     MDC.Costo = Math.Truncate(Convert.ToDecimal(dgv_cotizacion.Rows[i].Cells[3].Value.ToString()) * 100) / 100

    y si lo quieres mostrar

    MDC.Costo.ToString("N2");
    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 4:02
    martes, 3 de octubre de 2017 3:58
  • Hola Ballsfox12

    Según el código que veo en MDC.Costo ya tienes el valor correcto, para mostrar tu informe cuál es? ya que al mostrarlo supongo que llamas a MDC.Costo, intentaste con:

    MDC.Costo.ToString("#.00");
    //o
    MDC.Costo.ToString("N2");
    Saludos

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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 14:03
    martes, 3 de octubre de 2017 4:41

Todas las respuestas

  • Hola Ballsfox12

    Podrías usar Método Math.Truncate (Decimal)

    decimal numero = Math.Truncate(1.999 * 100) / 100  // esto sería 1.99

    y para mostrarlo:

    numero.ToString("#.00");
    // o también:
    numero.ToString("N2");

    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 3:32
    martes, 3 de octubre de 2017 3:22
  • Eso va en parte de código oh el informe 
    martes, 3 de octubre de 2017 3:28
  • en parte del código y en el informe el formato que te comentaba de 

    numero.ToString("#.00");
    // o también:
    numero.ToString("N2");


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 3:37
    martes, 3 de octubre de 2017 3:32
  • en parte del código y en el informe el formato que te comentaba de 

    numero.ToString("#.00");
    // o también:
    numero.ToString("N2");


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

    MDC.Costo = Convert.ToDecimal(dgv_cotizacion.Rows[i].Cells[3].Value.ToString());

    si es con un datagrid como seria?

    martes, 3 de octubre de 2017 3:48
  • Ballsfox12

    A qué te refieres? a obtener desde el datagridview y ponerlo en tu MDC.Costo? algo como:

     MDC.Costo = Math.Truncate(Convert.ToDecimal(dgv_cotizacion.Rows[i].Cells[3].Value.ToString()) * 100) / 100

    y si lo quieres mostrar

    MDC.Costo.ToString("N2");
    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 4:02
    martes, 3 de octubre de 2017 3:58
  • Ballsfox12

    A qué te refieres? a obtener desde el datagridview y ponerlo en tu MDC.Costo? algo como:

     MDC.Costo = Math.Truncate(Convert.ToDecimal(dgv_cotizacion.Rows[i].Cells[3].Value.ToString()) * 100) / 100

    y si lo quieres mostrar

    MDC.Costo.ToString("N2");
    Saludos


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

    el problema esta que los precios me los redondea en informe
    martes, 3 de octubre de 2017 4:08
  • Exactamente cuál es el código del informe? muéstranos por favor para darte una mano de una forma más concreta

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

    martes, 3 de octubre de 2017 4:09
  • Exactamente cuál es el código del informe? muéstranos por favor para darte una mano de una forma más concreta

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

    Primero listo los productos antes de imprimir el informe

    private void btn_listar_Click(object sender, EventArgs e)
            {
                try
                {
                    error.Dispose();
                    object[] Controles = { txt_empresa, txt_contacto, txt_lote, txt_area, txt_hacienda, txt_producto, txt_presentacion, txt_cantidad, txt_costo, txt_costo_total, txt_codigo_proveedor, txt_codigo_lote, txt_codigo_producto };
                    if (Bll_Validacion.Validacion(Controles, error))
                    {
                        dgv_cotizacion.Rows.Add();
                        int Index = dgv_cotizacion.Rows.Count - 1;
                        dgv_cotizacion.Rows[Index].Cells[0].Value = txt_producto.Text;
                        dgv_cotizacion.Rows[Index].Cells[1].Value = txt_presentacion.Text;
                        dgv_cotizacion.Rows[Index].Cells[2].Value = txt_cantidad.Text;
                        dgv_cotizacion.Rows[Index].Cells[3].Value = txt_costo.Text;
                        dgv_cotizacion.Rows[Index].Cells[4].Value = txt_costo_total.Text;
                        dgv_cotizacion.Rows[Index].Cells[5].Value = txt_codigo_proveedor.Text;
                        dgv_cotizacion.Rows[Index].Cells[6].Value = txt_codigo_lote.Text;
                        dgv_cotizacion.Rows[Index].Cells[7].Value = txt_codigo_producto.Text;
    
                        btn_guardar.Visible = true;
                        Limpiar();
                    }
                    else
                    {
                        MessageBox.Show("Hay un o mas campos en blanco", "CAMPOS EN BLANCO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    private void btn_guardar_Click(object sender, EventArgs e)
            {
                try
                {
                    var Resultado = MessageBox.Show("¿Su salida esta lista? ", "Opciones", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                    if (Resultado == DialogResult.Yes)
                    {
                        Modelo_Solicitud MDS = new Modelo_Solicitud();
                        MDS.IdProveedor = Convert.ToInt32(dgv_cotizacion.CurrentRow.Cells[5].Value);
                        _Id_Solicitud = BLS.InsertSolicitud(MDS);
    
                        for (int i = 0; i < dgv_cotizacion.Rows.Count; i++)
                        {
                            Modelo_Cotizacion MDC = new Modelo_Cotizacion();
    
                            MDC.Cantidad = Convert.ToInt32(dgv_cotizacion.Rows[i].Cells[2].Value.ToString());
                            MDC.Costo = Math.Truncate(Convert.ToDecimal(dgv_cotizacion.Rows[i].Cells[3].Value.ToString()) * 100) / 100;
                            MDC.IdProveedor = Convert.ToInt32(dgv_cotizacion.Rows[i].Cells[5].Value.ToString());
                            MDC.IdLote = Convert.ToInt32(dgv_cotizacion.Rows[i].Cells[6].Value.ToString());
                            MDC.IdProducto = Convert.ToInt32(dgv_cotizacion.Rows[i].Cells[7].Value.ToString());
                            MDC.IdSolicitud = _Id_Solicitud;
                            BLC.InsertCotizacion(MDC);

    Cuando ya tengo mis productos en lista, los guardado, pero hay productos que cuestan $1.50 por ejemplo entonces en mi informe de aparece en $2.00 

    martes, 3 de octubre de 2017 4:13
  • Hola Ballsfox12

    Según el código que veo en MDC.Costo ya tienes el valor correcto, para mostrar tu informe cuál es? ya que al mostrarlo supongo que llamas a MDC.Costo, intentaste con:

    MDC.Costo.ToString("#.00");
    //o
    MDC.Costo.ToString("N2");
    Saludos

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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 14:03
    martes, 3 de octubre de 2017 4:41
  • Hola Ballsfox12

    Según el código que veo en MDC.Costo ya tienes el valor correcto, para mostrar tu informe cuál es? ya que al mostrarlo supongo que llamas a MDC.Costo, intentaste con:

    MDC.Costo.ToString("#.00");
    //o
    MDC.Costo.ToString("N2");
    Saludos

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

    Perdon ayer, me fruste y apage la pc pero despues aqui es donde mando a cargar el reporte 

                        dgv_cotizacion.Rows.Clear();
                        Frm_Reporte_Cotizacion Vl = new Frm_Reporte_Cotizacion();
                        Vl.Id_Solicitud = _Id_Solicitud;
                        Vl.ShowDialog();

    martes, 3 de octubre de 2017 14:13
  • Hola Ballsfox12

    Entiendo que estás pasando de la grilla hacia el reporte? eso solo me sirve para saber que estás instanciando un nuevo formulario, pero lo que me pregunto es: de qué forma se llena? cuándo colocas los datos? le diste el formato que te especificaba?


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

    martes, 3 de octubre de 2017 14:19
  • Hola Ballsfox12

    Según el código que veo en MDC.Costo ya tienes el valor correcto, para mostrar tu informe cuál es? ya que al mostrarlo supongo que llamas a MDC.Costo, intentaste con:

    MDC.Costo.ToString("#.00");
    //o
    MDC.Costo.ToString("N2");
    Saludos

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

    por que me queda así . 

    martes, 3 de octubre de 2017 14:23
  • Buenas,

    Pero eso esta bien no? o dices por la coma en vez de punto?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    martes, 3 de octubre de 2017 14:35
  • Buenas,

    Pero eso esta bien no? o dices por la coma en vez de punto?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    Hola buenos dias! no digo que este bien ya que ingrese un precio de $1.50 de un dolar y cincuenta centavos y me muestra eso en reporte pues para mi esta mal
    martes, 3 de octubre de 2017 14:37
  • Hagamos una cosa, al momento de pasar el valor del textbox, en lugar de pasar el valor del textbox, pasa lo siguiente:

    decimal costo = Math.Truncate(Convert.ToDecimal(txt_costo.Text) * 100) / 100  
    if (Bll_Validacion.Validacion(Controles, error))
    {
                        dgv_cotizacion.Rows.Add();
                        int Index = dgv_cotizacion.Rows.Count - 1;
                        dgv_cotizacion.Rows[Index].Cells[0].Value = txt_producto.Text;
                        dgv_cotizacion.Rows[Index].Cells[1].Value = txt_presentacion.Text;
                        dgv_cotizacion.Rows[Index].Cells[2].Value = txt_cantidad.Text;
                        dgv_cotizacion.Rows[Index].Cells[3].Value = costo;

    Fíjate que declararás una variable costo y la pasarás (lo he resaltado en negrita)

    Saludos


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

    • Marcado como respuesta Ronal Funes martes, 3 de octubre de 2017 18:07
    martes, 3 de octubre de 2017 14:42