Access

¿Cómo verificar si un conjunto de registros está abierto o cerrado?

Estaba ayudando en un foro donde alguien hizo la pregunta de:

… Verifique para determinar el conjunto de registros está cerrado o aún abierto.

Ahora, en su caso específico, el verdadero problema era la lógica y la reorganización del código eliminaría por completo esta necesidad, pero aún quería compartir una solución simple para cualquier otra persona que quisiera hacer lo mismo.

Una validación de propiedad

La solución más simple para determinar si se abre o se cierra un conjunto de registros es intentar usar una propiedad de registro. Si puede explotar con éxito una propiedad, entonces está abierto, pero si genera y error, entonces el conjunto de registros está cerrado.

Armados con esta idea, podemos traducirla en una función simple como:

Function IsRecordsetOpen(ByVal oRs As DAO.Recordset) As Boolean
    Dim lRecCounter           As Long

    On Error Resume Next
    lRecCounter = oRs.RecordCount 'Try to use the RecordSet property
    IsRecordsetOpen = (Err.Number = 0)
    On Error GoTo 0
End Function

Así que ahora, si alguna vez se encuentra con la necesidad de verificar si un conjunto de registros aún está abierto o no, puede probarlo con una sola línea de código, como:

    Dim oDb                   As DAO.Database
    Dim oRs                   As DAO.Recordset

    Set oDb = CurrentDb
    Set oRs = oDb.OpenRecordset("...")

    ' Your Code, do things, close the RecordSet if you would like, ...
    '...
    'oRs.Close

    ' Check and see if the RecordSet is still open before doing other things
    If IsRecordsetOpen(oRs) Then
        ' The RecordSet is Open
        Debug.Print "The RecordSet is Open"
    Else
        ' The RecordSet is Closed
        Debug.Print "The RecordSet is Closed"
    End If

Así que ahí lo tiene, una solución simple para validar si un conjunto de registros está abierto o no.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba