Fórum Delphi informar com antecendia a data do vencimento #419583
07/07/2012
0
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
Curtir tópico
+ 0Posts
07/07/2012
William
https://www.devmedia.com.br/alterando-cor-da-linha-de-um-dbgrid/3189
Só adeque a sua condição ao código...
Gostei + 0
07/07/2012
Watson Rocha
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
Gostei + 0
08/07/2012
Wasley Portes
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.
Gostei + 0
09/07/2012
Watson Rocha
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
Gostei + 0
09/07/2012
Deivison Melo
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.
Gostei + 0
09/07/2012
Watson Rocha
Voce pode me ajudar ?
Obrigado
Gostei + 0
09/07/2012
Joel Rodrigues
- 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?
Gostei + 0
09/07/2012
Joel Rodrigues
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.
Gostei + 0
09/07/2012
Watson Rocha
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
Gostei + 0
09/07/2012
Deivison Melo
https://www.devmedia.com.br/mysql-triggers/8088
caso não conseguir evoluir me fala!
Gostei + 0
10/07/2012
Joel Rodrigues
Não seria DATEDIFF?
Gostei + 0
10/07/2012
Alvaro Vieira
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.
Gostei + 0
10/07/2012
Alvaro Vieira
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.
Gostei + 0
10/07/2012
Watson Rocha
Esse comando eu coloco em um Botão é isso mesmo !
Origado
Gostei + 0
10/07/2012
Watson Rocha
unKnown Column NOW in Where cluse
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)