![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: BDE
Zur Zeit wird keine Benutzertransaktion durchgeführt
Guten Tag,
In einem unserer alten Delphi 4 Projekte bekommen wir manchmal folgende Fehlermeldung: Zur Zeit wird keine Benutzertransaktion durchgeführt. Wieso kommt diese Fehlermeldung, obwohl vor dem Commit oder Rollback auf jeden Fall eine Transaktion gestartet wurde? Hier der Codeausschnitt:
Delphi-Quellcode:
Function TOptiThread.AddNewInputdatenNewLog(Ex_DrehWinkel: Integer;
Var Ex_LaufIdx: Integer): Boolean; Begin Result := False; Ex_LaufIdx := 0; If Not Assigned(Cl_StoredProc33) Then Exit; If DB.InTransaction = False Then DB.StartTransaction; Try With Cl_StoredProc33 Do Begin Cl_DatHelp.R_Data1 := Cl_OneOptidaten.Teleg3ALaufIdx; Cl_DatHelp.R_Data2 := Cl_OneOptidaten.IstLaufIdx; Cl_DatHelp.R_Data3 := Ex_DrehWinkel; Params[0].Value := Cl_OneOptidaten.Teleg3ALaufIdx; Params[1].Value := Cl_OneOptidaten.IstLaufIdx; Params[2].Value := Ex_DrehWinkel; ExecProc; DB.Commit; Ex_LaufIdx := Params[3].Value; Result := True; End; Except BDEFehlerAuswertung(0,'AddNewInputdatenNewLog',Exception(ExceptObject),True); DB.RollBack; End; End; |
Re: Zur Zeit wird keine Benutzertransaktion durchgeführt
Hallo!
Eine Möglichkeit wäre z.B., dass der Commit in Ordnung war, aber Params[3].Value eine Exception liefert wie 'Index ausserhalb des gültigen Bereiches', kein Integer etc. Dann würde ein Rollback ausgeführt, aber die Transaktion ist ja schon beendet. Müssten man aber in der Routine BDEFehlerAuswertung sehen können. Mit StoredProcedures bin ich nicht so fit. Ist es da vielleicht möglich, dass die Zuweisung auf Ex_LaufIdx nach ExecProc und vor Commit gemacht werden sollte? Grüße |
Re: Zur Zeit wird keine Benutzertransaktion durchgeführt
Ich würde eine 'Transaktionsschleife' ;) immer eher so bauen:
Delphi-Quellcode:
Was den konkreten Fehler hier angeht, kann ich mich auch nur den Vermutungen meines Vorredners anschließen.
BeginTrans;
try DoWasAuchImmer; except RollBackTrans; raise; (!) end; CommitTrans; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz