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


Fajo

Fajo

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:
//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.


Responder

Gostei + 0

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

Aceitar