Las horas. Como las ves, o sea 07:45, 22:00 no existen, son decimales de día, por eso, aunque parezca mentira, lo importante es determinar si, por ejemplo, tu escribes 22:15, se cuenta o no el 22:00 y el 22:30 o sólo los que están en ese intervalo, o sea 22:01, 22 10, 22:29, o se cuenta uno y no otro, etc.
Mira, para demostrar las horas, supongamos que tengo unas reserva el día de hoy( no hagas caso al formulario, sería una tabla, pero aprovecho lo que tengo)
Puedes ver, que si no cuento las 22:00, si escribiera 22:15, habría 3 clientes con reserva 15 minutos antes de las 22:15 y 15 minutos después.
Si en un formulario cualquiera tengo un cuadro de texto llamado ParaReservar y escribo una hora, en este caso 22:15
Puedes ver que el cursor está todavía en él. Al pulsar Enter
Si le digo sí, me abre el formulario Reservas, en vista diálogo sólo con esos registros
El código del evento Después de actualizar del cuadro de texto ParaReservar del Formulario1 es
Private Sub ParaReservar_AfterUpdate()
Dim r As Byte, respuesta As Byte
r = Nz(DCount("*", "reservas", "horareserva >= DateAdd(""n"", -15, Parareservar) and horareserva<=DateAdd(""n"", 15, ParaReservar)"))
respuesta = MsgBox("A esa hora hay " & r & " cliente(s) que tienen reserva. ¿Quiere verlos?", vbYesNo, " Luego no me eches la culpa de la aglomeración")
If respuesta = vbYes Then
DoCmd.OpenForm "reservas", , , "horareserva>= DateAdd(""n"", -15, #" & Me.ParaReservar & "#) and horareserva<=DateAdd(""n"", 15, #" & Me.ParaReservar & "#)", acFormReadOnly, acDialog
ElseIf respuesta = vbNo Then
Exit Sub
End If
End Sub
Verás que no uso el between por lo que te decía en primer lugar. Si le pongo between, las horas extremas 22:00 y 22:30 no me las cuenta.( y el comensal todavía sigue ocupando la mesa, ¡que pesado, no hay forma de echarle !). Por eso debes decidir. Si no se cuenta usa el between si se cuentan usa el >= y el <=
Personalmente, el código se lo pondría en el evento Antes de actualizar del cuadro de texto ParaReservar, porque ¿para qué voy a escribir una hora que si hay mucha gente luego debo borrarla? También en el código le pondría como criterio el día de la reserva, pero al no saber como trabajas no digo nada.