Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2011
francodelphi francodelphi is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 9
Poder: 0
francodelphi Va por buen camino
Ayuda sobre manejo de fechas

Hola gente! Como les va? Tengo una duda con manejos de fechas.
Estoy haciendo un sistema para la reserva de unas cabañas. El tema es que yo tengo que decir si una cabaña esta ocupada o libre , voy a tener dos fechas , fecha desde y fecha hasta , quiero saber como hacer que por ejemplo si un cliente viene y me dice que quiere una cabaña desde tal fecha hasta tal fecha que el sistema me diga si la fecha que selecciono el cliente esta ocupada o libre . Desde ya muchas gracias , necesito saber porque estoy al horno jaja. Un abrazo!
Responder Con Cita
  #2  
Antiguo 26-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
tienes las estructuras de las tablas?
algun codigo que hayas avanzado?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 26-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
aunque se me ocurre que en una tabla coloques por ejemplo lo siguiente

si reservas una cabaña del 15/10 al 18/10

Cita:
Cabaña.... fecha
01.......15/10/2011
01.......16/10/2011
01.......17/10/2011
01.......18/10/2011
entonces si por ejemplo alguien viene a separar esa misma cabaña el dia 16, tu podrias buscar en esa tabla si el dia esta libre o no... si el registro existe entonces no esta libre

se entendio?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 26-10-2011
francodelphi francodelphi is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 9
Poder: 0
francodelphi Va por buen camino
No no tengo nada , lo tengo que empezar . Tengo que usar la tabla reservas (id_cab,id_cli,res_fdesde,res_fhasta,res_fecha,res_importe,res_obse,res_agente) cuando hago una reserva tengo que guardar en esta tabla el id del cliente (id_cli) y los demas datos.
Responder Con Cita
  #5  
Antiguo 26-10-2011
francodelphi francodelphi is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 9
Poder: 0
francodelphi Va por buen camino
si entiendo pero cuando yo hago eso que vos hiciste , el sistema me tiene que tirar solo si la cabaña esta ocupada o libre , entendes?
Responder Con Cita
  #6  
Antiguo 26-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmmm
podrias ir buscando las fechas en la tabla que te dije

siguiendo el mismo ejemplo
si reservas una cabaña del 15/10 al 18/10

y viene otra persona y quiere reservar del 17 al 21

el modulo podria buscar desde el dia 17 al 21 en la tabla que te dije
y mostraria algo asi

Cita:
cabaña 01
Dia 17/10 ocupado
Dia 18/10 ocupado
Dia 19/10 Libre
Dia 20/10 Libre
Dia 21/10 Libre
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 26-10-2011
francodelphi francodelphi is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 9
Poder: 0
francodelphi Va por buen camino
Si entendi pero yo lo que necesito es tener el código para calcular eso que me estas diciendo, ese es el tema :/
Responder Con Cita
  #8  
Antiguo 26-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ohhh ya...
codigo...
tienes algo?
tienes al menos el modulo de la reserva de las cabañas?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 26-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola francodelphi.

Para consultar si está ocupada sólo es necesario evaluar la fecha hasta.

Un ejemplo:
Código Delphi [-]
var
OcupadaHasta: TDateTime;
FechaAConsultar: TDateTime;
begin
OcupadaHasta:= StrToDateTime('05/01/2011'); // fecha hasta
FechaAConsultar:= StrToDateTime('04/1/2011'); // fecha a consultar
if CompareDate(OcupadaHasta, FechaAConsultar) = 1 then
Caption:= 'OCUPADA' // <- Resultado en este ejemplo
else
Caption:= 'LIBRE';
...
A fines del ejemplo asigné los valores a mano, pero lógicamente el valor de OcupadaHasta deberá ser obtenido de alguna tabla.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-10-2011 a las 23:45:01.
Responder Con Cita
  #10  
Antiguo 26-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola francodelphi.

Para consultar si está ocupada sólo es necesario evaluar la fecha hasta.

Un ejemplo:

Código Delphi [-]
uses DateUtils;
...
var
OcupadaHasta: TDateTime;
FechaAConsultar: TDateTime;
begin
OcupadaHasta:= StrToDateTime('05/01/2011'); // fecha hasta
FechaAConsultar:= StrToDateTime('04/1/2011'); // fecha a consultar
if CompareDate(OcupadaHasta, FechaAConsultar) = 1 then
Caption:= 'OCUPADA' // <- Resultado en este ejemplo
else
Caption:= 'LIBRE';
...




A fines del ejemplo asigné los valores a mano, pero lógicamente el valor de OcupadaHasta deberá ser obtenido de alguna tabla.
Podés ampliar la funcionalidad añadiendo a la fecha la hora (generalmente se desocupan a las diez de la mañana)

Saludos.
siempre eres acertado en tus intervenciones ecfisa... pero no creo que sea tan sencillo,
lo que le planteas, no te da una fecha exacta de cuando este libre la cabaña
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 26-10-2011
francodelphi francodelphi is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 9
Poder: 0
francodelphi Va por buen camino
uses DateUtils;
var
var
OcupadaHasta: TDateTime;
FechaConsulta: TDateTime;
begin
OcupadaHasta:= StrToDateTime('05/01/2011 10:00:00 a.m.'); // fecha hasta
FechaConsulta:= StrToDateTime('05/01/2011 09:01:00 a.m.'); // fecha a consultar
if CompareDateTime(OcupadaHasta, FechaConsulta) = -1 then
Caption:= 'LIBRE'
else
Caption:= 'OCUPADA';

Lo que no entiendo , es que aca ustedes le asignan una fecha . Yo tengo que tomar referencia con los 2 campos de fecha de la tabla ya cargadas , y ahi que el sistema me diga si esta ocupada o no..osea, como levanto las fechas de la tabla de la bd?, mas arriba puse los campos de mi bd..y una mas, si mi cabaña esta ocupada del 10/10/2011 al 15/10/2011 y viene otra persona y me la quiere alquilar del 11/10/2011 al 14/10/2011 como hago el control para que me diga que esta ocupada?
Responder Con Cita
  #12  
Antiguo 27-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
eso te explicaba en post anteriores

pseudocodigo:

Código Delphi [-]
 
Fecha := FechaHasta
while FechaHasta >= Fecha do
begin
  qrybuscarfechaenTabla.parameters.parambyname('fecha').value := fecha
  qrybuscarfechaenTabla.open
  if qrybuscarfechaenTabla.reccount <> 0 Then
   label.caption := 'ocupada'
  else
   label.caption := 'Libre'
  Inc (fecha)
end
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #13  
Antiguo 27-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.


Cita:
lo que le planteas, no te da una fecha exacta de cuando este libre la cabaña
Tenés toda la razón, no se me ocurrió pensar que podrían reservar con fecha anterior a una reserva..., pero no veo la necesidad de recorrer las fechas, creo que podría hacer algo como:
Código Delphi [-]
function TForm1.CabaniaOcupada(Numero: string; Fecha: TDateTime): Boolean;
begin
  with qyCabania do
  begin
    SQL.Text:= 'SELECT * FROM CABANIAS WHERE NUMERO = :NUM';
    ParamByName('NUM').AsString:= Numero;
    Open;
    Result:= (Fecha >= FieldByName('OCUPADADESDE').AsDateTime) and
             (Fecha <= FieldByName('OCUPADAHASTA').AsDateTime);
    if IsEmpty then
        ShowMessage('cabaña inexistente');
    Close;
  end;
end;

Llamada de ejemplo:
Código Delphi [-]
...
 if CabaniaOcupada('001', DateTimePicker1.DateTime) then
   ShowMessage('OCUPADA')
  else
   ShowMessage('LIBRE');


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-10-2011 a las 14:46:11.
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
Manejo de Fechas de vencimiento en delphi 7 luisraad Varios 92 11-04-2013 23:33:40
Manejo de Fechas - Sumar o restar días r1d2m3 OOP 2 30-10-2010 03:06:24
Manejo de Fechas en Firebird 2.1 Jose Roman SQL 3 17-02-2009 17:15:03
Manejo de fechas nazly Varios 2 14-03-2008 19:05:23
Manejo de fechas Leogiro OOP 2 11-09-2004 00:22:39


La franja horaria es GMT +2. Ahora son las 09:52:35.


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