Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: Take It Easy - Aprile 19, 2012, 05:57:12 pm

Titolo: Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Take It Easy - Aprile 19, 2012, 05:57:12 pm
Salve ragazzi.. vi ringrazio in anticipo per l'aiuto che mi darete!! ;)

Ho realizzato una semplice applicazione di test, più precisamente ho provato ad
interagire con una tabella su un db MySQL, e tutto funziona correttamente, se non che non capisco perchè alla chiusura della form esce questo errore:

"SQLTransaction: Operation cannot be performed on an active transaction"

Il  fatto è che l'errore viene visualizzato anche se eseguo solamente una SELECT, appunto alla chiusura della form.

Perchè quest'errore? Ometto qualche passaggio per la chiusura della connessione?
Titolo: Re:Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Fabio - Aprile 19, 2012, 08:19:26 pm
Fai un passo-passo e dicci/posta a che riga o a che set di istruzioni si blocca.
Così senza indicazioni è un po' dura aiutarti a mio avviso.

Ciao.
Titolo: Re:Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Stilgar - Aprile 19, 2012, 09:43:23 pm
Ciao Easy,
 in effetti come segnala Fabio, le ipotesi possono essere molte sulla causa.
Se esegui una query in chiusura e la transazione si incastra non mi sembra una cosa molto strana.
Hai provato a non chiudere la transazione prima che venga eseguita la query?
In effetti l'errore potrebbe essere una stringa messa dentro il componente transazione, non un errore si MySql ...
Codice: [Seleziona]
Procedure TDBTransaction.CheckInActive;
begin
  If FActive Then
    DatabaseError(STransActive,Self);
end;
Questa è la riga che scatena l'eccezione.
Il controllo sulla transazione viene fatto parecchie volte ...

Magari è proprio la query in chiusura che ti fa saltare il banco :D
Titolo: Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Take It Easy - Aprile 20, 2012, 07:49:08 am
Non ho specificato il "momento" in cui si verifica l'errore perché questo accade dopo la chiusura dell'intero applicativo!!  :-[

..e solo in fase di sviluppo, cioè lanciando il RUN dall'IDE di Lazarus.. se chiuso l'IDE lancio il ".EXE" questo funziona correttamente.

Devo aggiungere che è la prima volta che uso il componente TMySQL50Connection, combinato con TSQLQuery e TSQLTransaction.. fino ad ora avevo utilizzato/lavorato con il connettore per SQLite (trovandomi benissimo!)

Heeeeeelp!!!  :'(
Titolo: Re:Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Stilgar - Aprile 20, 2012, 09:41:36 am
Prova a pubblicare sul forum i sorgenti.
Con il lanternino è difficile aiutarti ...
Titolo: Re:Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: nomorelogic - Aprile 20, 2012, 09:46:47 am
ci sono diverse cose che non si possono fare a transazione aperta

una prova che puoi fare è di mettere un breakpoint in ogni evento che ha a che fare con connessione, transazione e query (spero tu non ne abbia molti).
Sicuramente alla chiusura viene eseguito qualcosa che non va, così almeno riusciamo a capire cosa.

In alternativa, Stilgar ha ragione così è complicato, potresti postare i sorgenti
Titolo: Re:Errore in chiusura: Operation cannot be performed on an active transaction
Inserito da: Take It Easy - Aprile 20, 2012, 10:13:42 am
..non perdete le nuove puntate di "Mistero"  8)

Ho appena provato a rilanciare l'applicativo per individuare il momento dell'errore e UDITE UDITE!! è tornato tutto alla normalità!!!  :o

senza nessuna modifica al codice di ieri sera.. semplicemente spegnendo e riavviando il PC!! Mistero della fede..

Come direbbe l'agente Wubber "tutto è bene quel che finisce bene"

Grazie a tutti per l'attenzione prestatami.. anche se il modo in cui si è risolta la cosa non mi ha convinto per niente!!  ???