Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2010
davidjeifetz davidjeifetz is offline
Registrado
 
Registrado: feb 2010
Posts: 1
Poder: 0
davidjeifetz Va por buen camino
Consulta de Fechas

Hola!! estoy haciendo un sistema de gestion hotelera y necesito validar unas fechas.

Para hacer una nueva reserva, necesito validar que no haya una reserva ya pendiente para la fecha que elijo.

Entonces para realizar una nueva reserva...necesito validar con el numero de habitacion y las fechas de ingreso y egreso de la misma.

Lo que pude hacer hasta ahora es lo siguiente:

Código:
SELECT * FROM Reserva WHERE Numero_Habitacion=:a0 and (Fecha_Ingreso between :a1 and :a2 or Fecha_Salida between :a3 and :a4)
De esta forma valido que si la fecha de ingreso o la fecha de egreso estan entre el rango de fechas que elijo no me deje hacer la reserva.

el problema que se me presenta ahora es el siguiente:

Suponiendo que tenga una reserva que ingresa el 23 y sale el 27; si en el rango de fechas yo elijo 24 y 26....no me sale que hay una reserva pendiente y me deja hacer la reserva; lo que no deberia pasar.

utilizo Delphi 7 y MySQL 5.0

Espero que me haya explicado lo suficiente y desde ya agradezo la posible ayuda que me puedan brindar.

Saludos!!
Responder Con Cita
  #2  
Antiguo 27-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que primero debes chequear que la nueva reserva no esté entre los días ocupados por la que ya hay, o sea:

Campos en la tabla reservas: codigohabitacion, fechaentrada, fechasalida

Primero, que la fechaIN no esté comrprendida entre esas fechas ya que está ocupada.
Además la fecha de salida no debe coincidir tampoco con ninguna fecha que esté ocupada la habitación, por lo tanto, en principio, se me ocurre algo como esto;
Código SQL [-]
select * 
from tbReservas
where (fechaIN <  fechaentrada or fechaIN > fechasalida)
and (fechaOUT < fechaentrada or fechaOUT > fechasalida)

Evidentemente, habrá que comprobar que fechaIN es menor que fechaOUT.

También hay que comprobar que por ejemplo la fechaIN puede ser menor que fechaentrada, pero entonces la fechaOUT no puede ser mayor que fechasalida, tendrá que ser también menor que fechaIN, "salga usted de la habitación que este fin de semana está reservada a otra persona y el lunes ya puede usted volver a ella". Como eso no se puede permitir, entonces hay que añadir al select:

Código SQL [-]
and ((fechaIN < fechaentrada)  or (fechaIN > fechasalida))

Seguro que hay otra forma más fácil

Última edición por Casimiro Notevi fecha: 27-05-2010 a las 16:54:52.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta con Fechas inetplus SQL 3 08-04-2004 21:09:41
Consulta por fechas omy SQL 2 16-12-2003 19:40:14
Consulta de fechas YolandaM SQL 6 26-07-2003 21:10:34
Consulta con Fechas cmgenny SQL 8 20-06-2003 21:48:25
Consulta de fechas en Paradox apunto SQL 2 27-05-2003 11:49:54


La franja horaria es GMT +2. Ahora son las 12:08:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi