¿Como mostrar un mensaje de texto en formulario Access si una Consulta = 0 registros?

¿Cómo puedo hacer que al abrir un formulario, que depende de una consulta, muestre un mensaje y un botón para cerrar el formulario y volver al anterior si no hay ningún registro que cumpla las condiciones de dicha consulta?

1 Respuesta

Respuesta
1

Tienes varias formas de hacerlo, te voy a plantear un par de ellas:

Opción 1:

1º/ En el formulario que está basado en la consulta (lo voy a llamar FConsulta, para abreviar), en el evento "Al abrir", le generas este código:

Private Sub Form_Open(Cancel As Integer)
Dim rst As DAO.Recordset
Dim misRegsitros As Integer
Set rst = CurrentDb.OpenRecordset(Me.RecordSource)
misRegistros=rst.RecordCount
rst.Close
Set rst=Nothing
If misRegistros= 0 Then
MsgBox "No hay registros para mostrar"
Cancel = True
End If
End Sub

El texto que sigue a MsgBox, lo puedes personalizar a tu gusto.

2º/ En el Formulario desde el que llamas a FConsulta, imagino que por medio de un botón, le pones este código a ese botón:

On Error GoTo sol_err:
DoCmd.OpenForm "FConsulta"
Salida:
Exit Sub
sol_err:
If Err.Number = 2501 Then
Resume Salida
Else
MsgBox Err.Number & ": " & Err.Description
End If

Opción 2:

Directamente, en el formulario desde el que llamas a FConsulta, en el botón le pones este otro código:

Dim rst as DAO.Recordset
Dim misRegistros As Integer
Set rst=CurrentDb.OpenRecordset("NombreConsulta")
misRegistros=rst.RecordCount  'Coges los registros de la consulta
rst.Close
Set rst=Nothing
If  misRegistros=0 Then  'Si no hay Registros
MsgBox "No hay registros que mostrar" 'lanzas el aviso
Else  'Si hay registros
DoCmd. OpenForm "FConsulta" 'Abres el formulario
DoCmd. Close acForm, Me. Name 'Cierras el formulario inicial
End If

Perdona como podría en este mismo formulario una vez abierto, hacer un botón aceptar que guarde el registro y avanzar al siguiente si lo hay y mostrar un mensaje "tarea concluida" si no hay más registros que cumplan la consulta.

Muchas gracias

En el código del botón ponle este código en el evento Al hacer click:

'Control de errores
On Error GoTo sol_err
'Guarda los datos
DoCmd.RunCommand acCmdSaveRecord
'Se mueve al siguiente, si no hay, saltará un error que controlamos
DoCmd.GoToRecord , , acNext
Salida:
Exit Sub
sol_err:
'Si no hay registro siguiente, se produce el error 2105
If Err.Number = 2105 Then
 MsgBox "Tarea terminada",vbOkOnly+vbInformation,"AVISO"
End If
Resume Salida

Como comentario, decirte que la parte de guardar solo te funcionará si la consulta permite hacer cambios. Si no es así, te dará error.

Además, por defecto Access ya te guarda los cambios al cambiar de registro, a menos que tengas establecido algún sistema para que no lo haga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas