Atualizar tela do cliente ao incluir um novo registro. Como?
28/11/2004
0
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
Posts
29/11/2004
Fsflorencio
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.
29/11/2004
Fsflorencio
Digo, ele fecha e Abre a consulta.
02/12/2004
Tremonti
Obrigado!!!
03/12/2004
Fsflorencio
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.
Clique aqui para fazer login e interagir na Comunidade :)