Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 22
Tomás Va por buen camino
DateTimePicker: problema comparando fechas

Hola a todos:

Al comparar dos fechas, una guardada en un registro con otra de un DateTimePicker, siendo la misma fecha no las considera iguales.

Así no funciona cuando las fechas son iguales:

rFechaPrimero := DM.IBDSContaFECHA.AsDateTime; //del registro
rFecha := DTPFecha.Date; //del DTPicker
if rFechaPrimero >= rFecha then
Application.MessageBox('La fecha debe ser mayor...','Aviso',mb_Ok+mb_IconStop);

Añadiendo StrToDate(DateToStr( )) al DTPicker si funciona:

rFechaPrimero := DM.IBDSContaFECHA.AsDateTime;
rFecha := StrToDate(DateToStr(DTPFecha.Date)); //<---¿?
if rFechaPrimero >= rFecha then
Application.MessageBox('La fecha debe ser mayor...','Aviso',mb_Ok+mb_IconStop);

¿Por qué? ¿Estoy haciendo algo mal? ¿Influirá la hora del DTPicker?

Gracias. Tomás.
Responder Con Cita
  #2  
Antiguo 17-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Puede tener que ver con el hecho de que a fin de cuentas un TDateTime es de tipo Double y las comparaciones entre valores double no siempre son lo que se espera debido a la representación interna de dichos valores.

Puedes usar la función CompareDateTime de la unidad DateUtils para tal efecto.

// Saludos
Responder Con Cita
  #3  
Antiguo 17-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cuando comparas dos TDateTime no compara solamente la fecha... sino fecha y hora. Si queres comparar únicamente las fechas, simplemente truncá ambos valores con trunc(fecha).

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
  #4  
Antiguo 17-03-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 22
Tomás Va por buen camino
He estado mirando la función "CompareDateTime", y por lo que puedo entender, ya que mi inglés no es muy voyante, compara también hasta los mislisegundos, pero he visto y probado "CompareDate" que funciona perfectamente.

CompareDate(FechaUno,FechaDos) devuelve
-1 si FechaUno es menor
0 si son iguales
1 si FechaDos es mayor

Probaré ahora lo que apunta Jackguate: Trunc(fecha).

Muchisimas gracias a los dos.
Tomás
Responder Con Cita
  #5  
Antiguo 17-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Tomás
lo que apunta Jackguate
Dado que no es la primera vez que lo veo... solo apuntar que mi nickname es jachguate...

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 06-09-2004
LoBo2024 LoBo2024 is offline
Miembro
 
Registrado: ago 2004
Posts: 24
Poder: 0
LoBo2024 Va por buen camino
Retomo este hilo ya q no me ha aclarado el tema estoy intentando hacer que si la fecha es superior a una cierta fecha quiero q la aplicacion se cierre, pero no consigo q me cierre la aplicación

procedure TPrincipal.FormCreate(Sender: TObject);
begin
if CompareDate(Trunc(Date),Trunc(StrToDate('05/08/2004'))) = 1 then Close;
end;

Ese es el codigo q yo tengo si alguien me puede decir lo q hago mal, le estaria muy agradecido.

Gracias por adelantado.

Última edición por LoBo2024 fecha: 06-09-2004 a las 12:12: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


La franja horaria es GMT +2. Ahora son las 14:18:12.


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