Fórum Validação de variavel do tipo TDateTime... #389644

29/10/2010

0

Na verdade o q eu preciso mesmo eh fazer essa comparacao com base na variavel dDatePgto imagine q ela estivesse dentro de uma funcao e fosse passado como parametro o seu conteudo...

funtion CalculaAtrazo(dDatePgto:tDatetime):integer;
begin
   if dDatePgto = StrtoDateTime(' / / ') then begin
      showmessage('Data do pagamento esta em branco!')
      result:= 0;
  else begin
     result:= date - dDatePgto;
  end;
end;

Obrigado, Paulo Moraes
Paulo

Paulo

Responder

Posts

29/10/2010

Wilson Junior

Bom, acho que você deve separar as coisas. Se o nome da sua rotina é CalculaAtrazo, a mesma deve somente calcular o atraso e a verificação deve ser feita antes de chamar esta rotina.

Espero ter colaborado.
Responder

Gostei + 0

29/10/2010

Paulo

Bom, acho que você deve separar as coisas. Se o nome da sua rotina é CalculaAtrazo, a mesma deve somente calcular o atraso e a verificação deve ser feita antes de chamar esta rotina.

Espero ter colaborado.
O meu problema nao esta em fazer o calculo e sim em fazer a validação... if dDatePgto = StrtoDateTime(' / / ') then  showmessage('Data do pagamento esta em branco!') ; se o parametro data estiver em branco,  e vc der um showmessage(datetimetostr(dDatePgto)) vai mostrar 30/12/1899 ou seja nao esta em branco...
Responder

Gostei + 0

29/10/2010

Marcelo Diniz


Na verdade o q eu preciso mesmo eh fazer essa comparacao com base na variavel dDatePgto imagine q ela estivesse dentro de uma funcao e fosse passado como parametro o seu conteudo...

funtion CalculaAtrazo(dDatePgto:tDatetime):integer;
begin
   if dDatePgto = StrtoDateTime(' / / ') then begin
      showmessage('Data do pagamento esta em branco!')
      result:= 0;
  else begin
     result:= date - dDatePgto;
  end;
end;

Obrigado,
Paulo Moraes
 

function ValidaData(data: string) : Boolean;
procedure TForm1.btn1Click(Sender: TObject);begin if ValidaData(edt1.Text) then  MessageDlg('Data OK!', mtError, [mbOK], 0) else  MessageDlg('Data Inválida!', mtError, [mbOK], 0);
end;
function TForm1.ValidaData(data: string): Boolean;var MyData : TDateTime;begintry  MyData := StrToDate(data);  Result := True;except on E: Exception do  Result := False;end;end;
Responder

Gostei + 0

29/10/2010

Paulo


Na verdade o q eu preciso mesmo eh fazer essa comparacao com base na variavel dDatePgto imagine q ela estivesse dentro de uma funcao e fosse passado como parametro o seu conteudo...

funtion CalculaAtrazo(dDatePgto:tDatetime):integer;
begin
   if dDatePgto = StrtoDateTime(' / / ') then begin
      showmessage('Data do pagamento esta em branco!')
      result:= 0;
  else begin
     result:= date - dDatePgto;
  end;
end;

Obrigado,
Paulo Moraes
 

function ValidaData(data: string) : Boolean;
procedure TForm1.btn1Click(Sender: TObject); begin  if ValidaData(edt1.Text) then   MessageDlg('Data OK!', mtError, [mbOK], 0)  else   MessageDlg('Data Inválida!', mtError, [mbOK], 0);
end;
function TForm1.ValidaData(data: string): Boolean; var MyData : TDateTime; begin try   MyData := StrToDate(data);   Result := True; except on E: Exception do   Result := False; end; end;
A questao nao eh saber se eh uma data valida, e sim se ela esta em branco, ou seja, se tem algum valor nela.
Responder

Gostei + 0

29/10/2010

Compusoftware Ltda

Boa tarde so da uma olhaidnha certa denovo no codigo da função ValidaData, pois o quie vc quer esta nela sim
Responder

Gostei + 0

29/10/2010

Marcelo Diniz

Se você informar um valor em branco irá receber a mensagem que a data é inválida.
Responder

Gostei + 0

29/10/2010

Wilson Junior

Se você acha que não é o ideal utilizar as sugestões que o colega colocou, que é o que eu faria, você pode utilizar da seguinte maneira:
funtion CalculaAtrazo(dDatePgto:tDatetime):integer;
begin
   if dDatePgto = StrtoDateTime('30/12/1899') then begin
      showmessage('Data do pagamento esta em branco!')
      result:= 0;
  else begin
     result:= date - dDatePgto;
  end;
end; 


Espero ter colaborado.
Responder

Gostei + 0

29/10/2010

Paulo Ricardo

Acho que essa função
function ValidaData(data: string): Boolean;
var MyData : TDateTime;
begin
try
MyData := StrToDate(data);
Result := True;
except on E: Exception do
Result := False;
end;
end;

resolve sim, creio que já foi concluido esse assunto, abs
Responder

Gostei + 0

30/10/2010

Marco Salles

Bom, acho que você deve separar as coisas. Se o nome da sua rotina é CalculaAtrazo, a mesma deve somente calcular o atraso e a verificação deve ser feita antes de chamar esta rotina.

Espero ter colaborado.
O meu problema nao esta em fazer o calculo e sim em fazer a validação... if dDatePgto = StrtoDateTime(' / / ') then  showmessage('Data do pagamento esta em branco!') ; se o parametro data estiver em branco,  e vc der um showmessage(datetimetostr(dDatePgto)) vai mostrar 30/12/1899 ou seja nao esta em branco...
Calma pessoal   Vamos com calma   Paulo ... Tente entender o conceito do Tipo TDate do Delph   O Tdate na verdade é um INTEIRO   Qnd vc disse que dDateOgto esta em Branco , na Realidade ele Tem o Valor de ZERO que equivale a Data 30/12/1899   Faça este teste para entender o conceito   dDatePgto:=0; showmessage(datetimetostr(dDatePgto)) ; //Mostrara 30/12/1899 dDatePgto:=1; showmessage(datetimetostr(dDatePgto)) ; //Mostrara 01/01/1900   e assim segue ate nos dias atuais...   Tem um outro exemplo tb para vc chegar a sua conclusão   Coloque um clientDataSet e adicione nele um Campo do Tipo TDate e o Chame de Data Utilizando o FieldsEditor (Um clique com o Botao direito em cima do ClientDataSet)   Apos isto tb dando um clique com o Botão direito em cima do ClientDataSet escolha CreateDataBase   Pronto   Coloque um Botão e coloque o Codigo   procedure TForm6.Button1Click(Sender: TObject);
begin
Showmessage(
cds.FieldByName('data').AsString+sLineBreak+
datetostr(cds.FieldByName('data').AsDateTime)+sLineBreak+
floattostr(cds.FieldByName('data').AsDateTime));
end;   Veja que Como nao tem nenhum Valor Vc tera depedendo do Tipo e da Conversão Um Valor Vazio  ( para String) uma Data Esquisita ( Padrao nesta situaçoes ) 30/12/1899 que sera convertida para o Inteiro ZERO   espero ter acrescentado algo          
Responder

Gostei + 0

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

Aceitar