Fórum Problema com módulo de alarme #341630
11/05/2007
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).
Posts
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...
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.
Cada vez que o alarme é disparado você podia ´rearmar´ ele para disparar em outra data no futuro.
Cada vez que o alarme é disparado você podia ´rearmar´ ele para disparar em outra data no futuro.
E como eu poderia fazer isso?
Vc pode guardar a informação no regedit.
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´.
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.
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)?
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.
Mas esse método não ficaria muito lento?