Fórum mudar situação automaticamente #323895
21/06/2006
0
Oi,
tenho um sistema q dentre outras coisas, faz o controle de duplicatas emitidas; na tabela de duplicatas, existe um campo q é responsável por receber a situação da duplicata - PAGA, VENCIDA, CUSTODIADA, NEGOCIADA, etc..., bom, só agora estou precisando fazer com q a situação das duplicatas q vencerão no dia anterior sejam automaticamente mudadas para VENCIDA, ou seja, amanhã o sistema deve fazer uma varredura na tabela de dublicatas e se a data de vencimento for menor q a data atual então a sua situação deve passar automaticamente para VENCIDA, isso como já falei automaticamente sem interferência de ninguém, ai a minha dúvida, faço uma trigger no banco - SQLSERVER2000 - poderia até fazer um sistema q iniciasse junto com o servidor, só q as vezes o servidor não é desligado a noite;
Alguém tem alguma sugestão?
Obrigado
tenho um sistema q dentre outras coisas, faz o controle de duplicatas emitidas; na tabela de duplicatas, existe um campo q é responsável por receber a situação da duplicata - PAGA, VENCIDA, CUSTODIADA, NEGOCIADA, etc..., bom, só agora estou precisando fazer com q a situação das duplicatas q vencerão no dia anterior sejam automaticamente mudadas para VENCIDA, ou seja, amanhã o sistema deve fazer uma varredura na tabela de dublicatas e se a data de vencimento for menor q a data atual então a sua situação deve passar automaticamente para VENCIDA, isso como já falei automaticamente sem interferência de ninguém, ai a minha dúvida, faço uma trigger no banco - SQLSERVER2000 - poderia até fazer um sistema q iniciasse junto com o servidor, só q as vezes o servidor não é desligado a noite;
Alguém tem alguma sugestão?
Obrigado
Fajo
Curtir tópico
+ 0
Responder
Posts
22/06/2006
Daniel Martins
é um sistema Web?
se for um sistema Win32 vc pode fazer uma rotina de varredura qdo o sistema abre(onShow). tipo:
(*cdsDuplicatas é um exemplo*)
se for um sistema Win32 vc pode fazer uma rotina de varredura qdo o sistema abre(onShow). tipo:
//Vai para o primeiro registro da tabela cdsDuplicatas.first; //Enquanto nao chega final while not cdsDuplicatas.eof do begin //testa se está vencido if cdsDuplicatasDTVENCIMENTO < date then begin //se estiver vencido, muda a situacao da duplicata cdsDuplicatas.edit; cdsDuplicatasSITUACAO.value:=´VENCIDA´; //salva cdsDuplicatas.post; end; //vai para o proximo registro cdsDuplicatas.next; end; //aplica todas as mudanças cdsDuplicatas.ApplyUpdates(0);
(*cdsDuplicatas é um exemplo*)
Responder
Gostei + 0
22/06/2006
Eliasexner
Olá
Para não perder muito tempo com processamento e loop´s em registros, eu sugiro que vc faça um procedure no banco, que como nosso amigo Daniel sugeriu, vc poderá rodar quando iniciar o sistema.
Ex: UPDATE contas SET situacao=´VENCIDA´
WHERE data_venciamento < ´01/01/1000´
AND situacao=´NORMAL´
Não esqueça de validar a situação da conta, para não trocar o status de contas já pagas ou custodiadas etc.
Como disse acima, vc pode chamar esta procedure quando o sistema for iniciado, ou poderá executar o SQL por um componente do delphi.
Aqui na empresa, como o sistema é interno, eschedulamos vários processos no servidor (banco de dados) para que rodem durante a noite, pois os servidores ficam ligados. OBS: estes processos estão fora do sistema.
No seu caso talvez seja melhor mesmo que o controle fique no próprio sistema.
Para não perder muito tempo com processamento e loop´s em registros, eu sugiro que vc faça um procedure no banco, que como nosso amigo Daniel sugeriu, vc poderá rodar quando iniciar o sistema.
Ex: UPDATE contas SET situacao=´VENCIDA´
WHERE data_venciamento < ´01/01/1000´
AND situacao=´NORMAL´
Não esqueça de validar a situação da conta, para não trocar o status de contas já pagas ou custodiadas etc.
Como disse acima, vc pode chamar esta procedure quando o sistema for iniciado, ou poderá executar o SQL por um componente do delphi.
Aqui na empresa, como o sistema é interno, eschedulamos vários processos no servidor (banco de dados) para que rodem durante a noite, pois os servidores ficam ligados. OBS: estes processos estão fora do sistema.
No seu caso talvez seja melhor mesmo que o controle fique no próprio sistema.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)