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

10/12/2020

8

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

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

Aceitar