[firebase-br] Erro Estranho: Execute Statement

Paulo Portella pportellaa.firebase em gmail.com
Dom Jan 16 20:59:17 -03 2011


Boas,
vou dar-lhe algumas "idéias" para você analisar melhor.
1o.) IBO se comparado ao DBX deixa um pouco a desejar.( :S ) e por isso eu
não o uso em meus sistemas, mas alguns que dou manutenção eu faço as
mudanças sem ônus... então, é contigo...
2o.) você pode usar comandos "diretos" sem o uso de outros componentes que
não sejam o compontente Database, exemplo utilizando o SqlConnection do DBX:

sqlConn.ExecuteDirect('DELETE FROM NFE WHERE (ID =
'+QuotedStr(edtCodigo.text)+' AND
EMPRESA_ID='+QuotedStr(edtNumeroEmpresa.Text)+')');

procure sempre utilizar a função QuotedStr, (e se acostume a usá-lo)...
melhor do que usar ''' ''' (aspas duplas), pode-se passar despercebido caso
não use corretamente.

3o.) vamos à explicação da mensagem de erro:
Invalid Transaction handle (expecting explicit transaction start)",

Invalid Transaction Handle -> "Transação" Invalida, porque?

expecting explicit transaction start -> porque a transação não foi
"startada", ou seja, você não "iniciou e finalizou" uma transação, exemplo
em Delphi:

var
  TD : TTransactionDesc;
begin

    TD.TransactionID:=1;
    td.IsolationLevel:=xilREADCOMMITTED;
    sqlConn.StartTransaction(TD);
    try
        sqlConn.ExecuteDirect('comandos sql 1');
       sqlConn.ExecuteDirect('comandos sql 2');
       sqlConn.ExecuteDirect('comandos sql 3');

       sqlconn.Commit(TD);
    except
       sqlconn.RollBack(TD);
    end;
end;


4o.) já o código que você apresentou, (335544569), o que eu encontrei foi
uma explicação que não sei se te ajudará, mas tente ver ai.:
http://www.firebirdfaq.org/faq261/

Eu acho que tenho uma base em casa com a relação de códigos, se eu tiver,
postarei aqui pra você (e demais).

Qualquer coisa nos grite.





Em 16 de janeiro de 2011 12:42, Salatiel da Rocha Venancio <
salatielvenancio em ig.com.br> escreveu:

> Bom dia pessoal.
>
> Estou criando algumas stored procedures para serem executadas a partir do
> BD. E comecei a usar o comando execute statement, isso para "diminiuir" os
> códigos. Mas percebi umas coisas estranhas. Uso Delphi 7, Firebird 2.5, IBO
> 4.8.6.
>
> Veja o seguinte...
>
> Quando eu executo esse bloco de comandos por mais de uma vez,
>
> varSQL = 'DELETE FROM TABELA WHERE EMPRESA = :II_EMPRESA AND STATUS =
> ''N''';
> EXECUTE STATEMENT (varSQL) (II_EMPRESA := :I_EMPRESA);
>
> é retornado o seguinte erro: "Invalid Transaction handle (expecting
> explicit
> transaction start)", além desse erro, aparecem outros códigos de erro como
> 335544569. Já procurei na net, tentei resolver mas nada.
>
> PORÉM, se eu usar o comando "in natura" é executado perfeitamente quantas
> vezes forem necessárias, sem erro algum.
>
> DELETE FROM TABELA
> WHERE EMPRESA = :I_EMPRESA AND STATUS = 'N';
>
> Por conhecer pouco FIREBIRD, talvez eu esteja esquecendo alguma coisa, ou
> iniciar transacao, coisa e tal.
>
> Desde já agradeço.
>
> Obrigado.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista