Validação de data diferente da data de hoje, não esta funcionando

10/12/2020

0

Bom dia, estou com uma duvida boba, preciso validar a data , ver se ela é nula ou inferior ao dia de hoje, porem, se eu colocar o dia de hoje ela cai no erro de ser inferior ao dia de hoje, é bobo, mas to quebrando a cabeça

if (Trunc(Pedido.FieldByName(''DATA'').AsDateTime) <> now) then
begin
if (Trunc(Pedido.FieldByName(''DATA'').AsDateTime) = 0 ) or (Trunc(Pedido.FieldByName(''DATA'').AsDateTime) < Now )then
begin
Pedido.FieldByName(''DATA'').FocusControl;
raise Exception.Create(''Data inválida! Data inferior a data atual!'');
end;
end;

Banco SQLite
Ramboli

Ramboli

Responder

Post mais votado

10/12/2020

você está comparando data com data-hora. não vai funcionar. você precisa comparar dados semelhantes.
tente truncar os dois lados da comparação:
if (Trunc(Pedido.FieldByName('DATA').AsDateTime) <> Trunc(now)) then
   if (Trunc(Pedido.FieldByName('DATA').AsDateTime) = 0) or (Trunc(Pedido.FieldByName('DATA').AsDateTime) < Trunc(Now)) then
   begin
      Pedido.FieldByName('DATA').FocusControl;
      raise Exception.Create('Data inválida! Data inferior a data atual!');
   end;

ou ainda usar AsDate:
if (Pedido.FieldByName('DATA').AsDate <> SysUtils.Date) then
   if (Pedido.FieldByName('DATA').AsDate = 0) or (Pedido.FieldByName('DATA').AsDate < SysUtils.Date) then
   begin
      Pedido.FieldByName('DATA').FocusControl;
      raise Exception.Create('Data inválida! Data inferior a data atual!');
   end;

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

10/12/2020

Ramboli

você está comparando data com data-hora. não vai funcionar. você precisa comparar dados semelhantes.
tente truncar os dois lados da comparação:
if (Trunc(Pedido.FieldByName('DATA').AsDateTime) <> Trunc(now)) then
   if (Trunc(Pedido.FieldByName('DATA').AsDateTime) = 0) or (Trunc(Pedido.FieldByName('DATA').AsDateTime) < Trunc(Now)) then
   begin
      Pedido.FieldByName('DATA').FocusControl;
      raise Exception.Create('Data inválida! Data inferior a data atual!');
   end;

ou ainda usar AsDate:
if (Pedido.FieldByName('DATA').AsDate <> SysUtils.Date) then
   if (Pedido.FieldByName('DATA').AsDate = 0) or (Pedido.FieldByName('DATA').AsDate < SysUtils.Date) then
   begin
      Pedido.FieldByName('DATA').FocusControl;
      raise Exception.Create('Data inválida! Data inferior a data atual!');
   end;




Opa, muito obrigado, consegui resolver graças a ti, era um problema bobo que me atormentava, muito obrigado, truncar os dois lados da comparação funcionou, muito obrigado




Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar