Delphi - Validar fecaha

 
Vista:

Validar fecaha

Publicado por Ximena (5 intervenciones) el 06/01/2005 17:51:47
hola como estan. Quisiera que me ayudaran con estas lineas de codigo, corre el programa pero al arrancar me envia un error en que estoy mal o que estoy haciendo mal?

Este es el codigo, espero me puedan ayudar. Gracias

procedure TFormCli.FormShow(Sender: TObject);
begin
DTPFecha.Date := Date;
end;

procedure TFormCli.FormCreate(Sender: TObject);
var
FechaLim: tdate;
begin
FechaLim := DTPFecha.Date;
if TabMov.FieldByName('Vencimiento').Value = FormatDateTime('dd/mm',FechaLim) then
Messagedlg('La fecha limite ha expirado',mtinformation,[mbok],0);
end;

Y me marca este error al ejecutar el programa:
Invalid variant type conversion

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Validar fecaha

Publicado por skull leader (284 intervenciones) el 06/01/2005 18:53:28
por lo que puedo ver, no se si sea lo que haga que ocurra el error, la función FormatDateTime devuelve un tipo de dato string

acaso tu campo vencimiento es tambien tipo string?
por que no verificas?

espero eso sea el problema y esto te de la pista para solucionarlo.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar fecaha

Publicado por Delfino (1216 intervenciones) el 09/01/2005 13:46:22
sustituyes value por asdatetime:

if TabMov.FieldByName('Vencimiento').AsDateTime = ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar fecaha

Publicado por Ximena (5 intervenciones) el 12/01/2005 17:39:19
Ya intente cambiando lo que me dijiste y sigue marcando el mismo error , en que estare mal. no entiendo por que me dice que es un string si la tengo declarada como date

Gracias por sus respuestas!!!! y espero me puedan seguir ayudando
Ximena. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar fecaha

Publicado por skull leader (284 intervenciones) el 12/01/2005 18:22:25
yo creo que es la función la del problema, por que según yo, devuelve un string.
verifica si lo hace, quizas desde ahi esta el error.
por que según yo, estas intentando meter un string en un date o algo asi
si te dice esto: " Invalid variant type conversion " creo que es por ahi tu problema.

aclaro que es según yo, nunca he usado esa función.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar fecaha

Publicado por Ximena (5 intervenciones) el 13/01/2005 01:37:20
Gracias por tu atencion... voy a revisar eso ok
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayudenmeeeeee

Publicado por Ximena (5 intervenciones) el 17/01/2005 17:00:13
Ya revise bien eso e incluso cambie esto...

if TabMov.FieldByName('Vencimiento').AsString = FormatDateTime('dd/mm',FechaLim) then.........

No me marca ya ningun error pero sigue sin hacer nada..
Por favor si hay otra forma de hacer esto diganmelo si. como sea, lo que quiero es que me diga la ventana al abrirla los vencimientos. Ya estube rebisando por aqui , otras personas han preguntado algo parecido a mi problema pero sigo sin corregirlo...
Gracias y espero me ayuden.

Ximenita

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayudenmeeeeee

Publicado por Delfino (1216 intervenciones) el 17/01/2005 17:39:06
los tipos de campo numerico y fecha tb pueden ser tratados como string ya q una fecha o un numero puede ser interpretado como string, eso por una parte, por otra el codigo tuyo ultimo es correcto pero los dos valores de fecha representados en una string no son iguales (o al reves) por eso no te marca lo q deseas, una maneras para corregirlo sera asginar cada valor comparado a una label y ver en ventana el valor de los labels si es igual o no:

label1.camption := campo.AsString;
label2.caption := FormatDatetime(..);

cuando ves en ejecucion el valor de las dos labels te daras cuenta de lo estas comparando, suerte..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayudenmeeeeee

Publicado por Virum (484 intervenciones) el 18/01/2005 00:28:59
Hola:

Prueba a ver con algo así:

DTPFecha.Date := Now;
if TabMovVENCIMIENTO.AsDateTime < DTPFecha.Date then ....

Suerte. Virum.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias...!!!

Publicado por Ximena (5 intervenciones) el 19/01/2005 18:24:48
Gracias muchachos.... muchisimas gracias, hice esto ultimo que me dijeron y por fin resulto... aunque con sus detalles... les muestro lo que hice ???? Si. Ok

procedure TFormCli.FormCreate(Sender: TObject);
var
FechaLim: tdate;
Dia: tdate;
begin
DTPFecha.Date := Date;

FechaLim := DTPFecha.Date;
Dia := Table1.FieldByName('Vencimiento').Value;

Label5.Caption := FormatDateTime('dd/mm',FechaLim);
Label6.Caption := FormatDateTime('dd/mm',Dia);

Table1.First;
While not Table1.eof do
begin
Table1.FieldByName('Vencimiento').Value;
if Label6.Caption = Label5.Caption then
begin
Messagedlg('La fecha limite ha expirado',mtinformation,[mbok],0);
end;
Table1.Next;
end;

Y asi ya puedo ver el mensage pero tengo que apretar dos o tres veces el boton OK del messagedlg. Ademas no se como poner el campo en el messagedlg para que me indique cual es ...!!!! ya me pase verdad... Bueno, eso vere como lo hago. Pero enverdad que les agradezco sus atenciones... Besos.

Ximena

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar