![]() |
Datenbank: FireBird • Version: 1.5 • Zugriff über: FIBPlus
SP wird nicht an DB übergeben
Hallo,
ich bin hier kurz vorm verzweifeln. Wie oben schon geschrieben, greife ich über die FIBPlus auf die FB zu. Ich verwende desweiteren noch eine Transaction und eine SP. So nun habe ich das Problem das die Daten nicht in der DB gespeichert werden, sie gehen einfach verloren. Eine EV oder sonstiges Fehlermeldungen treten nicht auf. Die Daten landen einfach nicht der DB. Die Procedure zum speichern sieht so aus:
Code:
Die Proceduren zum Starten und Commiten sehen so aus:
TransCommit(DMUserSetup.T_User_Get);
TransStart(DMUserSetup.T_User_Set); Try with DMUserSetup.SP_User_Set do begin ParamByName('iUser_Name').Value:= Txt_UserName.Text; ParamByName('iFirst_Name').Value:= Txt_First_Name.Text; ParamByName('iLast_Name').Value:= Txt_Last_Name.Text; ParamByName('iKuerzel').Value:= Txt_Kuerzel.Text; ParamByName('iStatus_a').Value:= 1; ParamByName('iStatus').Value:= 1; ExecProc; TransCommit(DMUserSetup.T_User_Set); if ParamByName('oUser_Count').AsInteger = 0 then MessageDlg(Msg_Save_New_OK, mtInformation, [mbOK], 0) else MessageDlg(Msg_Save_Edit_OK, mtInformation, [mbOK], 0); Get_User; end; except on E:Exception Do Begin MessageDlg(Msg_Save_Error+#13+E.Message, mtError, [mbOK], 0); TransRollBack(DMUserSetup.T_User_Set); end; end;
Code:
If Not Trans.InTransaction Then
Trans.StartTransaction;
Code:
Hat jemand von euch eine Idee, woran das liegen kann. Also an der Verbindung zur DB schon mal nicht, da Select's usw funktionieren. Auch wenn ich das Statement via Query an die DB schicke werden die gespeichert nur eben über die SP nicht. (In anderen Projekten geht das doch auch, wieso hier nicht? :wall: :wall: :wall: )
if Trans.InTransaction then
Trans.Commit; //Edit: Die SP liefert mir auch einen Rückgabeparameter und selbst dieser wird korrekt übergeben. |
Re: SP wird nicht an DB übergeben
Leider habe ich FIBPlus nicht auf meiner Maschine. Bist du wirklich sicher, dass die Daten nicht gespeichert werden? Wie prüfst du das? Wenn sie doch gespeichert werden sollten und du siehst sie nicht, dann könnte es am TransactionIsolationLevel liegen. Werden sie tatsächlich nicht gespeichert, dann könnte es an deiner StoredProcedure liegen oder an einem unsachgemäßen Umgang (best bet) mit dem Transaktionsmechanismus in deinem Code.
Grüße vom marabu |
Re: SP wird nicht an DB übergeben
Erst habe ich gleich nach dem Commit zum speichern ein Select auf die Datenmenge abgesetzt, um das Änderungsdatum zu bekommen. Nach dem da nichts zu sehen war, habe ich auch erst gedacht, das die Transaction für die Abfrage noch mit einer "alten Version" arbeitet. Also habe ich mir die IBExpert Pers. genommen und gleich nach dem Commit direkt in die Tabelle geschaut aber nichts da.
|
Re: SP wird nicht an DB übergeben
Meinst du nicht auch, dass es dann an der SP selbst liegen sollte - und nicht an deinem Delphi-Code?
marabu |
Re: SP wird nicht an DB übergeben
Der Gedanke ist mir auch schon gekommen aber wie schon gesagt, in den anderen Projekten geht es doch auch. Also weiß ich nicht mehr wo der Fehler liegen sollte.
Mir ist erst der Gedanke gekommen, dass das Commit nicht richtig ausgeführt wird (besser gar kein) und somit ja automatisch ein Rollback erfolgt. Das würde dann doch auch erklären, warum die Rückgabe-parameter stimmen. Ich werde mal weiterprobieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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