Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SP wird nicht an DB übergeben (https://www.delphipraxis.net/49702-sp-wird-nicht-db-uebergeben.html)

Albi 14. Jul 2005 19:35

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:
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;
Die Proceduren zum Starten und Commiten sehen so aus:

Code:
If Not Trans.InTransaction Then
   Trans.StartTransaction;
Code:
if Trans.InTransaction then
    Trans.Commit;
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: )

//Edit: Die SP liefert mir auch einen Rückgabeparameter und selbst dieser wird korrekt übergeben.

marabu 14. Jul 2005 20:42

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

Albi 15. Jul 2005 05:23

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.

marabu 15. Jul 2005 05:48

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

Albi 15. Jul 2005 06:03

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 04:36 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