Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/08/2011, 13:15
zxs23
 
Fecha de Ingreso: mayo-2009
Mensajes: 238
Antigüedad: 15 años
Puntos: 7
Respuesta: Error "3021" en tiempo de Ejecucion : el valor de BOF O EOF es True

Demaciado codigo para leer, al menos utiliza la etiqueta CODE para que sea mas facil leer!

El problema esta en que al llegar a ese punto o al ejecutar esa parte del codigo el registro ya no esta disponible osea lo eliminaste, modificaste o quiza ya se haya descargado el recordset por lo tanto no tienes acceso a él en poca palabras esta vacio, espero no equivocarme.

No recuerdo ahora pero creo que la solucion es utilizando el EOF y BOF del recordset:

Código:
    With rst
        If .EOF And .BOF Then
            lblData.Caption = "No hay ningún registro activo"
            .MoveFirst
        Else
            Text1(0) = .Fields("Au_ID")
            ' Por si el dato es nulo, añadirle una cadena vacia
            Text1(1) = .Fields("Author") & ""
            Text1(2) = .Fields("Year Born") & ""
        End If
    End With

La idea es jugar con el EOF y BOF para que no te salga el error no tengo nada a la mano pero te dejo algo para que busques y/o adaptes
Código:
With rs
    If Not .BOF Then 'Si no esta al inicio
        .MoveFirst 'nos movemos al primer registro
         
        If .EOF = False Then 'Si llega al final y encuetra algo

        End If
     End If
 End With
Tambien podria ser asi
Código:
If Rst.RecordCount = 0 
     'no hay registros, enviar un mensaje 
Else 
     'sí encontró uno o más registros, realizar tareas con ellos 
End If