Como adicionar dia automaticamente em um DBGrid?
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?
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
Curtidas 0
Respostas
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:
-> 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
11/07/2013
Eu não sabia que tinha esse OnCalcField, legal!
Ainda não consegui calcular o campo Dias, veja como estou fazendo.
Esse DatadeEntrega é o dia que foi cadastrado.
Obs.: AuoCalcFields da ADOTable está True e AutoEdit do DataSource também está True.
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
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
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.
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
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?
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
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!
Muito obrigado a todos pela ajuda, agora deu tudo certo!
GOSTEI 0
Joel Rodrigues
11/07/2013
Tendo sido solucionado o problema, estou concluindo o tópico.
GOSTEI 0