Problema com módulo de alarme
Um usuário pediu para implementar um módulo de alarme num sistema para alertar sempre que determinado campo data numa tabela passasse de um limite de tempo pré-estabelecido (no caso 1 mês). Normalmente não teria problema nenhum em fazer isso, só que nesse caso ele quer que passe 1 mês e alerte, passe outro mês e alerte novamente e assim por diante, até o registro ser atualizado. Se a quantidade de meses fosse fixa era só fazer um laço na hora de testar as datas, o que não é o caso aqui. Alguém tem uma idéia de como posso implementar isso de forma prática no sistema? Pode ser tanto na aplicação Delphi como no próprio banco (uso Firebird 1.5).
Gandalf.nho
Curtidas 0
Respostas
Ara.es
11/05/2007
Você pode pegar da data somente o dia e verificar se o dia da data e menor ou igual a data atual senão você emite o alarme, não sei qual o comando que serve para isso no Firebird, pois trabalho com SQL, nele é DATEPART.
Ate mais, precisar e so falar...
Ate mais, precisar e so falar...
GOSTEI 0
Gandalf.nho
11/05/2007
O problema de fazer isso é que o alarme vai tocar todos os dias e ele só pode tocar uma vez a cada mês que passar do limite.
GOSTEI 0
Massuda
11/05/2007
Cada vez que o alarme é disparado você podia ´rearmar´ ele para disparar em outra data no futuro.
GOSTEI 0
Gandalf.nho
11/05/2007
Cada vez que o alarme é disparado você podia ´rearmar´ ele para disparar em outra data no futuro.
E como eu poderia fazer isso?
GOSTEI 0
Ipc$
11/05/2007
Vc pode guardar a informação no regedit.
GOSTEI 0
Massuda
11/05/2007
Como você decide que tem que dar o alarme? Você poderia guardar quando foi o último alarme e ter uma regra do tipo ´um alarme só pode ser dados após x dias do último alarme´.
GOSTEI 0
Gandalf.nho
11/05/2007
Como você decide que tem que dar o alarme? Você poderia guardar quando foi o último alarme e ter uma regra do tipo ´um alarme só pode ser dados após x dias do último alarme´.
Eu tenho que pesquisar numa tabela do banco para verificar se existe algum registro com um valor pré-determinado num campo X e cujo campo data tenha vencido em 1 ou mais meses. Se encontrar, tenho que avisar e retornar a lista dos registros encontrados.
GOSTEI 0
Gandalf.nho
11/05/2007
Alguma sugestão de como posso fazer isso (de preferência que não seja algo demorado, já que essa verificação terá que ser feita diariamente)?
GOSTEI 0
Massuda
11/05/2007
Não consigo imaginar um jeito de fazer isso sem ter uma tabela de alarmes pendentes pelo sistema.
A rotina hoje existente teria que checar quais alarmes precisam ser gerados (incluindo itens na tabela de alarmes se for preciso) e quais alarmes não são mais necessários (removendo itens da tabela de alarmes).
Numa segunda etapa, você analisaria a tabela de alarmes e geraria os alarmes, lembrando de anotar quando foi o último ou quando será o próximo; logo, uma alarme só seria gerado se estiver na tabela e se está no dia de avisar (ou se passou muito tempo desde a última vez que gerou o alarme).
Imagino que tenha uma forma de associar cada alarme com o registro que originou o alarme.
Num mexo muito com BD, deve ter forma mais simples de fazer isso.
A rotina hoje existente teria que checar quais alarmes precisam ser gerados (incluindo itens na tabela de alarmes se for preciso) e quais alarmes não são mais necessários (removendo itens da tabela de alarmes).
Numa segunda etapa, você analisaria a tabela de alarmes e geraria os alarmes, lembrando de anotar quando foi o último ou quando será o próximo; logo, uma alarme só seria gerado se estiver na tabela e se está no dia de avisar (ou se passou muito tempo desde a última vez que gerou o alarme).
Imagino que tenha uma forma de associar cada alarme com o registro que originou o alarme.
Num mexo muito com BD, deve ter forma mais simples de fazer isso.
GOSTEI 0
Gandalf.nho
11/05/2007
Mas esse método não ficaria muito lento?
GOSTEI 0