Erro de transações concorrentes

05/08/2004

0

Bom dia,


Não sei mais o que fazer, estou com um problema enorme no cadastro de vendas. Quando tem duas ou mais máquinas com a mesma tela aberta ao gravar dá o seguinte erro: ´COULDN´T PERFORM THE EDIT BECAUSE ANOTHER USER CHANGED THE RECORD.´

Está sendo muito problemático, dá dando este erro sem parar. Preceiso muito de ajuda.
:cry:

Abraços,
Fernanda.


Fernanda.sique

Fernanda.sique

Responder

Posts

05/08/2004

Marcus.magalhaes

Bom dia Fernanda, td bem?

Vc pode usar transações para resolver seu problema. vc abre a transação, garantindo assim q só 1 usuário esteja no mesmo registro e depois q comitar o registro estará liberado. Porém vc deve fazer um controle para evitar q o usuário abra a janela e carregue um registro e vá almoçar, deixando o mesmo locado.

Como vc está montando seu processo?

Att,


Responder

05/08/2004

Fernanda.sique

Muito obrigada pela atenção.

Em todas as rotinas eu coloco StartTransaction e no final Commit.


Será que tem alguma configuração para fazer nos objetos?


Responder

05/08/2004

Marcus.magalhaes

Oi Fernanda,

infelizmente em linguagem de programação eu não posso te ajudar pq não sei, conheço mais banco de dados.

Att,


Responder

05/08/2004

Felipe_cduarte

Fala Fernanda blz ???

Você está usando o delphi ??? se for eu posso até ajudar ... Uns dos motivos pode ser que dois usuarios estejam abrindo o mesmo registro do BD ... explique melhor q eu tento ajudar


Responder

05/08/2004

Fernanda.sique

Ai Felipe estou desesperada, nunca vi isto antes. Vou explicar:
Quando o usuário clica no botão incluir em dou um insert no banco e já imediatamente gravo, pronto a venda está gravada. Em seguida para o usuário continuar fazendo a venda eu dou um table.Edit e assim vai.
Na corpo da venda tem os itens que é insert em outra tabela. No final quando o usuário clicar no botão gravar a venda eu efetuo table.post e em segui executo um função que dá baixa no estoque e logo em seguida crio automaticamente uma ordem de serviço para entrega.
Estou usando o componente database, table, query da paleta BDE do delphi 7.
Vc sabe o que pode ser?


Responder

06/08/2004

Felipe_cduarte

Oi Fernanda tudo bom ?

Fica trankila, aos poucos a gente vai esclarecendo e chegamos lá ! Seguinte, pelo o que está aparecendo, na hora deste table.edit , dois usuários devem estar utilizam um mesmo produto por exemplo.. Se você der mais um pouco de detalhes fica mais facil de ver o porquê. Mas por outro lado acho que o que está teoricamente errado é o conceito... Você já experimentou utilizar stored procedures e o clientdataset ? Com o clientdataset voce poderá trazer as informações pra cada usuário , sem mexer fisicamente na tabela do BD ( evitando o comando edit ). E a SP você utilizaria no final de tudo , efetuando uma unica instrução de gravação .. Bom espero ter ajudado ... qq coisa envie ou post.

PS: por falar nisso qual BD vc usa ??


Responder

06/08/2004

Daniela

Ja tive esse problema porém no VB.

Eu resolvi assim:

O primeiro usuario esta editando o registro. Se um outro usuario tentar editar esse mesmo registro ao mesmo tempo o sistema vai gerar um erro entao eu fiz um tratamento de erro e toda vez que der esse erro o sistema mostra uma mensagem dizendo que tem alguem alterando essa informacao.

Talves tambem seria bom vc colocar um timer para limitar o tempo maximo de venda senao a pessoa pode ficar com o registro em uso eternamente.

Espero ter ajudado.


Responder

06/08/2004

Fernanda.sique

Oi Daniela,

Obrigada pela força.

Minha dúvida e que acontece quando as vendedoras estão incluindo vendas novas, venda que não tem nada a ver uma com a outra - salvo que são gravadas na mesma tabela.

Muito estranho.


Responder

06/08/2004

Felipe_cduarte

Fernanda,

manda um script das tabelas pra gente poder dar um olhada

[]´s


Responder

06/08/2004

Daniela

Não entendi então o seu problema...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar