GARANTIR DESCONTO

Fórum Aplicação Multiusuário #198027

30/11/2003

0

Pessoal boa Tarde;

Já coloquei esta pergunta aqui, obtive uma resposta mas gostaria de saber se tem outra forma de fazer minha pergunta segue abaixo.

Estou desenvolvendo uma pequena aplicação multiusuário e ao efetuar os testes finais me deparei com um problema que não sei como resolver acontece o seguinte:
tenho a tabela cliente que a chave primária é o IDCliente, quando entro no cadastro de cliente dou um Click no botão NOVO neste momento dou um Insert na Qry_Cliente e passo a preencher o formulário Cliente quando Clico em salvar neste momento eu executo uma query que dá um select Max na tabela cliente e soma mais 1 Ok esta rotina em mono usuário funciona perfeitamente, porém se colocar dois usuários acessando o mesmo banco e a tabela estiver com status de insert ao mesmo tempo por dois usuários quando o segundo usuário for salvar esta dando violação de chave primária como faço para resolver isso, esta é a minha primeira aplicação multi usuário, estou usando delphi 5 com Firebird.


Ari

Ari

Responder

Posts

30/11/2003

Salomao

Caro amigo!
estou tendo um problema parecido com o seu, tenho uma aplicação feita em d6 e banco firebird 1.5, utilizo IBdataset para fazer as alterações nas tabelas e uma função select max para gerar o proximo codigo, no evento o post do Ibdataset, o deu para perceber é que quando o Ibdataset está em modo de inserção ou edição outro usuário não pode fazer alterações enquanto o que primeiro abriu a tabela não termine.
Também já utilizei meu sistema com o Dbexpress e funciona perfeitamente.
Caso consiga fazer funcionar, avise-me!


Responder

Gostei + 0

30/11/2003

Orc

olha vc pode tentar fazer assim ó logo que vc der um insert na tabela vc faz assim

insert na tabela > poe o campo codigo > da post no codigo > da um edit na tabela pra continuar a inserir o resto dos dados
( eu ja passei por isso que vc esta pasando hj e recomendo que vc fazça aquele esquema que te pasei anteriormente pq esse de agora não é eficiente ainda mais funciona recomendo vc usar mais o banco de dados e menos o delphi assim vc compacta o codigo diminui o tratamento do sistema feito no delphi e transfere as operações todas para o banco de dados( isso gera mais eficiencia e nao causa perda de dados )

obs >>> ibtransaction.commit;
pra fazer a atualização da transação no banco de dados
isso atualiza seus dados inseridos na hora eles nao ficam armazenados na sua maquina para de pois irem para o servidor com esse codigo a transação é fechada na hora


espero ter ajudado mais dica mesmo utiliza o BD para o desenvolvimento das transações seu sistema fica enxuto leve e mais seguro


Responder

Gostei + 0

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

Aceitar