Ver Mensaje Individual
  #8 (permalink)  
Antiguo 07/01/2005, 05:14
Ramondi
 
Fecha de Ingreso: octubre-2004
Ubicación: Andorra!! Andorra!!!
Mensajes: 39
Antigüedad: 20 años, 6 meses
Puntos: 0
La consulta la tienes que replantear, porque puedes tener una hora de entrada anterior a la reservada y una hora de salida posterior a la de la reservada. Es decir si tienes una mesa reservada de 2pm a 3pm, esa consulta te dejará hacer otra reserva de las 1pm a las 4pm por ejemplo... Yo lo veo asi :
sql = "SELECT * FROM calendario WHERE hora < #"&hora2&"# AND hora2 > #"&hora&"# AND id_mesa = '" & _
id_mesa&"' AND dia = '"&dia&"' AND mes = '"&mes&"' AND ano= '"&ano&"'"

En hora y hora2 tienes, supongo, las horas de la 2nda reserva. Ejecutas el sql y si no te da ningun registro, entonces guardas la reserva. Si no te da rs.eof, es que existe una reserva que se te solapa con la que intentas hacer.

La sintaxis de operaciones con horas no la conozco, pero la algorismica sería esa. Si tienes una reserva que empieza antes de que acabe la de la mesa id_mesa, y que acaba después de que empieze la reserva de la mesa id_mesa es que se solapan :
Casos posibles :
..............:----- Reserva 1 -----:
..:-----Reserva 2-----:............................h_empieza<hora2 h_acaba>hora
..:-------------Reserva 2-----------:........h_empieza<hora2 h_acaba>hora
................:----Reserva2----:..................h_empieza<hora2 h_acaba>hora
.....................:------Reserva 2----:.........h_empieza<hora2 h_acaba>hora
:Reserva2:........................................ .....h_empieza<hora2 h_acaba<=hora
............................................:Reser va2:.h_empieza>=hora2 h_acaba>hora

Ale, espero que no haya resultado demasiado liado :P
Un saludo!

Última edición por Ramondi; 07/01/2005 a las 05:16