Delphi informar com antecendia a data do vencimento
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
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
Curtidas 0
Respostas
William
07/07/2012
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...
https://www.devmedia.com.br/alterando-cor-da-linha-de-um-dbgrid/3189
Só adeque a sua condição ao código...
GOSTEI 0
Watson Rocha
07/07/2012
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
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
Wasley Portes
07/07/2012
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.
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
Watson Rocha
07/07/2012
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
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
Deivison Melo
07/07/2012
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.
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
Watson Rocha
07/07/2012
Deivison é isso mesmo que gostaria ,mas nem imagino como fazer isso , sou novo na area,
Voce pode me ajudar ?
Obrigado
Voce pode me ajudar ?
Obrigado
GOSTEI 0
Joel Rodrigues
07/07/2012
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?
- 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
Joel Rodrigues
07/07/2012
Desculpe a displicência, não vi que você deu as informações no primeiro post.
Segue um exemplo:
O exemplo é simples, apenas para te dar a ideia de como prosseguir.
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
Watson Rocha
07/07/2012
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
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
Deivison Melo
07/07/2012
Dá uma olhada nesse tópico!
https://www.devmedia.com.br/mysql-triggers/8088
caso não conseguir evoluir me fala!
https://www.devmedia.com.br/mysql-triggers/8088
caso não conseguir evoluir me fala!
GOSTEI 0
Joel Rodrigues
07/07/2012
WHERE DATAFIM(NOW, DATAFIM)...?
Não seria DATEDIFF?
Não seria DATEDIFF?
GOSTEI 0
Alvaro Vieira
07/07/2012
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.
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
Alvaro Vieira
07/07/2012
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.
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
Watson Rocha
07/07/2012
Imagina Avaro, fica Avontade em ajudar !
Esse comando eu coloco em um Botão é isso mesmo !
Origado
Esse comando eu coloco em um Botão é isso mesmo !
Origado
GOSTEI 0
Watson Rocha
07/07/2012
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
unKnown Column NOW in Where cluse
GOSTEI 0
Joel Rodrigues
07/07/2012
Use NOW() como função (com parênteses).
GOSTEI 0
Watson Rocha
07/07/2012
joel Boa Noite !
Entao ficaria 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.);
Me perdoe a persistencia !
Estou aprendendo Muito Com vocês
Obrigado
Deus abençoe
Entao ficaria 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.);
Me perdoe a persistencia !
Estou aprendendo Muito Com vocês
Obrigado
Deus abençoe
GOSTEI 0
Watson Rocha
07/07/2012
??? alguem pode me ajudar
GOSTEI 0
Joel Rodrigues
07/07/2012
Eis a estrutura correta:
SELECT * FROM TABELA WHERE DATEDIFF(NOW(), CAMPO_DATA) <= 45
SELECT * FROM TABELA WHERE DATEDIFF(NOW(), CAMPO_DATA) <= 45
GOSTEI 0
Watson Rocha
07/07/2012
Joel Gloria Deus , funcionou ! está tudo ok !
Muito Obrigado por tudo
Resolvido !
Muito Obrigado por tudo
Resolvido !
GOSTEI 0
Deivison Melo
07/07/2012
Já que foi solucionado...
Por favor, encerrar tópico!
Bons estudos!!!
Por favor, encerrar tópico!
Bons estudos!!!
GOSTEI 0
Watson Rocha
07/07/2012
RESOLVIDO
GOSTEI 0
Joel Rodrigues
07/07/2012
Fico feliz por ter ajudado, Watson.
Boa sorte em seus projetos.
Estou encerrando este tópico.
Boa sorte em seus projetos.
Estou encerrando este tópico.
GOSTEI 0
Alvaro Vieira
07/07/2012
Não Watson.
Como te escrevi, não testei o comando porque uso o Firebird, mas o que talvez o Joel tenha querido dizer seja isso:
Observe que a função NOW() está dentro da função DATEDIFF() e ela deve retornar a data atual, por isso uma função.
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.
Como te escrevi, não testei o comando porque uso o Firebird, mas o que talvez o Joel tenha querido dizer seja isso:
Observe que a função NOW() está dentro da função DATEDIFF() e ela deve retornar a data atual, por isso uma função.
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