Búsqueda en formularios de Access

Tengo un botón en un formulario que llama a una función, la cual me permite buscar y filtrar registros entre un rango de fechas. De hecho está funcionando a la perfección a la hora de encontrar los registros, pero el problema se suscita cuando no existen registros dentro del rango buscado. O sea, la función tiene una condición para que en caso de no hallar registros aparezca un cartel... Pero esa condición pese a cumplirse, el cartel no aparece, directamente aparecen todos los campos del formulario en blanco y ningún tipo de aviso.

Deduzco que debo estar escribiendo mal la condición, y por ello no se cumple. Tal vez algún experto pueda revisarla y ver dónde está el error. Aquí la dejo:

'------------------------------------------------------------

' BuscaFECHA
'------------------------------------------------------------
Function BuscarFECHA()
On Error GoTo BuscarFECHA_Err

With CodeContextObject
DoCmd.RunCommand acCmdRemoveFilterSort
DoCmd.ApplyFilter "", "[FECHA] Between [Ingrese 1ra FECHA a Buscar] And [Ingrese 2da FECHA a Buscar]"
If (IsNull(.Fecha)) Then
Beep
MsgBox "NO fue hallado ningun Registro en el rango de fechas ingresado", vbExclamation, "Búsqueda por FECHAS"
DoCmd.ShowAllRecords
End If
End With

BuscarFECHA_Exit:
Exit Function

BuscarFECHA_Err:
MsgBox Error$
Resume BuscarFECHA_Exit

End Function

2 Respuestas

Respuesta
2

Víctor: Si por lo que deduzco del Código es que al no encontrar Registros, lance un Mensaje y los muestre todos, entre otras soluciones que seguro hay, te sugiero la siguiente.

Borra la línea que tienes >> If (IsNull(. Fecha)) Then y la sustituyes por éstas

'... Tu Código
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
If Rst.RecordCount = 0 Then
'....... Tu Resto de código

Mis saludos >> Jacinto

Respuesta
2

Prueba así, a ver si te funciona:

Function BuscarFECHA()
On Error GoTo BuscarFECHA_Err
DoCmd.RunCommand acCmdRemoveFilterSort
DoCmd.ApplyFilter "", "[FECHA] Between [Ingrese 1ra FECHA a Buscar] And [Ingrese 2da FECHA a Buscar]"
If (IsNull(Me.Fecha)) Then
Beep
MsgBox "NO fue hallado ningun Registro en el rango de fechas ingresado", vbExclamation, "Búsqueda por FECHAS"
DoCmd.ShowAllRecords
End If
BuscarFECHA_Exit:
Exit Function
BuscarFECHA_Err:
MsgBox Error$
Resume BuscarFECHA_Exit
End Function

Saludos!


¡Gracias Sveinbojrn!

Hice los cambios sugeridos pero me arroja el mismo resultado, es decir: si encuentra registros en los rangos ingresados los presenta; si no los encuentra quedan todos los campos del formulario en blanco y no aparece el mensaje del MsgBox. 

Lo extraño es que la misma función en otros campos de fecha de otras bases de datos que he hecho, en algunas funciona bien y en otras me surge el mismo inconveniente planteado, y la sintáxis utilizada en todos los casos es la misma, sólo cambia el nombre del campo...

La que funcionó perfecto fue la solución que aportó JACINTO TRILLO JAREÑO.

No obstante, muy agradecido como siempre por tu interés y tus prontas respuestas!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas