PDA

Ver la Versión Completa : Las horribles fechas, control de fechas


Huer
18-10-2005, 16:01:18
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.


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:

if dtm.ADOTControl_fechas.FieldbyName('FECHA1').asDate >= defecha.date then


Por aqui tengo una rutina que tambien puede servirte:

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
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.