Soma de datas

Delphi

09/04/2008

Ola, olhando os topicos li algo sobre somar datas, que por conhecidencia é a minha duvida, tentei fazer algo que os colegas explicaram:
DBedit4.text:= DateToStr(IncDay(StrToDate(Edit1.Text), dm.QueryCodigo.fieldbyname(´prazo´).AsString;));
O problema é que minha data fica assim se eu somo 21/02/2008 + 4 a data fica meia errada, 250/22/008, entao tentei usar um FormatDateTime e ficou assim
DBEdit9.Text:= DateToStr(IncDay(formatdatetime(´yyyy-mm-dd´,strtodate(DBEdit4.Text))), StrToInt(dm.QueryCodigo.fieldbyname(´prazo´).AsString));

Alguem pode me ajudar?


Pedrodt

Pedrodt

Curtidas 0

Respostas

Pedrodt

Pedrodt

09/04/2008

Ola, olhando os topicos li algo sobre somar datas, que por conhecidencia é a minha duvida, tentei fazer algo que os colegas explicaram: DBedit4.text:= DateToStr(IncDay(StrToDate(Edit1.Text), dm.QueryCodigo.fieldbyname(´prazo´).AsString;)); O problema é que minha data fica assim se eu somo 21/02/2008 + 4 a data fica meia errada, 250/22/008, entao tentei usar um FormatDateTime e ficou assim DBEdit9.Text:= DateToStr(IncDay(formatdatetime(´yyyy-mm-dd´,strtodate(DBEdit4.Text))), StrToInt(dm.QueryCodigo.fieldbyname(´prazo´).AsString)); Alguem pode me ajudar?


Completando, da um erro de Tdatetime and string..


GOSTEI 0
Fknyght

Fknyght

09/04/2008

Faz o seguinte, ao inves de usar Edit, use MaskEdit e coloque a mascara
´99/99/9999;1; ´ e tente o codigo abaixo


Var
Data : TDateTime;
begin
try
Data := StrToDate( MaskEdit1.Text );
except
ShowMessage(´Data inválida´)
end;
end;


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

Faz o seguinte, ao inves de usar Edit, use MaskEdit e coloque a mascara ´99/99/9999;1; ´ e tente o codigo abaixo Var Data : TDateTime; begin try Data := StrToDate( MaskEdit1.Text ); except ShowMessage(´Data inválida´) end; end;


A mascara ja esta editada so que pela query, dei um editmask e o displayformat ficou assim dd/mm/yyyy e o editmask !00/00/0000;1;, isso esta em todos os edits que tem datas.
E agora, uhahuaua.. to ferrado.


GOSTEI 0
Martins

Martins

09/04/2008

[quote:78b970da23=´fknyght´]Faz o seguinte, ao inves de usar Edit, use MaskEdit e coloque a mascara ´99/99/9999;1; ´ e tente o codigo abaixo Var Data : TDateTime; begin try Data := StrToDate( MaskEdit1.Text ); except ShowMessage(´Data inválida´) end; end;


A mascara ja esta editada so que pela query, dei um editmask e o displayformat ficou assim dd/mm/yyyy e o editmask !00/00/0000;1;, isso esta em todos os edits que tem datas.
E agora, uhahuaua.. to ferrado.[/quote:78b970da23]

Carissímo colega, não encontrei problemas em usar o incremento de dia em uma data usando a mascara do jeito q está.

  MaskEdit3.Text := DateToStr(IncDay(Now()+30));


  MaskEdit3.Text := DateToStr(IncDay(StrToDate(MaskEdit3.Text)+30));


Seu código não deveria ser assim:
DBedit4.text:= DateToStr(IncDay(StrToDate(Edit1.Text), dm.QueryCodigo.fieldbyname(´prazo´).AsInteger)); 



GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

[quote:61b1065f48=´pedrodt´][quote:61b1065f48=´fknyght´]Faz o seguinte, ao inves de usar Edit, use MaskEdit e coloque a mascara ´99/99/9999;1; ´ e tente o codigo abaixo Var Data : TDateTime; begin try Data := StrToDate( MaskEdit1.Text ); except ShowMessage(´Data inválida´) end; end;


A mascara ja esta editada so que pela query, dei um editmask e o displayformat ficou assim dd/mm/yyyy e o editmask !00/00/0000;1;, isso esta em todos os edits que tem datas.
E agora, uhahuaua.. to ferrado.[/quote:61b1065f48]

Carissímo colega, não encontrei problemas em usar o incremento de dia em uma data usando a mascara do jeito q está.

  MaskEdit3.Text := DateToStr(IncDay(Now()+30));


  MaskEdit3.Text := DateToStr(IncDay(StrToDate(MaskEdit3.Text)+30));


Seu código não deveria ser assim:
DBedit4.text:= DateToStr(IncDay(StrToDate(Edit1.Text), dm.QueryCodigo.fieldbyname(´prazo´).AsInteger)); 
[/quote:61b1065f48]

amigo, tentei usar o seu codigo mais o erro é o seguinte EConverTerror with message ´101/22/2008´ (a data certa era 10/02/2008) is not is valid date.


GOSTEI 0
Martins

Martins

09/04/2008

[i:87fabf06de][b:87fabf06de]amigo, tentei usar o seu codigo mais o erro é o seguinte EConverTerror with message ´101/22/2008´ (a data certa era 10/02/2008) is not is valid date.[/b:87fabf06de][/i:87fabf06de]

Nobre colega, faça um pequeno teste, apenas para q possa adaptar as tuas necessidades ok!

Partindo do ponto em que seu campo [b:87fabf06de][color=red:87fabf06de]Prazo[/color:87fabf06de][/b:87fabf06de] seria do tipo [b:87fabf06de]String[/b:87fabf06de].
procedure TForm1.Button6Click(Sender: TObject);
var
  Prazo: String;
begin
  Prazo := ´10´;
  MaskEdit2.Text := DateToStr(IncDay(StrToDate(MaskEdit1.Text)+StrToInt(Prazo)-1));
end;


Nos mostre o seu código como ele está para q possamos fazer as correções.


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

[i:37ae9e4b38][b:37ae9e4b38]amigo, tentei usar o seu codigo mais o erro é o seguinte EConverTerror with message ´101/22/2008´ (a data certa era 10/02/2008) is not is valid date.[/b:37ae9e4b38][/i:37ae9e4b38] Nobre colega, faça um pequeno teste, apenas para q possa adaptar as tuas necessidades ok! Partindo do ponto em que seu campo [b:37ae9e4b38][color=red:37ae9e4b38]Prazo[/color:37ae9e4b38][/b:37ae9e4b38] seria do tipo [b:37ae9e4b38]String[/b:37ae9e4b38].
procedure TForm1.Button6Click(Sender: TObject);
var
  Prazo: String;
begin
  Prazo := ´10´;
  MaskEdit2.Text := DateToStr(IncDay(StrToDate(MaskEdit1.Text)+StrToInt(Prazo)-1));
end;
Nos mostre o seu código como ele está para q possamos fazer as correções.


Meu codigo é assim:
procedure TFrmCadArquivo.DBLookupComboBox2Exit(Sender: TObject);
var
prazo:string;
begin
prazo:=´10´;
DBEdit11.Text:=DateToStr(IncDay(strtodate(DBEdit4.text),StrToInt(prazo)));
end;

Ainda da erro como se ele nao conseguisse converter a data, sera que eu errei no displayformat ou algo assim, porque ele nao consegue converter a data, na verdade ele empurra os numeros um campo pra frente ficando xxx/xx/xxx, muito estranho.
Obrigado pelo auxilio e pela atenção de todos, estao sendo muito uteis.


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

A proposito, tentei usar seu comando em uma nova aplicação e funcionou perfeitamente, apesar de o mes nao aparecer muito certinho exemplo 11/_2/2008, mais mesmo assim fuincionou..


GOSTEI 0
Martins

Martins

09/04/2008

A proposito, tentei usar seu comando em uma nova aplicação e funcionou perfeitamente, apesar de o mes nao aparecer muito certinho exemplo 11/_2/2008, mais mesmo assim fuincionou..


Como está seu DisplayFormat para o campo desse DBEdit q vc está usando ?

O formato data do seu PC está dd/mm/aaaa?

Tá estranha essa parada!!!!


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

[quote:5b962c8147=´pedrodt´]A proposito, tentei usar seu comando em uma nova aplicação e funcionou perfeitamente, apesar de o mes nao aparecer muito certinho exemplo 11/_2/2008, mais mesmo assim fuincionou..


Como está seu DisplayFormat para o campo desse DBEdit q vc está usando ?

O formato data do seu PC está dd/mm/aaaa?

Tá estranha essa parada!!!![/quote:5b962c8147]

Ta assim dd/mm/yyyy o display, se voce tiver email posso mandar o software pra voce ver, se voce aceitar, so nao vai rir pq so iniciante uhahuahua..


GOSTEI 0
Martins

Martins

09/04/2008

Não sei o q está havendo, pois um simples código como esse:

  DBEdit4.Text := DateToStr(IncDay(StrToDate(DBEdit3.Text), 30));

deveria funcionar.

Acho q vc terá q ver como estão seus componentes.


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

Não sei o q está havendo, pois um simples código como esse:
  DBEdit4.Text := DateToStr(IncDay(StrToDate(DBEdit3.Text), 30));
deveria funcionar. Acho q vc terá q ver como estão seus componentes.


Nao aceita meu programa por email so para ver?
acho que é simples..


GOSTEI 0
Martins

Martins

09/04/2008

Não vou sorrir, já fui um iniciante tb, pode ter certeza q todos aqui um dia deram o primeiro passo, então não precisa se envergonhar OK!

Estamos aqui para ajudar.

e-mail: martinsbios@gmail.com


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

Acabei de lhe enviar, esqueci de mencionar que o comando com o problema esta no OnExit do DBCombobox2 no FrmCadArquivo, Muito obrigado mesmo.


GOSTEI 0
Martins

Martins

09/04/2008

Acabei de lhe enviar, esqueci de mencionar que o comando com o problema esta no OnExit do DBCombobox2 no FrmCadArquivo, Muito obrigado mesmo.


Já recebi e olhei, só q o banco q vc me mandou está com problemas, se vc puder postar ou mandar o script das tabelas posso recriá-lo aqui, mas veja o exemplo q deixei no seu e-mail, é coisa básica e usa Cds, mas vc vai ver, lá eu uso o OnEnter no lugar do OnExit, essa prática de envio de código por e-mail não é uma boa para o fórum em si, mas assim q resolvido seu problema seria interessante postar a solução para q mais pessoas com o mesmo problema ou algum problema semelhante tenha uma direção para seguir.

Boa sorte.


GOSTEI 0
Martins

Martins

09/04/2008

Mandei o código q vc me enviou, agora corrigido, olhei os Fields tb, redirecione o banco e faça testes, acredito q o maior problema estava nos componentes em si e em como vc estava tratando os campos no Fields Editor.


GOSTEI 0
Pedrodt

Pedrodt

09/04/2008

cara era so o displayformat.. valeu mesmo..


GOSTEI 0
Martins

Martins

09/04/2008

cara era so o displayformat.. valeu mesmo..


:D , blz, e se não me engano já haviamos perguntado como estava o DisplayFormat, o bom é q vc vai poder dar continuidade ao seu trabalho.


GOSTEI 0
POSTAR