Soma de datas
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?
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
Curtidas 0
Respostas
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
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;
´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
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
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
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));
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
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].
Nos mostre o seu código como ele está para q possamos fazer as correções.
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
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].
Nos mostre o seu código como ele está para q possamos fazer as correções.
procedure TForm1.Button6Click(Sender: TObject); var Prazo: String; begin Prazo := ´10´; MaskEdit2.Text := DateToStr(IncDay(StrToDate(MaskEdit1.Text)+StrToInt(Prazo)-1)); end;
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
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
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
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
09/04/2008
Não sei o q está havendo, pois um simples código como esse:
deveria funcionar.
Acho q vc terá q ver como estão seus componentes.
DBEdit4.Text := DateToStr(IncDay(StrToDate(DBEdit3.Text), 30));
deveria funcionar.
Acho q vc terá q ver como estão seus componentes.
GOSTEI 0
Pedrodt
09/04/2008
Não sei o q está havendo, pois um simples código como esse:
deveria funcionar.
Acho q vc terá q ver como estão seus componentes.
DBEdit4.Text := DateToStr(IncDay(StrToDate(DBEdit3.Text), 30));
Nao aceita meu programa por email so para ver?
acho que é simples..
GOSTEI 0
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
Estamos aqui para ajudar.
e-mail: martinsbios@gmail.com
GOSTEI 0
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
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
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
09/04/2008
cara era so o displayformat.. valeu mesmo..
GOSTEI 0
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