[firebase-br] Erro TransactionID invalido!!

Paulo Portella pportellaa em hotmail.com
Sex Mar 30 09:10:22 -03 2007


Carlos,
essa mensagem tah mais pra programacao do que pra BD, pra nao prolonga mais o assunto, 
acessa o seguitne endereco
trollnet.no-ip.org  com a vtnc.linguagens.Delphi
 
posta sua mensagem lah que acompanharei e ajudarei.
um abraçuuu
Pportella.



> Date: Fri, 30 Mar 2007 08:34:14 -0300> From: carlospineli em gmail.com> To: lista em firebase.com.br; pineli em ecp.com.br> 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
_________________________________________________________________
O Windows Live Spaces já chegou! É fácil criar o seu próprio Web site pessoal.
http://spaces.live.com/signup.aspx


Mais detalhes sobre a lista de discussão lista