none
[Ayuda] El valor no puede ser nulo. Nombre del parámetro: item RRS feed

  • Pregunta

  • Hola,, tengo una consulta..

    en una clase tengo este procedimiento..

    Dim ConsultaPrestados As String = ""
                ConsultaPrestados = " Select Titulo From Libros Where Id_Libro =" & IdLibro
                ds.Dispose()
                ds = oDatos.EjecutarConsulta(ConsultaPrestados)
    
                Return ds.Tables(0).Rows(0).Item(0)

    Al llamarlo desde el formulario..

    lstlibros.Items.Add(ClsLibros.Punto6())

    Me funciona bien.. el listbox se llena correctamente.. como para probar le puse que llene hasta 5 items.. que los llena correctamente y luego larga un msgbox diciendo que no puede agregar mas items y en ese instante me arroja el siguiente error: El valor no puede ser nulo. Nombre del parámetro: item

    Lo que quiero que haga lo hace.. el problema es el final en como termina esto.. Gracias

    miércoles, 5 de diciembre de 2012 0:11

Respuestas

  • algo que veo mal es este metodo EjecutarConsulta() ya que por lo visto no te deja definirle parametros

    porque deberias usar

    Dim dt As New DataTable

    Using cn As SqlConnection = New SqlConnection(connstring)

    Dim query As String = "Select Titulo From Libros Where Id_Libro = @libro" Dim cm As New SqlCommand(query, cn) cmd.Parameters.AddwithValue("@libro", IdLibro) Dim da As New MySqlDataAdapter(cm) da.Fill(dt) End Using

    alli si se usan parametro y es lo correcto

    -----

    ademas veo que usas

    Return ds.Tables(0).Rows(0).Item(0)

    pero como sabes que se devuelve una row, que pasa sino hay registros ? se produce un fallo

    deberias poder validarlo

    If dt.Rows.Count > 0 Then

        Dim row As DataRow = dt.Rows(0)

        'resto del codigo

    End If

    creo que deberias volver a analziar el codigo y usar si o si parametros para evitar problemas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 5 de diciembre de 2012 0:31

Todas las respuestas

  • algo que veo mal es este metodo EjecutarConsulta() ya que por lo visto no te deja definirle parametros

    porque deberias usar

    Dim dt As New DataTable

    Using cn As SqlConnection = New SqlConnection(connstring)

    Dim query As String = "Select Titulo From Libros Where Id_Libro = @libro" Dim cm As New SqlCommand(query, cn) cmd.Parameters.AddwithValue("@libro", IdLibro) Dim da As New MySqlDataAdapter(cm) da.Fill(dt) End Using

    alli si se usan parametro y es lo correcto

    -----

    ademas veo que usas

    Return ds.Tables(0).Rows(0).Item(0)

    pero como sabes que se devuelve una row, que pasa sino hay registros ? se produce un fallo

    deberias poder validarlo

    If dt.Rows.Count > 0 Then

        Dim row As DataRow = dt.Rows(0)

        'resto del codigo

    End If

    creo que deberias volver a analziar el codigo y usar si o si parametros para evitar problemas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 5 de diciembre de 2012 0:31
  • Te hago una pregunta mas: Esta bien llamado de esta manera el metodo: 

    lstlibros.Items.Add(ClsLibros.Punto6())

    Aunque este mal la sintaxis del codigo!

    miércoles, 5 de diciembre de 2012 2:57
  • hola

    si Punto6() es el nombre del metodo y lo defines como Shared entonces esta correcto


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 5 de diciembre de 2012 5:07