none
Cómo mostrar el valor de un campo en un Label.Text usando una fecha como parámetro

    Pregunta

  • Buen día

    Espero puedan ayudarme con el siguiente detalle que tengo. Estoy desarrollando en VS 2012, mi base de datos es SQL

    Lo que deseo hacer es mostrar el valor de un campo en un Label.Text usando como parámetro principal una fecha, éste es mi código: En este momento, al ejecutarlo me marca el mensaje  La conversión del tipo 'DBNull' en el tipo 'String' no es válida.

    el campo fecharem lo tengo como tipo Date en mi Base de Datos; yo sospecho que por ahí debe ir el error. Agradecería si pudieran ayudarme.

    Sub sumarimportesventas()
            Try
                con.Open()
                Dim cm As SqlCommand
                cm = New SqlCommand("select sum(totalrem)from Remisiones where fecharem='" & DateValue(Me.Label16.Text) & "'", con)
                Dim reader As SqlDataReader

                reader = cm.ExecuteReader
                If reader.Read Then
                    Me.Label2.Text = reader(0)   'Label en la cual se requiere aparezca el valor

                Else
                    MsgBox("ERROR")

                End If

                con.Close()
            Catch ex As Exception
                MsgBox(ex.Message)


            End Try


        End Sub

    sábado, 7 de enero de 2017 17:37

Respuestas

  • Hola:

    Veo que el error que te está dando es porque el campo no tiene valor, es decir, es nulo.

    Corrige el reader de esta forma:

    If (Not reader.IsDBNull(0)) Then Me.label2.text = reader.GetDateTime(0)
    else Me.label2.text = 0

    end if

    Ahi estarás comprobando que si el valor del campo es nulo, te lo ponga a 0.

    Un saludo.

    Gemma


    sábado, 7 de enero de 2017 20:14

Todas las respuestas

  • Hola:

    En el lector de datos (reader), tienes que indicar el tipo de dato que tiene que leer, en este caso, fecha.

    Me.label2.text = reader.GetDateTime(0)

    Por otro lado, deberías utilizar parámetros en tu consulta, facilitas la codificación y eliminas otros problemas, como por ejemplo Inyección de código sql.

    cm = New SqlCommand("select sum(totalrem)from Remisiones where fecharem = @fecha", con) dim parameter as new System.Data.SqlClient.SqlParameter()

    cmd.parameters.add("@fecha", Label16.Text)

    Un saludo.

    Gemma


    sábado, 7 de enero de 2017 18:55
  • Muchas gracias por tu respuesta Gemma.

    Fijate que sigue sin funcionarme, ya coloqué el tipo de dato que se debe leer pero sigue marcando el mismo mensaje de error.

    Tiene algo que ver que yo tenga sólo tipo de dato Date y no DateTime?

    Pendiente de tu respuesta, saludos!

    sábado, 7 de enero de 2017 20:03
  • Hola:

    Veo que el error que te está dando es porque el campo no tiene valor, es decir, es nulo.

    Corrige el reader de esta forma:

    If (Not reader.IsDBNull(0)) Then Me.label2.text = reader.GetDateTime(0)
    else Me.label2.text = 0

    end if

    Ahi estarás comprobando que si el valor del campo es nulo, te lo ponga a 0.

    Un saludo.

    Gemma


    sábado, 7 de enero de 2017 20:14
  • Muchas gracias por su respuesta y su apoyo;  ya pude obtener la información tal como la necesitaba.

    Saludos cordiales!



    • Editado Zarpis jueves, 16 de noviembre de 2017 17:16
    domingo, 8 de enero de 2017 14:59