Foros del Web » Programando para Internet » ASP Clásico »

between con horas tipo 14:00

Estas en el tema de between con horas tipo 14:00 en el foro de ASP Clásico en Foros del Web. hola a todos. tengo una base de datos con 2 campos tipo texto donde guardo horas uno se llama 'desde' y el otro se llama ...
  #1 (permalink)  
Antiguo 31/12/2004, 16:58
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 4 meses
Puntos: 4
between con horas tipo 14:00

hola a todos.
tengo una base de datos con 2 campos tipo texto donde guardo horas
uno se llama 'desde' y el otro se llama 'hasta' las horas que manejo son tipo militar osea asi. 10:00 , 16:30 etc..

lo utilizo para hacer reservas en un restaurante.. se supone que no deben haber 2 reservas en una misma hora ni una misma mesa, bueno mi pregunta es si habra forma de validar con un between o algo asi que cuando ingresen una nueva reserva no la deje ingresar si esa hora esta entre el rango de los campos 'desde' y 'hasta'

espero me puedan colaborar
gracias y felz año nuevo.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 03/01/2005, 04:32
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 19 años, 5 meses
Puntos: 0
proba con esto

SELECT * FROM reservas WHERE hora BETWEEN #20:00:00# AND #23:59:59#
  #3 (permalink)  
Antiguo 04/01/2005, 19:33
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 4 meses
Puntos: 4
hola gracias por la respuesta, no me sirve ya que tengo 2 campos uno de hora inicial y otro de hora final, igualmente tengo 2 combos desde donde se seleccionan las horas inicial y final, entonces tengo que verificar qeu no este en la base de datos entre el rango de hora inicial y final.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 05/01/2005, 03:28
 
Fecha de Ingreso: abril-2004
Mensajes: 2
Antigüedad: 20 años
Puntos: 0
Hola,

al hacer la comparación a ti no te ha de importar la nueva hora final (solo has de comprobar que sea mayor que la nueva hora inicial). Lo importante es comprobar que lo nueva hora inicial no está comprendida entre dos horas (inicial y final) ya existentes. Por lo tanto como decia flacoluis un:

SELECT * FROM reservas WHERE hora BETWEEN #20:00:00# AND #23:59:59# and mesa='"&mesas&"'

deberia funcionar. Aunque si los campos donde tienes las horas son de tipo texto...no lo veo claro. quizá tengas que jugar con transformaciones de datos...
  #5 (permalink)  
Antiguo 05/01/2005, 08:00
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 4 meses
Puntos: 4
hola los campos son de tipo hora/fecha ya corregi eso,
bueno les explico un poco mejor..
tengo dos campos en la base de datos y dos combos en los cuales escojo las horas..

si por ejemplo hago una reserva desde el combobox inicio=13:00 final 16:00 estos datos se guardan en la base de datos en sus respectivos campos hora y hora2,

se supone que tengo una reserva en una mesa para la hora 1pm hasta las 4pm, no pude haber otra reserva nueva en ese rango entonces si tiene que tener encuenta la hora final..
y si meto una reserva asi con el codigo que me dices la deja meter sin problema y no esta bien eso. ya que si esta reservada en ese lapso de tiempo(4 horas) no deberia permitir mas reservas hasta que pase la hora final
me explico mejor?

bueno espero me puedan ayudar porqeu no he podido hacer eso.
gracias

bueno he probado con estas dos consultas pero en ambas me deja meter la reserva en el caso qeu les presente.
entonces no se me ocurre algo mas.
--------------------------------------------
sql = "SELECT * FROM calendario WHERE hora BETWEEN #"&hora&"# AND #"&hora2&"# AND hora2 BETWEEN #"&hora&"# AND #"&hora2&"# AND id_mesa = '" &id_mesa&"' AND dia = '"&dia&"' AND mes = '"&mes&"' AND ano= '"&ano&"'"
------------------------------------------------------
sql = "SELECT * FROM calendario WHERE hora BETWEEN #"&hora&"# AND #"&hora2&"# AND id_mesa = '" & _
id_mesa&"' AND dia = '"&dia&"' AND mes = '"&mes&"' AND ano= '"&ano&"'"

------
probe con ambos casos a meter reservas desde la 1pm hasta las 4pm y luego imeti otra desde las 2 a las 3 y me las deja meter, se supone que esa mesa esta reservada entonces no deberia dejar meter nada en ese rango.. ke estoy haciendo mal?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 05/01/2005 a las 08:08
  #6 (permalink)  
Antiguo 06/01/2005, 20:44
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 4 meses
Puntos: 4
alguien tiene alguna idea de como solucionar este problema con horas?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #7 (permalink)  
Antiguo 07/01/2005, 03:15
 
Fecha de Ingreso: abril-2004
Mensajes: 2
Antigüedad: 20 años
Puntos: 0
Vamos por partes

Mira, cuando un problema se te atraganta es mejor empezar desde el principio poco a poco:

1 - Haz que la página te muestre la consulta SQL que ejecuta y cotejala en la base de datos. Postea aquí si quieres la consulta que te da y miramos si hay algo que tu no veas.

2 - Si la consulta es correcta el problema está en la condición que usas para insertar. Quizá sea un simple fallo de que buscas una condición que no debería ser... tu verás.

Saludos
  #8 (permalink)  
Antiguo 07/01/2005, 05:14
 
Fecha de Ingreso: octubre-2004
Ubicación: Andorra!! Andorra!!!
Mensajes: 39
Antigüedad: 19 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:55.