Atualizar tela do cliente ao incluir um novo registro. Como?

28/11/2004

0

Galera, estou com um sistema que usa o Interbase, mas gostaria que ao incluir algum dado em outra maquina, automaticamente atualizar a tela cliente...

Como faoç isso..

Uma vez vi uma palestra q o cara, criou uma stored procedure que realizava esta tarefa...

Obrigado



:arrow: [color=red:69db265c3f]Título alterado pelo Moderador oTTo. Removido: ´ Atualizar Tela cliente´.[/color:69db265c3f]
:idea: [color=blue:69db265c3f]Seja mais claro no título.[/color:69db265c3f]
:idea: [color=blue:69db265c3f][url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=16976]Saiba como obter resposta rápida..[/url][/color:69db265c3f]
:idea: [color=blue:69db265c3f]Leia sempre [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta.[/url][/color:69db265c3f]
:idea: [color=blue:69db265c3f]Use sempre o Link [url=http://delphiforum.icft.com.br/forum/search.php][img:69db265c3f]http://delphiforum.icft.com.br/forum/templates/subSilver/images/icon_mini_search.gif[/img:69db265c3f] Pesquisar[/url] no topo da Página.[/color:69db265c3f]


Tremonti

Tremonti

Responder

Posts

29/11/2004

Fsflorencio

Amigo,
acredito que para isto vc precise de utilizar um timer para verificar de tempos em tempos se houve uma atualização.

Por exemplo:

Vc cria uma trigger nos eventos before insert, delete e update para atualizar um generator ou gravar alguma informação em uma tabela auxiliar. Esta informação deve ser utilizada para indicar se houve alteração na tabela.

Na sua aplicação deve haver um timer abrindo periodicamente uma query buscando o retorno se houve a alteração gravada no generator ou na tabela (como vc preferir).

Havendo alteração, então ele abre e fecha a consulta.


Responder

29/11/2004

Fsflorencio

Havendo alteração, então ele abre e fecha a consulta.


Digo, ele fecha e Abre a consulta.


Responder

02/12/2004

Tremonti

Poderia me dar uma ajuda em relação a isso meu caro colega?!

Obrigado!!!


Responder

03/12/2004

Fsflorencio

Vamos lá então.

Digamos que a tabela em questão chama-se CLIENTES.

Precisaremos criar uma tabela auxiliar chamada ALTERACOES
[b:2b140e7ec6]
CREATE TABLE ALTERACOES (
NOME_TABELA VARCHAR(31) )[/b:2b140e7ec6]

Crie uma trigger para cada evento da tabela CLIENTES: after insert, after update, after delete + ou - da seguinte forma:

[b:2b140e7ec6]CREATE TRIGGER TG_ATUALIZA_CLIENTES FOR CLIENTES
AFTER INSERT POSITION 0
AS
BEGIN
INSERT INTO ALTERACOES (NOME_TABELA) VALUES(´CLIENTES´);
END

CREATE TRIGGER TG_ATUALIZA_CLIENTES FOR CLIENTES
AFTER UPDATE POSITION 0
AS
BEGIN
INSERT INTO ALTERACOES (NOME_TABELA) VALUES(´CLIENTES´);
END

CREATE TRIGGER TG_ATUALIZA_CLIENTES FOR CLIENTES
AFTER DELETE POSITION 0
AS
BEGIN
INSERT INTO ALTERACOES (NOME_TABELA) VALUES(´CLIENTES´);
END[/b:2b140e7ec6]

Ou seja, vai inserir um registro na tabela ALTERACOES para cada evento da tabela CLIENTES, indicando que houve alteração.

Na sua aplicação, vc vai colocar um Timer e no evento ontimer vc vai colocar algo como:

[b:2b140e7ec6]Qry_Auxiliar.SQL.TExt := ´SELECT * FROM ALTERACOES WHERE NOME_TABELA = ´´CLIENTES´´´;
Qry_Auxiliar.Open;

if not Qry_Auxiliar.isempty then
begin
Qry_Auxiliar.SQL.Text := ´DELETE FROM ALTERACOES WHERE NOME_TABELA = ´´CLIENTES´´´;
Qry_Auxiliar.ExecSql;
qry_Auxiliar.Transaction.CommitRetaining;

//Vai fechar e abrir a consulta em questão
Qry_Que_Esta_Esperando_Atualizacao.Close;
Qry_Que_Esta_Esperando_Atualizacao.Open;
end

Qry_Auxiliar.Close;[/b:2b140e7ec6]

Espero que tenha te ajudado.


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