[firebase-br] Para Pha Dúvida: Dois usuários alterando ao mesmo tempo

Pha lista em pha.com.br
Qui Set 29 08:41:03 -03 2005


Em tabelas simples como esta eu nem me procupo com isso, e muito dificil 2
usarios darem manutenção em tabelas desse tipo.

Neste caso como a tabela tem pouco campo voce pode simplesmente alterar o
comando de update:

UPDATE UF
UF = :UF,
NOME = :NOME,
PAIS = :PAIS
WHERE
UF = :OLD_UF and
NOME = :OLD_NOME and
PAIS = :OLD_PAIS

Dessa forma o registro nao sera encontrado se alguem alterou.

Não sei se o MDO gera alguma exceção, quando nao encotra nenhum registro,
se ele nao gerar voce tera que testar se algum registro foi alterado, não
sei te dizer qual seria o metodo no MDO, qualquer coisa pergunte na lista
de suporte do mesmo.


Quanto ao campo contador, para Cadastros mais complexos (Pedidos, Nota
Fiscais, Mocimento de Estoque).

Voce inclui um campo que sera o contador das atualizacoes efetuadas, sepre
que voce alterar o registro, voce deve incrementar este campos, depois e
so utiliza-lo na clausula where do update.

UPDATE UF
UF = :UF,
NOME = :NOME,
PAIS = :PAIS
ALTERACOES = :ALTERACOES
WHERE
UF = :OLD_UF and
ALTERACOES = :OLD_ALTERACOES

Ok.?

Outra coisa, eu não executaria um Refresh se ocorre-se algum erro, isso
pode gerar outro erro, dependendo do erro anterior.

Eu faria um RefheshRecord no evento before edit, ou colocaria um botaõ
para o usuario fazer o Refresh quando necessario.

Paulo Henrique Albanez
VirtualSystem Informática Ltda
Nova Odessa / SP - Brazil
Membro do TeamFB (FireBase)

> Pha desculpe a minha leiguice mais não consegui sair da abstração em que
> entendi a sua resposta para a parte concreta da coisa.
>
> tabela UF
>
> UF primary
> Nome
> Pais
>
>
> vamos por partes:
> uso:
> - Transaction read_commited
> - query: select * from UF
> - UpdateSql: no caso de atulalização é: UPDATE UF
>                                                           SET
>                                                              UF = :UF,
>                                                              NOME = :NOME,
>                                                              PAIS = :PAIS
>                                                            WHERE
>                                                              UF = :OLD_UF
>   (entraria
> aqui o
>                                                                          campo
> contado?
> como?)
>
> - componentes ligados a dados;
> -  abri duas instancias do aplicativo
> - selecionei o mesmo registro nos dois
> - alterei algo no primeiro e salvei (postei e comitei)
> - no segunundo alterei outra coisa e vou salvar (postar e comitar) e ai é
> que não entendi o que fazer ( desculpe tantos detalhes mais novato é assim
> mesmo)
>
> no momento o meu botao salvar está assim:
>
> try
>    mdoQuery.Post;
>    mdoTransaction.CommitRetaining;
> except
>    mdoTransaction.RollbackRetaining;
>    mdoQuery.Refresh;
>    raise;
>  end;
>
> Vc pode ser mais detalhado por gentileza???
>
> Obrigado por sua atençao.
>
> Sauthier
> Águia Software Ltda.
>
>
> Pha <lista em pha.com.br> escreveu:
> A melhor forma e criar uma campo que sera utilizado com contado para as
> atualizações e usar este campo também na chave (where), se quando voce
> executar o update nenhum registro for alterado, alguem alterou ou apagou o
> registro corrente, ai e só exibir um aviso para o usuario.
>
> Paulo Henrique Albanez
> VirtualSystem Informática Ltda
> Nova Odessa / SP - Brazil
> Membro do TeamFB (FireBase)
>
>> Olá
>>
>> - Dois usuários acessam um depois o outro o mesmo registro.
>> - O primeiro altera o campo nome e commita
>> - O segundo altera o campo nome com outro valor, mas o certo é o do
>> primeiro, e commita.
>>
>> Está funcionando sem erros de bloqueio com transação read commited.
>>
>> Como mostrar uma mensagem para o segundo usuário de que o registro em
>> questão já foi alterado e na sequencia dar um refresh???
>>
>> Obrigado.
>>
>>
>> ---------------------------------
>> Novo Yahoo! Messenger com voz: ligações, Yahoo! Avatars, novos emoticons
>> e muito mais. Instale agora!
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ---------------------------------
>  Novo Yahoo! Messenger com voz: ligações, Yahoo! Avatars, novos emoticons
> e muito mais. Instale agora!
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>






Mais detalhes sobre a lista de discussão lista