ERRO de calculo com datas no Delphi
olá, estou fazendo uma simples verificacao de uma variavel e um campo tipo TDATE
Fiz um exemplo basico abaixo:
.
Ok, no exemplo acima o resultado deve sempre ser verdadeiro, correto?
Pois comigo está dando Falso, tanto o campo como a variavel é tipo TDATE
No debug eu olho e as datas sao aparentemente iguais, mas ao passar no IF da como falso.
Alguém já passou por isso?
Fiz um exemplo basico abaixo:
Var xData:TDate;
Begin
TabelaCampo_Data.Value := Date;
xData := Date;
IF TabelaCampo_Data.Value = Date Then
showmessage('Data igual')
Else
showmessage('Data diferente');
.
Ok, no exemplo acima o resultado deve sempre ser verdadeiro, correto?
Pois comigo está dando Falso, tanto o campo como a variavel é tipo TDATE
No debug eu olho e as datas sao aparentemente iguais, mas ao passar no IF da como falso.
Alguém já passou por isso?
Alberto
Curtidas 0
Respostas
Raimundo Pereira
17/05/2018
Bom dia Beto, Tente assin.
Var xData:TDate;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;
close;
open;
If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;
end;
end;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;
close;
open;
If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;
end;
end;
GOSTEI 0
Raimundo Pereira
17/05/2018
Var xData:TDate;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;
close;
open;
If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;
end;
end;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;
close;
open;
If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;
end;
end;
GOSTEI 0
Emerson Nascimento
17/05/2018
você precisa testar seguindo o exemplo do P2:
Var xData:TDate;
Begin
xData := Date; // atribui o valor à variável
TabelaCampo_Data.Value := xData; // grava no campo o conteúdo da variável
IF TabelaCampo_Data.Value = xData Then // compara o conteúdo do campo com o conteúdo da variável
showmessage('Data igual')
Else
showmessage('Data diferente');GOSTEI 0
Alberto
17/05/2018
Galera, obrigado pelos comentários, encontrei o problema:
Era um componente TDateTimePicker, eu inicialmente pegava a propriedade DATE dele
que o usuario havia escolhido e entao passava como parametro para uma funcao.
Dentro da funcao eu faço a verificacao, que no caso estava dando errado, pois esse
componente, retorna o valor de DATE , provavelmente com TDATETIME, e internamente
o Delphi ao comparar verifica que nao sao iguais, provavelmente mais um erro
de componente mesmo.
Fiz o seguinte pra contornar a situacao:
Era um componente TDateTimePicker, eu inicialmente pegava a propriedade DATE dele
que o usuario havia escolhido e entao passava como parametro para uma funcao.
Dentro da funcao eu faço a verificacao, que no caso estava dando errado, pois esse
componente, retorna o valor de DATE , provavelmente com TDATETIME, e internamente
o Delphi ao comparar verifica que nao sao iguais, provavelmente mais um erro
de componente mesmo.
Fiz o seguinte pra contornar a situacao:
variavel := StrToDate(DateToStr(datetimepicker1.date));
GOSTEI 0