¿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.