none
Agregar 0 si es vacio o Null en consulta MYsql RRS feed

  • Pregunta

  • TENGO UNA CONSULTA EN LA CUAL GUARDO LOS DATOS EN ARRAY PERO CUANDO ME DICE QUE HAY NULLOS ME MARCA ERROS.

    QUISIERA CAMBIAR ESOS NULL POR CEROS.

            If Vres = True Then
                VSql = New MySqlCommand
                VSql.Connection = VCon
                VSql.CommandText = "SELECT OF, Descripcion, CantidadOriginal, Salidas, Entradas, Salidas-Entradas as Diferencia,ROUND(    (((Salidas-Entradas)/Salidas)*100) ,2) as Porcentaje_Merma, Merma as Merma_Recibida,((Salidas-Entradas)-Merma) as Millares_Perdidos  FROM of where status = 1"
                VDatos = VSql.ExecuteReader

                While (VDatos.Read)
                    off(i) = VDatos.Item(0)
                    descripcion(i) = VDatos.Item(1)
                    millares(i) = VDatos.Item(2)
                    salidas(i) = VDatos.Item(3)
                    entradas(i) = VDatos.Item(4)
                    diferencia(i) = VDatos.Item(5)
                    pormerma(i) = VDatos.Item(6)
                    mermrec(i) = VDatos.Item(7)
                    millaper(i) = VDatos.Item(8)
            i = i + 1
                End While
                VSql.Dispose()
                VDatos.Close()
            End If

    "NOTA SOLO  VDatos.Item(6) QUIERO comparar es la unica que puede ir null. ya que es una operacion en la misma consulta y no existe enla tabla mysql.

    Gracias.

    viernes, 23 de septiembre de 2016 21:00

Respuestas

  • hola

    porque planteas la pregunta en el foro de C# si el codigo que muestras esta en VB.NET ?

    Para solucionar el problema hay varias formas

    - podrias resolverlo directo en el SELECT usando

    La función IFNULL de MySQL

    de esta forma no necesitas validar nada en codigo

    - otra forma es obtener el null y validarlo en codigo

    pormerma(i) = IIf(VDatos("Diferencia") = DBNull.Value, 0, VDatos("Diferencia"))

    recomendaria uses el nombre de los campos en lugar de las posiciones

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pedro Ávila domingo, 25 de septiembre de 2016 16:41
    • Marcado como respuesta JIvann lunes, 26 de septiembre de 2016 16:22
    sábado, 24 de septiembre de 2016 5:07

Todas las respuestas

  • ya lo probe y me marca este error:

    Información adicional: No se puede convertir un objeto DBNull en otros tipos.

    viernes, 23 de septiembre de 2016 21:58
  • JIvann,

    Necesitas evaluar si el valor corresponde a DBNull:

    pormerma(i) = If(VDatos.IsDBNull(6), 0, VDatos.GetInt32(6))

    Recuerda que no es una buena idea contener los datos en matrices, ¿por que no creas una lista (List<T>) de un tipo custom para contener los datos? o ¿por qué no contienes los datos en un objeto de tipoDataTable?, te dejo un enlace respecto al tema planteado que de pronto te pudiera servir [WinForms] Edición Empleados – Blog Leandro Tuttini.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 23 de septiembre de 2016 22:55
  • hola

    porque planteas la pregunta en el foro de C# si el codigo que muestras esta en VB.NET ?

    Para solucionar el problema hay varias formas

    - podrias resolverlo directo en el SELECT usando

    La función IFNULL de MySQL

    de esta forma no necesitas validar nada en codigo

    - otra forma es obtener el null y validarlo en codigo

    pormerma(i) = IIf(VDatos("Diferencia") = DBNull.Value, 0, VDatos("Diferencia"))

    recomendaria uses el nombre de los campos en lugar de las posiciones

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pedro Ávila domingo, 25 de septiembre de 2016 16:41
    • Marcado como respuesta JIvann lunes, 26 de septiembre de 2016 16:22
    sábado, 24 de septiembre de 2016 5:07