Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-12-2007
federicorl federicorl is offline
Miembro
 
Registrado: may 2006
Posts: 31
Poder: 0
federicorl Va por buen camino
Exclamation manejo de horas en un turno

estoy manejando un programita que registra eventos estos los registra seleccionando en que turno ocurrieron, para esto hice una tabla de turnos qeu contiene la hora en que inicia el turno y la hora en que termina, esto me funciona bien en los dos primero turnos uno empieza a las 6:01 y termina a las 14:00 el otro empieza a las 14:01 y termina a las 22:00 pero el que empieza a las 22:01 termina a las 6:00 del otro dia y el query del programa no lo identifica:

'Select * from Turnos where Inicio <= '+#39+lahora+#39+' and Termino >= '+#39+lahora+#39

Alguien sabe como resolverlo, de antemano mil gracias por su ayuda
Responder Con Cita
  #2  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
No entiendo bien la semántica de tu consulta... pero a mi me parece que la consulta podría funcionar así:

Código SQL [-]
select * from turnos 
where  (inicio < termino and :lahora between inicio and termino)
  or ((inicio > termino) and ((:lahora >= inicio and :lahora <= '23:59:59') or (:lahora <= termino)))

La idea es esa...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 27-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Bueno, si, la apreciacion es correcta, tal vez si lo vemos en lenguaje común la consulta debería de ser algo así...

Se tienen dos horas y una solo fecha para obtener el reporte.

Fecha = 27/12/2007
HoraInicial = 23:00:01
HoraFinal = 06:00:00

La consulta debe de considerar la consulta de la fecha de un dia anterior a partir de las 23:00:01 y la fecha del dia actual hasta las 6 horas.

Código SQL [-]
 
SELECT * FROM TABLA
WHERE (FECHA = :FINI AND HORA >= :HINI) or (FECHA = :FFIN AND HORA <= :HFIN)

Pasamos los parámetros

Código Delphi [-]
  Query1.ParamByName('FINI').Value := Fecha-1; //Asumo que Fecha es un TDateTime
  Query1.ParamByName('HINI').Value := '23:00:01';
  Query1.ParamByName('FFIN').Value := Fecha;
  Query1.ParamByName('HFIN').Value := '06:00:00';
  Query1.Open;

Dejanos saber los avances de este asunto

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 28-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si puedes, te aconsejo que el campo en la base de datos sea de formato Fecha y hora (todo en un mismo campo). La razón es bien sencilla, la hora depende de la fecha, sobre todo para realizar cálculos.

Es normal que te pidan las horas trabajadas en la semana de un trabajador, al tener la fecha y hora por separado, no puedes realizar sumas y restas.

Al tiempo de consultar, pones 2 TdateTimePicker, uno para la fecha y otro para la hora. Al realizar la consulta, concatenas el valor de dichos TdateTimes

Código Delphi [-]
var TheIni, TheEnd :TDateTime;
begin 
   TheIni := RecodeDate(TheIni, datetimepicker1.date);
   TheIni := REcodeTime(TheIni, datetimepicker2.time);

   TheEnd := RecodeDate(TheEnd, datetimepicker3.date);
   TheEnd := REcodeTime(TheEnd, datetimepicker4.time);

    query1.sql.text:= 'select * from turnos where fechaIni >= :ini and FechaFin <= :Fin';
   query1.parambyname('ini').Value := Theini;
   query1.parambyname('Fin').Value := TheEnd;
   query1.Open;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 28-12-2007 a las 13:44:24.
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 arbol de contenidos y manejo se sonido y video Buelos Internet 4 09-07-2007 14:52:45
Sumar Horas?? YolandaM Varios 4 09-11-2003 09:21:46
SQL y las horas FRANKER SQL 2 14-05-2003 10:50:40


La franja horaria es GMT +2. Ahora son las 23:01:30.


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