RES: [firebase-br] Transações Duplicadas
Luiz Carlos
luiz em rolamentosradial.com.br
Qua Dez 28 08:17:30 -03 2005
Adilson B. Cápua Jr. wrote:
>Pois é, Cristiano, creio que o problema é o Identificador da transação!
>Imaginei isso em primeira instância, mas queria ter certeza... Veja bem,
>dentro do bloco try...except chamo algumas outras procedures para realizar
>tarefas secundárias, como imprimir um certo "comprovante" do processo,
>etc...
>Mas acho que se houvesse algum problema ali, o except pegaria... Imagino
>que seja mesmo isso!!! Vou criar um identificador único para cada estação
>e ver se resolve o problema... Seria alterar essa linha abaixo?
>
> Efetua_Processo.TransactionID := 1;
>
>E trocar esse 1 por um variável de controle da máquina cliente???
>
>Grato pela ajuda!!!
>
>
>+---------------------------------------+
> Adilson Bragança Cápua Jr.
> Linhares - ES Brasil
>
> mailto : juniorcapua em yahoo.com.br
> juniorcapua em gmail.com
> Mobile : abcjr em oi.com.br
> Messenger : juniorcapua em hotmail.com
> Skype : dellas_capua
> Blogger : www.dellas.rg3.net
>+---------------------------------------+
> Save a tree! Send an e-mail!
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Cristiano Testaí
>Enviada em: terça-feira, 27 de dezembro de 2005 20:08
>Para: lista em firebase.com.br
>Assunto: Re: [firebase-br] Transações Duplicadas
>
>Vc já depurou o programa e confirmou que o erro acontece dentro do bloco
>try...except? Se sim, deveria entrar no bloco except, ao menos que vc
>execute determinados métodos que mesmo com try...except nao sao tratados,
>como um ApplyUpdates do ClientDataSet, onde vc precisa manipular o evento
>OnReconcilerError.
>De acordo com o erro parece que esta sendo violado o identificador da
>transação, ou seja, parece que esta sendo startada duas transações com o
>mesmo ID(Efetua_Processo.TransactionID), o que não é permitido.
>
>Espero ter ajudado,
>[]´s
>
>Cristiano Testaí
>
>
>"Adilson B. Cápua Jr." <juniorcapua em yahoo.com.br> wrote in message
>news:25721.3585115553$1135719611 em news.gmane.org...
>PessoALL,
>
> Tenho um programa já funcionando há mais de 1 ano!
>O mesmo foi desenvolvido em Delphi 7 + DBExpress + Firebird 1.5! Bom,
>recentemente um usuário numa rede com 15 máquinas me reportou que direto
>quando vai fazer um certo processo recebe uma mensagem de erro informando
>que há uma duplicação de transação...
> Bom, como já tinha visto em algumas mensagens, não é uma boa técnica de
>programação você deixar uma transação aberta durante muito tempo, portanto,
>deixo o usuário fazer tudo que precisa e ao Confirmar o processo,
>automaticamente a transação é aberta, é efetuado todo o processo e, se tudo
>correu bem é dado o commit, caso contrário, entra em ação o tal do RollBack.
>Segue abaixo mais ou menos como faço:
>
>procedure TForm_Processos.Conclusao;
>var
> Efetua_Processo: Ttransactiondesc;
>begin
> Processo_Sucesso := False;
>
> Efetua_Processo.TransactionID := 1;
> Efetua_Processo.IsolationLevel := xilReadCommitted;
>
> DM.Conexao.StartTransaction(Efetua_Processo);
>
> try
> Processo_Sucesso := True;
>
> // Meu código
>
> DM.Conexao.Commit(Efetua_Processo);
> except
> MessageDlg('Houve um problema ao efetuar processo!' + #13 +
> 'Informe erro #36 ao nosso suporte!', mtError, [mbOk], 0);
> Processo_Sucesso := False;
> DM.Conexao.Rollback(Efetua_Processo);
> end;
>
>
>Minha dúvida é a seguinte: será que pode estar havendo algum conflito com o
>nome das transações? Tipo assim, dois usuários ao mesmo tempo iniciarem o
>processo e o banco se perder e reportar esse erro... Antes de criar uma
>possível solução envolvendo uma "identificação de estação" resolvi postar
>esta mensagem aqui para ver se é isso mesmo... Devo lembrar que essas
>transações são iniciadas, processadas e comitadas instantaneamente, ou seja,
>tudo é feito "rapidinho"... Nenhuma delas fica aberta por muito tempo... É
>só o tempo do próprio processamento (que por usa vez é muito rápido
>também)!!!
>O estranho é que o erro não é pego pelo except, ou seja, nosso usuário não
>informou para nós o erro número 36 como pede a mensagem e sim informou uma
>mensagem em "ingrês" [não sei muito bem como dizer, vou ler o que está
>escrito aqui! :) ] dizendo que houve uma duplicação de transação!
>
>Qualquer ajuda é bem vinda...
>
>
>+---------------------------------------+
> Adilson Bragança Cápua Jr.
> Linhares - ES Brasil
>
> mailto : juniorcapua em yahoo.com.br
> juniorcapua em gmail.com
> Mobile : abcjr em oi.com.br
> Messenger : juniorcapua em hotmail.com
> Skype : dellas_capua
> Blogger : www.dellas.rg3.net
>+---------------------------------------+
> Save a tree! Send an e-mail!
>
>
>
>
>
>
>_______________________________________________________
>Yahoo! doce lar. Faça do Yahoo! sua homepage.
>http://br.yahoo.com/homepageset.html
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
>sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
>
>
>
>
>
>
>_______________________________________________________
>Yahoo! doce lar. Faça do Yahoo! sua homepage.
>http://br.yahoo.com/homepageset.html
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
>
Eu costumo dar uma identificação aleatória para cada transação, por
exemplo atribuo ao TransactionID o valor da função gettickcount da Unit
Windows!
Abrasço.
--
------------------------------------------------------------------------
Luiz Carlos da Silva Soares
Analista de Sistemas
Importadora de Rolamentos Radial Ltda.
[11] 3346-3731
www.rolamentosradial.com.br <http://www.rolamentosradial.com.br/>
luiz em rolamentosradial.com.br <mailto:luiz em rolamentosradial.com.br>
Mais detalhes sobre a lista de discussão lista