Erro de transações concorrentes
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.
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
Curtidas 0
Respostas
Marcus.magalhaes
05/08/2004
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,
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,
GOSTEI 0
Fernanda.sique
05/08/2004
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?
Em todas as rotinas eu coloco StartTransaction e no final Commit.
Será que tem alguma configuração para fazer nos objetos?
GOSTEI 0
Marcus.magalhaes
05/08/2004
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,
infelizmente em linguagem de programação eu não posso te ajudar pq não sei, conheço mais banco de dados.
Att,
GOSTEI 0
Felipe_cduarte
05/08/2004
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
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
GOSTEI 0
Fernanda.sique
05/08/2004
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?
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?
GOSTEI 0
Felipe_cduarte
05/08/2004
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 ??
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 ??
GOSTEI 0
Daniela
05/08/2004
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.
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.
GOSTEI 0
Fernanda.sique
05/08/2004
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.
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.
GOSTEI 0
Felipe_cduarte
05/08/2004
Fernanda,
manda um script das tabelas pra gente poder dar um olhada
[]´s
manda um script das tabelas pra gente poder dar um olhada
[]´s
GOSTEI 0
Daniela
05/08/2004
Não entendi então o seu problema...
GOSTEI 0