none
como redondear en consulta a base de datos? RRS feed

  • Pregunta

  • buenas tardes

    mi problema es que no se como redondear algunos datos despues de hacer una consulta

    por ejemplo tengo mi campo "numero" el cual acepta 3 decimales pero cuando hago la consulta :

    Dim dt As DataTable = GetData(cmd) 'aqui obtengo los datos de la base de datos
            For Each r As DataRow In dt.Rows 
                GridPartidas.Rows.Add(r("nombre"), r("numero"))

    next

    como resultado me da por ejemplo

    | Marcos | 32.000 |

    y asi lo pasa al datagridview, y lo que yo quiero es que si termina en .000 lo deje en 32 pero si es 32.001 lo deje en 32.001

    espero haberme dado a entender 

    viernes, 8 de abril de 2016 19:33

Respuestas

  • Hola,

    Prueba haciendo esto.

         For Each r As DataRow In dt.Rows
                GridPartidas.Rows.Add(r("nombre"), IIf(Convert.ToString(r("numero")).EndsWith(".000"),
                                                       Decimal.Round(r("numero")),
                                                       r("numero")))
            Next

    No sé si será la mejor opción pero talvéz de ayude.

    Saludos.


    JC NaupaCrispín

    viernes, 8 de abril de 2016 20:38

Todas las respuestas

  • Hola,

    Prueba haciendo esto.

         For Each r As DataRow In dt.Rows
                GridPartidas.Rows.Add(r("nombre"), IIf(Convert.ToString(r("numero")).EndsWith(".000"),
                                                       Decimal.Round(r("numero")),
                                                       r("numero")))
            Next

    No sé si será la mejor opción pero talvéz de ayude.

    Saludos.


    JC NaupaCrispín

    viernes, 8 de abril de 2016 20:38
  • pienso lo mismo que tu Joel César Naupa Crispín, no se si sea la mejor opcion pero lo tomare en cuenta gracias!
    viernes, 8 de abril de 2016 20:56
  • Hola,

    Si, pero básicamente cuando obtienes los datos del dataRow, lo puedes manipular como texto, y con solo un Convert.ToDecimal, ya lo puedes usar como número.

    Como sabes el valor solo tiene un separador, en este caso punto decimal, no sería mejor usar Split() ?

             For Each r As DataRow In dt.Rows
    
                    Dim valor As String() = Convert.ToString(r("numero")).Split(".")
                    Dim resultado As String = Convert.ToString(r("numero"))
    
                    'Obtienes los decimales
                    'Si son 0 donde 000 = 0
                    If Convert.ToInt32(valor(1)) = 0 Then
                        ' Muestro solo los enteros
                        resultado = valor(0)
                    End If
    
                    GridPartidas.Rows.Add(r("nombre"), resultado)
                Next

    Según veo este es un poco largo al ejemplo anterior mencionado, pero no es tán estático, ya que si tienes un número con 5 decimales, igual lo podrá analizar.

    Saludos.


    JC NaupaCrispín

    viernes, 8 de abril de 2016 21:24