Fórum Atualização de registro por vários usuários. #45176

25/06/2004

0

Olá pessoal,

Tenho que desenvolver um sistema para vendas de produtos odontológicos em congressos e gostaria de faze-lo utilizando Interbase ou Firebird, mas estou com dúvidas sobre o procedimento de acesso e atualização de registros com vários usuários ao mesmo tempo. Por Exemplo:

Num congresso vários vendedores estarão gerando pedidos sobre um determinado produto ao mesmo tempo. Minha dúvida é; como proceder para que o saldo disponível mostrado pelo sistema esteja sempre atualizado corretamente ? No Clipper, procedia assim para baixar o estoque: O sistema trava o registro, baixa o estoque, grava e libera o registro, deste modo o outro usuário terá sempre o disponível corretamente. Como proceder com IB e FB se eles não travam o registro ?
Existe uma maneira melhor para realizar este processo ? Gostaria de uma dica de como manter a informação atualizada com vários vendedores vendendo o mesmo produto ao mesmo tempo.



Desde já agradeço muito.
:cry:


M_gab

M_gab

Responder

Posts

27/06/2004

Bon Jovi

1º forma:

Usando ´FOR UPDATE´ no SELECT:

SELECT CAMPOA
FROM TABELA
WHERE CAMPOB = 1
FOR UPDATE

Ao dar um DataSet.Edit a linha ficará travada, até q se dê um Post pro servidor.


2º forma, via ADO:

ADODataSet1.Close;
ADODataSet1.CursorLocation := clUseServer;
ADODataSet1.LockType := ltPessimistic;
ADODataSet1.CommandText := ´SELECT...´;
ADODataSet1.Open;
ADODataSet1.Edit; //Trava a linha, até que se dê o Post


Só nunca testei no Interbase/Firebird, mas nos outros bancos funcionam. Mais essa funcionalidade não funcionar no Firebird seria demais...


Responder

Gostei + 0

28/06/2004

Afarias

|Usando ´FOR UPDATE´ no SELECT:

Apenas para Firebird 1.5


|ADODataSet1.Open;
|ADODataSet1.Edit; //Trava a linha, até que se dê o Post

Na realidade é necessário simular uma alteração, e o registro só fica travado após o POST. Ficando travado até o COMMIT ou ROLLBACK


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar