AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zur Zeit wird keine Benutzertransaktion durchgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

Zur Zeit wird keine Benutzertransaktion durchgeführt

Ein Thema von Sascha-L · begonnen am 30. Apr 2008 · letzter Beitrag vom 3. Mai 2008
Antwort Antwort
Sascha-L

Registriert seit: 14. Nov 2007
Ort: Finnentrop
50 Beiträge
 
Delphi 7 Professional
 
#1

Zur Zeit wird keine Benutzertransaktion durchgeführt

  Alt 30. Apr 2008, 15:54
Datenbank: Firebird • Version: 1.5 • Zugriff über: BDE
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;
Sascha Lütkemeier
  Mit Zitat antworten Zitat
automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Zur Zeit wird keine Benutzertransaktion durchgeführt

  Alt 2. Mai 2008, 19:22
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
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#3

Re: Zur Zeit wird keine Benutzertransaktion durchgeführt

  Alt 3. Mai 2008, 10:16
Ich würde eine 'Transaktionsschleife' immer eher so bauen:

Delphi-Quellcode:
BeginTrans;
try
  DoWasAuchImmer;
except
  RollBackTrans;
  raise; (!)
end;
CommitTrans;
Was den konkreten Fehler hier angeht, kann ich mich auch nur den Vermutungen meines Vorredners anschließen.
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz