Fórum Aplicacao Cliente/Servidor qual melhor maneira p/ Atualizar #177541
26/08/2003
0
Qual a melhor maneira para atualizar o terminal com os dados que esta gravado no servidor.
Ex: Tenho 2 terminais e cada um deles um usuário cadastrando uma lista de produtos. 1º Usuário cadastrou o produto 1001 e o 2º foi tentar cadastrar o produto 1001 e recebeu uma mensagem dizendo que o produto 1001 já foi cadastro.
Então qual a melhor maneira que se deve utilizar para gravar o registro no banco de dados para que se um outro terminal tentar cadastrar receba uma mensagem.
Pertunta:
1º) Qual processo de gravação deve utilizar Commit ou CommitRetaining?
2º) Se eu utilizar o Commit, a rede ficara lenda?
3º) Ou se eu utilizar o CommitRetaining a rede ficara lenda?
Obs: Os usuários ficaram cadastrando o dia todo então não posso ter lentidão nos processos.
[color=blue:49b14ccc3b]Informacao:[/color:49b14ccc3b]
Por favor, passem um exemplo de como eu devo gravar os registro e como eu faço para que os outros terminais fiquem atualizados a sim que eu terminal gravar um registro.
Ferramenta de Trabalho: Delphi 7
Componentes: IBDataBase, IBTransaction, IBDataSet
Banco de Dados: FireBird 1.0
Agradeco a ajuda de todos.
Rodrigo Ferreira
Curtir tópico
+ 0Posts
26/08/2003
Machado
procedure tform1.formrefresh(sender:tobject);
begin
table1.refresh;
...
tablen.refresh;
end;
b) no evento onactive do formulario acrescente a linha
application.onactive := formrefresh;
c) No evento onshow fo formulario acrescente a linha
formrefresh(sender);
d) no evento onafterpost de cada tabela acrescente as linhas
table.flushbuffers;
formrefresh(self);
ha mais uma coisa coloque no evento ofterpost a seguinte linha
dbisavechanges(table.handle);
ai testa ai, deve funcionar. depois de testar fala aqui pra nós de deu certo falow.
Gostei + 0
26/08/2003
Rodrigo Ferreira
Utilizo:
Ferramenta de Trabalho: Delphi 7
Componentes: IBDataBase, IBTransaction, IBDataSet
Banco de Dados: FireBird 1.0
Gostei + 0
26/08/2003
Afarias
|no banco de dados para que se um outro terminal tentar cadastrar
|receba uma mensagem.
Deixe o terminal tentar gravar... se ele tentar registrar algo contra as regras do banco (um PK por exemplo) o banco não deixa e gera um erro, vc trata esse erro e mostra uma mensagem sua para o usuário.
|1º) Qual processo de gravação deve utilizar Commit ou
|CommitRetaining?
Use CommitRetaining apenas quando precisa manter a transação aberta para mostrar algo num grid ou coisa assim. Más -- Procure sempre q possível usar um COMMIT (por exemplo, quando o formulário for fechado ou sei lá)
|2º) Se eu utilizar o Commit, a rede ficara lenda?
NÃO. más -- se *não* usar, com o tempo o sistema pode ficar lento
|3º) Ou se eu utilizar o CommitRetaining a rede ficara lenda?
SIM. se vc usar sempre commitretaining e nunca usar commits é possível q sua aplicação fique lenta com o tempo.
|Por favor, passem um exemplo de como eu devo gravar os registro e
|como eu faço para que os outros terminais fiquem atualizados a sim que
|eu terminal gravar um registro.
Não atualize os terminais -- ISSO DEIXA O SISTEMA LENTO -- quem tem que estar atualizado é o servidor. Se altem tentar gravar algo q não pode o banco não deixa e da erro, trate o erro.
Com relação aos comentário do Machado, acho q ele não reparou q vc usa Interbase (achou q usa Paradox) -- o código sugerido é totalmente contra sistemas C/S
T+
Gostei + 0
26/08/2003
Jeová Soares
Antes de gravar o registro mando o sistema buscar o número do último registro cadastrado, aí então, somo no mesmo + 1, ou seja, no momento do cadastramento não informo o número, deixo q o sistema busque o próximo número como num autoincremento.
Gostei + 0
26/08/2003
Rodrigo Ferreira
Gostei + 0
26/08/2003
Machado
Utilizo:
Ferramenta de Trabalho: Delphi 7
Componentes: IBDataBase, IBTransaction, IBDataSet
Banco de Dados: FireBird 1.0[/quote:9f85bc78c1]
Desculpe pelo erro, não havia reparo que vc não utiliza paradox.
t+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)