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