none
IndexOutOfRangeException RRS feed

  • Pregunta

  • hola buenos dias a todos. estoy teniendo un problema con una aplicacion que tengo q hacer para una materia de la universidad y no se como solucionarlo, el sistema es un ABM clasico, trabajado a tarves de un modelo de capas con ASP.net y VB, usando procedimientos almacenados. el probelma es el siguiente, el insertar, actualizar, eliminar y consultar funcionan bien, ahora, cuando elimino a un alumno de la BD se hace una eliminacion logica, por lo que el valor del campo estado en la BD pasa a ser "0", pero cuando quiero consultar un dni el cual fue dado de baja logica me salta el sigueinte error "No hay ninguna fila en la posición 0"

    Línea 24: Dim DS As New DataSet
    Línea 25: DS = ocnAlumno.AlumnoConsultarDni(Me.dniTextBox.Text)
    Línea 26: If DS.Tables("Alumnos").Rows.Count > 0 And DS.Tables("Alumnos").Rows(0)(8).ToString <> "0" Then

    Línea 27: Me.dniTextBox.Text = DS.Tables("Alumnos").Rows(0)(1)
    Línea 28: Me.libretaTextBox.Text = DS.Tables("Alumnos").Rows(0)(2)

    aqui lo q haces es preguntar en la consulta si el DS trae datos y el campo estado es <> de 0 then que me muestre los datos en el form, sino me avisa q ese alumno esta dado de baja. lo extraño es que cuando consulto cualquier otro funciona siempre y cuando el estado no sea 0, si alguien sabe porque es esto, le agradeceria q me de una mano, saludos.

    viernes, 30 de mayo de 2008 13:11

Todas las respuestas

  • El problema es que si DS.Tables("Alumnos").Rows.Count = 0, la segunda condicion DS.Tables("Alumnos").Rows(0)(8).ToString queda fuera de rango, pues no tiene filas. Ese es el error que te esta dando.

    Para hacer esto, debes poner un if anidado:

    If DS.Tables("Alumnos").Rows.Count > 0 then

    if DS.Tables("Alumnos").Rows(0)(8).ToString <> "0" then

     

    y con eso debería solucionar el problema...

     

    Saludos

    viernes, 30 de mayo de 2008 15:34