alterar dia de pagamento de contas no delphi

24/01/2019

0

Boa noite!

tenho uma aplicação em Delphi e nessa aplicação tenho uma tela de contas, gostaria de saber como posso alterar o dia do vencimento, tipo o dia de vencimento e todo dia 5, mas o cliente quer mudar a data de pagamento para todo dia 10, meu banco de dados e firebird.
Gustavo Silva

Gustavo Silva

Responder

Posts

25/01/2019

Hélio Devmedia

Gustavo, tem várias maneiras de se fazer isso, e vai depender de como você desenvolveu seu projeto:

Pode ser feito de forma manual, em cada registro ir no campo Data e colocar a nova data;
Pode fazer uma tela que mostre a lista de contas e até permita fazer um filtro por data ou cliente, e depois fazer um while que para cada registro você troque a data por exemplo:

while not dataset.eof do
begin
dataset.fieldyName().asDate:=novaData;
end;

para achar a nova data é muito simples:

na uses declare a System.DateUtils;

agora você terá um método que vai te ajudar:

var
novaData: TDate;
begin
novaData:=EncodeDate(YearOf(dataAntiga),MonthOf(dataAntiga), 10);
end;

-> EncodeDate é um método que pega números e transforma numa data;
-> YearOf pega o ano da data antiga;
-> MonthOf pega o mes da data antiga;
-> 10 é o novo dia que passa a valer;


é possível fazer com strings também mas não é uma boa prática de programação...

Espero ter ajudado. Um forte abraço e fique com Deus.




Responder

25/01/2019

Gustavo Silva

Gustavo, tem várias maneiras de se fazer isso, e vai depender de como você desenvolveu seu projeto:<br />
<br />
Pode ser feito de forma manual, em cada registro ir no campo Data e colocar a nova data;<br />
Pode fazer uma tela que mostre a lista de contas e até permita fazer um filtro por data ou cliente, e depois fazer um while que para cada registro você troque a data por exemplo:<br />
<br />
while not dataset.eof do <br />
begin<br />
dataset.fieldyName().asDate:=novaData;<br />
end;<br />
<br />
para achar a nova data é muito simples: <br />
<br />
na uses declare a System.DateUtils;<br />
<br />
agora você terá um método que vai te ajudar:<br />
<br />
var<br />
novaData: TDate;<br />
begin<br />
novaData:=EncodeDate(YearOf(dataAntiga),MonthOf(dataAntiga), 10);<br />
end;<br />
<br />
-> EncodeDate é um método que pega números e transforma numa data;<br />
-> YearOf pega o ano da data antiga;<br />
-> MonthOf pega o mes da data antiga;<br />
-> 10 é o novo dia que passa a valer;<br />
<br />
<br />
é possível fazer com strings também mas não é uma boa prática de programação...<br />
<br />
Espero ter ajudado. Um forte abraço e fique com Deus.<br />
<br />
<br />
<br />
<br />
Boa tarde!<br />
<br />


Já me deu o caminho que precisava pra fazer essa alteração, no entanto o dia sera digitado pelo usuário em um edit, então preciso pegar as datas de vencimento que já estão gravadas e alterar somente o dia do mês, no caso o dia digitado no edit.<br />
<br />
eu criei checkbox no meu dbgrid criei também uns filtros por data de cadastro, nome do cliente e documento, então quando pesquiso trás os filtros que preciso alterar, marco os checkbox no grid e faco a verificação com while. por favor se puder me dar uma ideia como fazer ficaria muito grato.
Responder

25/01/2019

Gustavo Silva

Gustavo, tem várias maneiras de se fazer isso, e vai depender de como você desenvolveu seu projeto:<br />
<br />
Pode ser feito de forma manual, em cada registro ir no campo Data e colocar a nova data;<br />
Pode fazer uma tela que mostre a lista de contas e até permita fazer um filtro por data ou cliente, e depois fazer um while que para cada registro você troque a data por exemplo:<br />
<br />
while not dataset.eof do <br />
begin<br />
dataset.fieldyName().asDate:=novaData;<br />
end;<br />
<br />
para achar a nova data é muito simples: <br />
<br />
na uses declare a System.DateUtils;<br />
<br />
agora você terá um método que vai te ajudar:<br />
<br />
var<br />
novaData: TDate;<br />
begin<br />
novaData:=EncodeDate(YearOf(dataAntiga),MonthOf(dataAntiga), 10);<br />
end;<br />
<br />
-> EncodeDate é um método que pega números e transforma numa data;<br />
-> YearOf pega o ano da data antiga;<br />
-> MonthOf pega o mes da data antiga;<br />
-> 10 é o novo dia que passa a valer;<br />
<br />
<br />
é possível fazer com strings também mas não é uma boa prática de programação...<br />
<br />
Espero ter ajudado. Um forte abraço e fique com Deus.<br />
<br />
<br />
<br />
<br />
Boa tarde!<br />
<br />


Já me deu o caminho que precisava pra fazer essa alteração, no entanto o dia sera digitado pelo usuário em um edit, então preciso pegar as datas de vencimento que já estão gravadas e alterar somente o dia do mês, no caso o dia digitado no edit.<br />
<br />
eu criei checkbox no meu dbgrid criei também uns filtros por data de cadastro, nome do cliente e documento, então quando pesquiso trás os filtros que preciso alterar, marco os checkbox no grid e faco a verificação com while. por favor se puder me dar uma ideia como fazer ficaria muito grato.

Segue um exemplo de como façõ pra alterar o valor do pagamento, e funciona perfeitamente, preciso fazer agora pra alterar a data de vencimento pelo dia digitado no edit.

procedure TfrmContasaReceber.btnAlterarClick(Sender: TObject);
begin
try
Application.CreateForm(TfrmAlteraContas, frmAlteraContas);
if frmAlteraContas.ShowModal = mrOk then
begin
if frmAlteraContas.rbValor.Checked = True then
begin
with FdqryContas do
begin
First;
while not FdqryContas.Eof do
begin
if FieldByName('MARCAR').AsString = 'S' then
begin
Edit;
FieldByName('VALOR_PARCELAS').AsAnsiString:=frmAlteraContas.edtVlrParcela.Text;
FieldByName('MARCAR').AsString:= 'N';
FieldByName('DATA_ALT').AsDateTime:=Date;
Post;
end;
Next;
end;
ApplyUpdates(0);
end;
end;
end;
finally
FreeAndNil(frmContasaReceber);
end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar