Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Las horribles fechas, control de fechas (https://www.clubdelphi.com/foros/showthread.php?t=26275)

Huer 18-10-2005 16:01:18

Las horribles fechas, control de fechas
 
Hola amigos.

antes de enviar esta consulta, me di la tarea de buscar en los foros pero no encontre mi solución es por ello que los molesto su atencion, mi priblema es el siguiente.

trabajo con Delphi 6.0, SQL 2000 CON ADO

todo iba bien durante tres meses el sistema funciono bien, pero me solicitaron controlar la fecha de ingreso ya que la persona que digita las fichas se equivocaba generalmente y digitaba una fecha distinta a la normal. asi que tengo que controlar la fecha durante un rango predeterminado, así que cree una tabla con dos fechas que ingresa el usuario supongamos que el periodo de ingreso es de octubre los parametros deben ser solo del mes y rechazar las fechas que no corresponden

el componente es un TdateEdit, DateEdit1 y quiero controlar el evento onkeydown para que si digito una fecha distinta me advierta.

Código Delphi [-]
 If Key = Vk_return then
   if formatDateTime('ddmmyyy',dtm.ADOTControl_fechas.FieldbyName('FECHA1').Value)
     >= FormatDateTime('dd-mm-yyyy',DEfecha.Date) then
   begin
     ShowMessage('Las fechas son iguales');
   end
   else
   begin
     ShowMessage('Las fechas no son iguales');
   end;
   {...}
busque en el foro esta sentencia, pero solo me controla un rango y no dos.

en espera de una respuesta les doy las gracias de antemano y además gracias por todas las respuestas anteriores...

Lepe 18-10-2005 16:41:57

No comprendo eso de controlar un rango o dos rangos :confused:

la comparación que buscas es:
Código Delphi [-]
 if dtm.ADOTControl_fechas.FieldbyName('FECHA1').asDate >= defecha.date then

Por aqui tengo una rutina que tambien puede servirte:
Código Delphi [-]
uses dateutils;

{-----------------------------------------------------------------------------
  Procedure: DateInMonth
  Author:    Lepe
  Date:      11-mar-2005
  Arguments: TheDate:TDateTime; InMonthAndYear:TDateTime
  Result:    Boolean

  Comprueba si la fecha y hora en TheDate pertenece al mes y año indicado en
  InMonthAndYear.
-----------------------------------------------------------------------------}
function DateTimeInMonth(TheDate:TDateTime; InMonthAndYear:TDateTime):Boolean ;


implementation

function DateTimeInMonth(TheDate:TDateTime; InMonthAndYear:TDateTime):Boolean ;
var iniMes, finMes:TDateTime;
begin
  iniMes := RecodeDateTime(InMonthAndYear,
                            RecodeLeaveFieldAsIs,
                            RecodeLeaveFieldAsIs,
                            1,
                            0,0,0,0);
  finMes := RecodeDateTime(InMonthAndYear,
                            RecodeLeaveFieldAsIs,
                            RecodeLeaveFieldAsIs,
                            DaysInMonth(InMonthAndYear),
                            23,59,59,999);
  Result := (TheDate >= iniMes) and (TheDate <= finMes);
end;

bye bye

Lepe 18-10-2005 16:43:47

PD: si haces una rutina algo especial, que no viene en delphi, ponla en este hilo, que igual me sirve a mi ;)

saludos

Huer 18-10-2005 16:49:43

aclaracion de fechas
 
es que tengo en una tabla de parametros dos fechas una de inicio 01/10/2005 y 30/10/2005 y en el formulario de ingreso tengo por teclado la fecha de ingreso del formulario o sea 01/11/2005 y tengo que comparar la fecha de ingreso de formulario 01/11/2005 si esta en el rango de las dos fechas anteriores que se encuentran en la tablas "control_fechas", las fechas de tablas de parametros se modifican tomando la opción del mes a ingresar

luisgutierrezb 18-10-2005 17:36:47

Porque no creas los campos (boton derecho dataset, Fields Editor -> add all fields), y en el campo que quieras validar, usas el evento OnValidate, ahi generas una excepcion si la validacion es erronea...
Esto como complemento a la funcion para validar y demas

roman 18-10-2005 17:57:59

Desde otro punto de vista: ¿por qué se le dificulta al usuario escribir las fechas?

Es decir, ¿han tomado en cuenta su opinión? ¿Han pensado en modificar la interfaz para que le sea más fácil? Un DateTimePicker por ejemplo, o tres ComboBox, uno para el año, otro para el mes y otro para el día.

Digo esto porque muchas veces se teoriza y buscan soluciones sin considerar al usuario final.

No digo que este sea el caso, no lo puedo saber. Pero si bien no están demás las comprobaciones pertinentes en código, tampoco sobra facilitarle la vida al que debe usar todos los días la aplicación.

// Saludos

Chente(rMan) 18-10-2005 19:11:49

Estoy de acuerdo con Roman, además el DateTimePicker tiene las propiedades MaxDate y MinDate, y con eso lo puedes controlar.



Saludos.

Vicente López.


La franja horaria es GMT +2. Ahora son las 20:19:41.

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