Fórum Delphi informar com antecendia a data do vencimento #419583

07/07/2012

0

Pessoal Boa tarde !
Estou fazendo um programa , e queria saber se tem como o D7 me informar com 45 dias antes que a data de vencimento de um contrato vai vencer ,ou que mudasse a cor da data de vencimento no DBgrid
Estou usando MYSQL, clientdaset,sqlquery.

Obrigado
Watson Rocha

Watson Rocha

Responder

Posts

07/07/2012

William

Colega se vc só quiser mudar a cor da linha do DBGrid esse link já vai ajudar:
https://www.devmedia.com.br/alterando-cor-da-linha-de-um-dbgrid/3189

Só adeque a sua condição ao código...
Responder

Gostei + 0

07/07/2012

Watson Rocha

Boa Noite wllfl
Não é isso que estou procurando,estou querendo assim.
Quando estiver faltando 45 dias antes de vencer a data do contrato que o delphi me enviasse uma mensagem na tela ou que o dbgrid mudasse de cor no campo da datafinal

Obrigado
Responder

Gostei + 0

08/07/2012

Wasley Portes

Boa tarde, Watson.
Você tem duas opções, desenvolver uma rotina que fique rodando no servidor verificando a data de vencimento ou toda vez que inicializar o sistema executar a rotina de verificação da data de vencimento.

Essa rotina de verificação da data que enviará o email informando o vencimento.
Qualquer dúvida poste novamente.
Responder

Gostei + 0

09/07/2012

Watson Rocha

Wasley Muito Obrigado pelo retorno , é isso mesmo que estou procurando, a segunda opção é perfeita.

toda vez que inicializar o sistema executar a rotina de verificação da data de vencimento

Wasley por favor vc pode me explicar como fazer isso !
No Aguardo.
Watson
Responder

Gostei + 0

09/07/2012

Deivison Melo

Boa tarde Amigo,

Já pensou em desenvolver uma trigger que faça isso de forma automática para vc?

Ou caso deseje fazer a nível de sistema, deverá desenvolver uma rotina para verificar
essa data e tb para que visualmente fique intuitivo ao usuário faça com que a celula
do dbgrid mude de cor (cor que se adequar melhor ergonomicamente ao seu sistema) como
sugeriram acima.
Responder

Gostei + 0

09/07/2012

Watson Rocha

Deivison é isso mesmo que gostaria ,mas nem imagino como fazer isso , sou novo na area,
Voce pode me ajudar ?

Obrigado
Responder

Gostei + 0

09/07/2012

Joel Rodrigues

Alguns passos básicos para este caso:
- Na inicialização do sistema, carregue um dataset com o select trazendo os títulos cujo vencimento é igual ou superior a data atual mais 45 dias;
- Verifique se este dataset contém registros, se contiver, avise (ou abra um form com os registros em questão).

Agora, você sabe usar queries, datasets, etc? Que engine de conexão com o banco você está usando? Que banco?
Responder

Gostei + 0

09/07/2012

Joel Rodrigues

Desculpe a displicência, não vi que você deu as informações no primeiro post.
Segue um exemplo:
minhaQuery.Close();
minhaQuery.SQL := ´SELECT * FROM TABELA WHERE DATEDIFF(NOW, CAMPO_DATA) <= 45´;
minhaQuery.Open();
if minhaQuery.RecordCount > 0 then
   ShowMessage(´Existem títulos vencendo.´);

O exemplo é simples, apenas para te dar a ideia de como prosseguir.
Responder

Gostei + 0

09/07/2012

Watson Rocha

Joel eu coloquei esse script em um botão e modifiquei a linha do select mas ta dando erro .

SQLQUERY1.Close();
SQLQUERY1.SQL.Add ( SELECT * FROM contrato WHERE DATAFIM(NOW, DATAFIM) => 45);
SQLQUERY1.Open();
if SQLQUERY1.RecordCount > 0 then
ShowMessage(Existem títulos vencendo.);

Desculpe a persistencia mas aonde estou errando ?

Obrigado
Responder

Gostei + 0

09/07/2012

Deivison Melo

Dá uma olhada nesse tópico!

https://www.devmedia.com.br/mysql-triggers/8088

caso não conseguir evoluir me fala!
Responder

Gostei + 0

10/07/2012

Joel Rodrigues

WHERE DATAFIM(NOW, DATAFIM)...?
Não seria DATEDIFF?
Responder

Gostei + 0

10/07/2012

Alvaro Vieira

Watson.

Como você diz que é novo na área, peço licença p/ dar umas dicas:
Tenha atenção quando copiar um exemplo ou postar uma dúvida, pois uma simples aspa faz toda a diferença e tentando te responder sobre o que pode estar errado (visto que você não descreveu o erro), observe que você trocou o nome da função indicada pelo Joel e não colocou as aspas conforme o exemplo.
Como uso o FireBird, não pude testar esse comando, (a sintaxe da função DATEDIFF é diferente).
Talvez o seu cód. ficasse correto assim:

SQLQuery1.Close();
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(SELECT * FROM CONTRATO WHERE DATEDIFF(NOW, DATAFIM) <= 45);
SQLQuery1.Open();

if SQLQuery1.RecordCount > 0 then
ShowMessage(Existem títulos vencendo.);

Abraço.
Responder

Gostei + 0

10/07/2012

Alvaro Vieira

Watson.

Como você diz que é novo na área, peço licença p/ dar umas dicas:
Tenha atenção quando copiar um exemplo ou postar uma dúvida, pois uma simples aspa faz toda a diferença e tentando te responder sobre o que pode estar errado (visto que você não descreveu o erro), observe que você trocou o nome da função indicada pelo Joel e não colocou as aspas conforme o exemplo.
Como uso o FireBird, não pude testar esse comando, (a sintaxe da função DATEDIFF é diferente).
Talvez o seu cód. ficasse correto assim:

SQLQuery1.Close();
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(SELECT * FROM CONTRATO WHERE DATEDIFF(NOW, DATAFIM) <= 45);
SQLQuery1.Open();

if SQLQuery1.RecordCount > 0 then
ShowMessage(Existem títulos vencendo.);

Abraço.



Quanto a citação das aspas, desculpe-me, pois há um tempo não visitava esse Fórum devido alguns problemas que pensei já haviam sido resolvidos, mas percebo que as aspas simples que escrevemos são retiradas do código ao enviarmos a mensagem, lamentável...bem, caso ainda precise de ajuda, descreva o erro.
Abraço.
Responder

Gostei + 0

10/07/2012

Watson Rocha

Imagina Avaro, fica Avontade em ajudar !

Esse comando eu coloco em um Botão é isso mesmo !

Origado
Responder

Gostei + 0

10/07/2012

Watson Rocha

Alavaro fiz o que você me passou o me apresentou esse erro .coloquei esse comando num botão ao exetucar deu esse erro abaixo !

unKnown Column NOW in Where cluse
Responder

Gostei + 0

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

Aceitar