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