Fórum Calculo de datas (quando data em branco) #214824

17/02/2004

0

Bom o outro topico com relação aos valores esta resolvido obrigado a todos

Mais o de data resolvi abrir outro topico e passar o codigo que eu uso
Veja so:

var venc, Pagto: Tdate;
difdias :double;
begin
venc:=StrToDate(dbEdit5.Text);
Pagto:=StrToDate(dbEdit7.Text);
difdias :=(Pagto - venc);
dbedit12.text:=FloatToStr(difdias);
Uso esse calculo de datas para me retornar a quantidade de dias(funciona beleza) a questão que se eu não informar o pagto (dbedit7) ele da uma mensagem de erro ´__/__/____ não é uma data valida´

Como faço para resolver isso em cima desse codigo que eu uso

Obrigado desde já

wagnernormando@ig.com.br


Wagner

Wagner

Responder

Posts

17/02/2004

Fórum Vini

Olá,
tente usar esse código:
var
  venc, Pagto: Tdate; 
  difdias :double; 
begin 
  try
    venc:=StrToDate(dbEdit5.Text); 
  except
    Showmessage(´Data de vencimento inválida!!´);
  end;
  try
    Pagto:=StrToDate(dbEdit7.Text); 
  except
    Showmessage(´Data de pagamento inválida!!´);
  end;
  difdias :=(Pagto - venc); 
  dbedit12.text:=FloatToStr(difdias); 



Espero ter ajudado.
Vinicius.


Responder

Gostei + 0

17/02/2004

Lucas Silva

no evento onSetText do campo coloque:
procedure .queryCampoSetText(Sender: TField;
  const Text: String);
begin
     if Text = ´  /  /    ´ then
       Sender.AsString := ´´
     else
       Sender.AsString := Text;
end;



Responder

Gostei + 0

17/02/2004

Wagner

Valeu .vini

Mais teu condigo não funciona para mim porque muitas vezes eu tenho que ter o campo data de pagamento em branco (se o cliente não pagou ainda) o que eu quero o evitar o erro quando dt.pag=nada. :lol:

Oh! lucas eu acho que é por ai, mais tambem continua com a mensagem :lol:


Responder

Gostei + 0

17/02/2004

Lucas Silva

Qual a máscara que você colocou no campo?


Responder

Gostei + 0

17/02/2004

Fórum Vini

Valeu .vini Mais teu condigo não funciona para mim porque muitas vezes eu tenho que ter o campo data de pagamento em branco (se o cliente não pagou ainda) o que eu quero o evitar o erro quando dt.pag=nada. :lol: Oh! lucas eu acho que é por ai, mais tambem continua com a mensagem :lol:
Ok Wagner,
dei a dica usando o try..except porque ele já é também uma forma de se verificar se a data está válida.
Mas no seu caso a dica do Lucas é melhor.

T+,
Vinicius.


Responder

Gostei + 0

18/02/2004

Wagner

Dessa forma

__/__/____

no editmask 99/99/9999


Responder

Gostei + 0

19/02/2004

Wagner

[b:7a383dccc9]If[/b:7a383dccc9] nada [b:7a383dccc9]then[/b:7a383dccc9] sobe


Responder

Gostei + 0

19/02/2004

Paulo_amorim

Olá

Se o campo for vazio, o que deveria acontecer??
o difdias deve retornar o que especificamente?


Até+


Responder

Gostei + 0

19/02/2004

Wagner

Nada! eu apenas quero uma maneira de não mostrar a mensagem de erro ´essa não é uma data valida ´ / / ´ ´ quando não informo a data de pagamento mais veja bem muitas vezes eu vou precisar do campo data de pagamento em branco (se o cliente não pagou ainda) so que como e um campo onde eu uso uma soma de datas ele da a mensagem quando não informo a data exegindo que eu bote a data mais so que como eu já disse ´muitas vezes não ter que preencher o campo data de pagamento´


Responder

Gostei + 0

19/02/2004

Lucas Silva

[quote:0edb2deb6b=´Lucas Alves Silva´]no evento onSetText do campo coloque:
procedure .queryCampoSetText(Sender: TField;
  const Text: String);
begin
     if Text = ´  /  /    ´ then
       Sender.AsString := ´´
     else
       Sender.AsString := Text;
end;
[/quote:0edb2deb6b]

Wagner,
Este código não funcionou???

Continua dando o erro do mesmo jeito?


Responder

Gostei + 0

19/02/2004

Marco Salles

Só Uma Opinião. Claro Que Todas as Opiniões Anteriores São De Muita Validade(Tanto No Uso Do Bloco Try Except, Tanto ao Testar o Campo No Evento OnSetTexte), Mas Eu Estou Achando Que o Nosso Amigo Wagner, Quer Evitar Que a Mensagem De Erro Apareça , Caso a Data De Pagamento Não Seja Informada(Como Ele Mesmo Disse, Pode Ser Que Ainda Nã Houve o Pagamento)..Então Olhando Por Este Prisma, Porque Não Efetuar Um Simples Teste , Dentro Da Rotina Que Ele Mesmo Escreveu :?: :?: ...

var venc, Pagto: Tdate;
difdias :double;
begin
venc:=StrToDate(dbEdit5.Text);
if DbEdit7.Text <> ´´ Then  // Simples Teste
  begin
     Pagto:=StrToDate(dbEdit7.Text);
     difdias :=(Pagto - venc);
  end
else
  difdias:=0;
dbedit12.text:=FloatToStr(difdias);



Responder

Gostei + 0

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

Aceitar