Validação de data diferente da data de hoje, não esta funcionando
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
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
Curtidas 0
Melhor post
Emerson Nascimento
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:
ou ainda usar AsDate:
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;
GOSTEI 1
Mais Respostas
Ramboli
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:
ou ainda usar AsDate:
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
GOSTEI 0