Executar uma consulta a cada mudança nos dados

01/03/2005

0

Ola!!!

Alguem sabe como eu executo uma consulta sempre q houver mudança nos dados, ou seja, sempre que um terminal da rede adicionar um novo registro na tabela em questao o programa refaça a consulta?

valeu...


Dorivansousa

Dorivansousa

Responder

Posts

01/03/2005

Delphi32

qual banco de dados você está usando?

Se for Firebird 1.5, faça o seguinte:

crie um trigger de after_update na tabela que você vai querer ´monitorar´. coloque o seguinte comando no trigger. POST_EVENT ´tabela_atualizada´. Agora no seu form coloque um componente IBEvents. Esse componente ´monitora´ o banco de dados e sempre que há um comando como o POST_EVENT ele retorna para a sua aplicação. Ligue ele ao seu Database. Na propriedade Events dele digite o(s) evento(s) que você vai querer capturar na sua aplicação. No exemplo, adicione apenas ´tabela_atualizada´. Coloque em algum evento do form, como o OnCreate (eu costumo usar logo após ter mandado abrir o banco de dados) o seguinte:

   IBEvents1.RegisterEvents;


Agora vá no evento OnEventAlert do IBEvents e coloque o seguinte:

   if EventName=´tabela_atualizada´ then ShowMessage(´A tabela foi atualizada!´);


No seu caso, você vai dar um refresh na tabela ao invés do ShowMessage.

Obs.: Não tenho absoluta certeza, mas acredito que isso já servia tanto pro IB6 e consequentemente pro FB 1.0.

Até!


Responder

01/03/2005

Delphi32

ah, esqueci uma coisa:

não esqueça de antes de fechar o form que tenha o IBEvents, chamar o seguinte:

   IBEvents1.UnRegisterEvents;


Até!


Responder

01/03/2005

Dorivansousa

desculpe por nao ter detalhado bem o problema, eu uso o firebird...

testei com firebird 1.0.3.972 e funcionou blz...

valeu i...


Responder

01/03/2005

Dorivansousa

desculpe por nao ter detalhado bem o problema, eu uso o firebird...

testei com firebird 1.0.3.972 e funcionou blz...

valeu i...


Responder

29/06/2019

Mário Reis

Não satisfaz a minha questão, ou seja continua a haver muito pouca informação sobre o IBEvents. No caso tenho o meu no DMMain; uso com AutoRegister:=True. Não consigo perceber como fazer exactamente e ainda não encontrei um exemplo ou informação que dê uma visão global do assunto e trate dos problemas que estou experimentar, designadamente, a quebra de ligação à Database ao fim de um tempo. Obrigado
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar