Ver Mensaje Individual
  #9  
Antiguo 10-03-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola nuevamente.

Primero debes entender que como te hemos dicho la fecha den Delphi (TDate, TDateTime, TTime) es un tipo de dato que básicamente es un numero flotante. Donde la parte entera es la fecha y la parte decimal es la hora

Código Delphi [-]
procedure MostrarFecha;
  var
    lDate : TDateTime;
    lNum : Extended;
begin
  lDate := Now;
  lNum := lDate;
  ShowMessage('Fecha('+FloatToStr(lNum)+'): '+ DateTimeToStr(lDate));

  //Resultado: Fecha(42804,3835583449): 10/03/2017 09:12:19
end;

Los motores de bases de datos almacenan la fecha de igual manera

Código SQL [-]
SELECT 
  CONVERT(DATETIME, '08/03/2017', 103) AS FECHA1,
  CONVERT(DATETIME, 42800, 103) AS FECHA2, 
  CAST(42800 AS DATETIME) AS FECHA3


-- RESULTADO
-- FECHA1                  FECHA2                  FECHA3
-- ----------------------- ----------------------- -----------------------
-- 2017-03-08 00:00:00.000 2017-03-08 00:00:00.000 2017-03-08 00:00:00.000

Entonces, cuando comparas una fecha que almacenaste como texto, estás comparando solo texto.
Es decir: Si almacenaste un rango de '8:00' a las '17:30' y tratas de compararlo con las '14:30' verás que está fuera de rango porque en el ordenamiento de texto '8:00' es mayor a '14:30'

Como ya te dije antes.
En la DB debes usar campos del tipo que almacene la fecha (TIME en SQL Server)
En el programa, no importa mucho que componente uses. si es un DataControl como un DBEdit, el DataSet se encargará de controlar si se ingresa o no un valor válido de fecha.
Si no es un DataControl como un TDateTimePicker o un TEdit, entonces si se requiere debes convertirlo primero a fecha y luego almacenarlo o compararlo con los valores de la DB.

Y por ultimo.
Lee los links que te he dejado
MS SQL Server - Data Types
Delphi Basics - Dates and Times

Además de estos
Funciones y procedimientos para fecha y hora (I)
Funciones y procedimientos para fecha y hora (II)
Funciones y procedimientos para fecha y hora (III)

Y si quieres crear tu propio componente DB-Aware para manejar el campo date
How to create data-aware components
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita