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:
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
Curtir tópico
+ 0
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...
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+
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
Clique aqui para fazer login e interagir na Comunidade :)