Executar uma consulta a cada mudança nos dados

Delphi

01/03/2005

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

Curtidas 0

Respostas

Delphi32

Delphi32

01/03/2005

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é!


GOSTEI 0
Delphi32

Delphi32

01/03/2005

ah, esqueci uma coisa:

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

   IBEvents1.UnRegisterEvents;


Até!


GOSTEI 0
Dorivansousa

Dorivansousa

01/03/2005

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

testei com firebird 1.0.3.972 e funcionou blz...

valeu i...


GOSTEI 0
Dorivansousa

Dorivansousa

01/03/2005

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

testei com firebird 1.0.3.972 e funcionou blz...

valeu i...


GOSTEI 0
Mário Reis

Mário Reis

01/03/2005

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
GOSTEI 0
POSTAR