[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