[firebase-br] Erro TransactionID invalido!!
Renato Miranda
renato.smiranda em gmail.com
Seg Abr 2 16:36:46 -03 2007
Tudo bem, Pineli ?
Acho que o Kleber atentou para o detalhe mais importante: o "embedded" é
monousuário. Como você está conseguindo receber todas essas transações
dentro de uma mesma aplicação num mesmo micro e elas não são seqüenciais ?
Abraços,
RMiranda
Em 02/04/07, Kleber Caneva <kdcc em terra.com.br> escreveu:
>
> Será que por ele gerar uam thread para cada conexão, ele não está tentando
> fazer conexão simultanea ao FB ?
>
> Lembre-se que o FB Embarcado, não permite multiplas conexões.
>
> []´s
>
> Kléber Caneva
>
>
> ----- Original Message -----
> From: "Pineli" <carlospineli em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Friday, March 30, 2007 3:24 PM
> Subject: Re: [firebase-br] Erro TransactionID invalido!!
>
>
> putz galera...nada a ver essa discucao da porra...
>
> ja fiz de todo jeito.... é muito rapido...nao da conta de gravar no db
>
> Em 30/03/07, Kleber Caneva<kdcc em terra.com.br> escreveu:
> > A linha
> > TransacaoSQL.TransactionID := IDTransacao; //1;
> > contradiz sua informação que " D transacao estou gerando o valor
> > aleatoriamente"
> >
> > Esse codigo sugere que você está usando Selec MAX
> > DM.SQLUltimoCod.Close ;
> > DM.SQLUltimoCod.Open ;
> > codigonovo := inttostr( DM.SQLUltimoCod.Fields[0].AsInteger + 1);
> >
> > Substitua por GENERATOR, eles existem pra isso.
> >
> > []´s
> >
> > Kléber Caneva
> >
> >
> > ----- Original Message -----
> > From: "Pineli" <carlospineli em gmail.com>
> > To: <lista em firebase.com.br>; <pineli em ecp.com.br>
> > Sent: Friday, March 30, 2007 8:34 AM
> > Subject: [firebase-br] Erro TransactionID invalido!!
> >
> >
> > Ola para todos....
> > estou fazendo uma aplicacao com firebird 1.5 embarcado + delphi 7.
> > recebo centenas de eventos através de 1 sockets e preciso gravar tudo
> > no banco...
> > só que tudo acontece muito rápido e esta dando erro após a quinta
> > conexao. Qual uma maneira segura de gravar tudo com segurança... estou
> > fazendo assim:
> >
> > tem um data modulo com a conexao
> > e cada conexao do socket cria uma thread com o codigo abaixo. Criando
> > um query tbm para cada.
> > O ID transacao estou gerando o valor aleatoriamente para tentar nao
> > repetir
> > (...)
> >
> > DM.SQLUltimoCod.Close ;
> > DM.SQLUltimoCod.Open ;
> > codigonovo := inttostr( DM.SQLUltimoCod.Fields[0].AsInteger + 1);
> >
> > //gravando informacao no banco de dados
> >
> > SQLQueryThread.Close ; // Não sei se já tava aberta, então fecho
> > SQLQueryThread.SQL.Clear ;
> > SQLQueryThread.SQL.Add('INSERT INTO EVENTOS(ID_EVENTOS, EVENTO, IP) ');
> > SQLQueryThread.SQL.Add
> ('VALUES('+CODIGONOVO+','+#39+COPY(RecText,1,4)+#39+','+#39+ClientSocket.RemoteAddress+#39+')')
> > ;
> >
> > Gravou := False; // Controla se conseguiu ou não gravar
> > for i := 1 to 100 do // Tentativa de gravação por 100 vezes
> > begin
> > try
> > TransacaoSQL.TransactionID := IDTransacao; //1;
> > TransacaoSQL.IsolationLevel := xilREPEATABLEREAD ;
> > DM.SQLConexao.StartTransaction( TransacaoSQL ) ;
> > SQLQueryThread.ExecSQL( True ) ;
> > DM.SQLConexao.Commit( TransacaoSQL ) ; // Efetiva gravação
> > Gravou := True; // Se chegou aqui é pq conseguiu gravar
> > except
> > on e:Exception do
> > begin
> > DM.SQLConexao.Rollback( TransacaoSQL ); // Desfaz alteraes
> > Erro := e.Message;
> > Gravou := False ; // Faiô, tio!
> > end;
> > end;
> > if Gravou then // Conseguiu gravar, iupiiiii!
> > break // Sai do 'For'
> > else
> > Sleep(1000); // Espera 1 segundo antes de ir p/ prox. passo do
> > 'For'
> > end;
> > if not Gravou then // Faiô mesmo, depois de 100 tentativas :-(
> > begin
> > ShowMessage(Erro); // Mostra mensagem de erro
> > (....)
> >
> > quando ocorre o erro ele esgora as 100 tentativas....
> > Como fazer isso de uma forma mais segura??????
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
> >
> > Esta mensagem foi verificada pelo E-mail Protegido Terra.
> > Scan engine: McAfee VirusScan / Atualizado em 29/03/2007 / Versão:
> > 5.1.00/4995
> > Proteja o seu e-mail Terra: http://mail.terra.com.br/
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
> >
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 30/03/2007 / Versão:
> 5.1.00/4996
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
--
Abraços,
RMiranda
Mais detalhes sobre a lista de discussão lista