Como adicionar dia automaticamente em um DBGrid?

Delphi

11/07/2013

Galera, é o seguinte. Tenho uma conexão com Banco de Dados Access que está ligado a um AdoConnection, listado em um AdoTable e exibido em DBGrid pelo DataSource.
O Banco de Dados é de um cadastro de pessoas e os campos são, por exemplo, Nome, Endereço, Telefone, Dias, etc.

Minha dúvida é assim. Quero que a cada dia que passe esse campo Dias adicione um dia automaticamente.

Por exemplo. Criei um cadastro com o meu nome hoje(11/07/2013).
O campo Dias estará com 0; amanhã quando eu abrir o formulário quero que o campo Dias esteja com 1 e depois de amanhã esteja com 2, ou seja, cada dia ele some um dia.


Como eu posso fazer isso?
Matheus Gomes

Matheus Gomes

Curtidas 0

Respostas

Gabriel Baltazar

Gabriel Baltazar

11/07/2013

Faz o seguinte:
-> Cria um campo Calculado no ADOTable chamado Dias;
-> Coloque o DateUtils no uses;
-> No Evento OnCalcFields do ADOTable coloque o seguinte código:

procedure TForm1.ADOTableCalcFields(DataSet: TDataSet);
begin
  ADOTableDias.Value := DaysBetween(now, ADOTableDataCadastro.Value);
end;
GOSTEI 0
Matheus Gomes

Matheus Gomes

11/07/2013

Eu não sabia que tinha esse OnCalcField, legal!
Ainda não consegui calcular o campo Dias, veja como estou fazendo.

If(ADOTable1DatadeEntrega.AsString>'') Then
  Begin
    ADOTable1Dias.AsDateTime:=DaysBetween(Now,ADOTable1DatadeEntrega.AsDateTime);
  End;


Esse DatadeEntrega é o dia que foi cadastrado.


Obs.: AuoCalcFields da ADOTable está True e AutoEdit do DataSource também está True.
GOSTEI 0
Alan Souza

Alan Souza

11/07/2013

tenta com o campo Dias Integer ao invés de TDateTime:

If(ADOTable1DatadeEntrega.AsString>'') Then
Begin
  ADOTable1Dias.AsInteger := DaysBetween(Today, ADOTable1DatadeEntrega.AsDateTime);
End;
GOSTEI 0
Landerson Santos

Landerson Santos

11/07/2013

E aí Matheus conseguiu resolver?

Vi aí que vc é de Pádua... eu sou de Itaocara, se precisar de ajuda aí só falar.

Quando se vai trabalhar com datas no delphi basta utilizar numeros inteiros para somar ou subtrair dias.

Essa ultima resposta do alanps deve resolver seu problema.
GOSTEI 0
Matheus Gomes

Matheus Gomes

11/07/2013

Sou de Pádua sim, moramos pertinho.

Bom, fiz tudo certinho da maneira que está aí mas ainda não consegui e não sei o porquê.
O programa roda legal, mas o campo que é para ser calculado não mostra nada.

Alguma ideia do porque de estar acontecendo isso?
GOSTEI 0
Matheus Gomes

Matheus Gomes

11/07/2013

Descobri onde eu estava errando, eu não tinha mudado o FieldKind para fkCalculated. Haha (;

Muito obrigado a todos pela ajuda, agora deu tudo certo!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

11/07/2013

Tendo sido solucionado o problema, estou concluindo o tópico.
GOSTEI 0
POSTAR