Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDac TFDScript (https://www.delphipraxis.net/198572-firedac-tfdscript.html)

lxo 14. Nov 2018 19:50

Datenbank: Interbase • Version: xe • Zugriff über: ?

FireDac TFDScript
 
Hallo,

kann mir jemand ein Beispiel geben wie man TFDScript richtig anwendet und was dort alles nötig ist?
Ich habe eine TFDConnection und TFDTransaction angehängt aber ohne Erfolg.


Delphi-Quellcode:
  lConnection := TFDConnection.Create( nil);
  lTransaction := TFDTransaction.Create( nil);
  lScript     := TFDScript.Create( nil);
  try
    lConnection.ConnectionName := 'UPDATEROM';
    lConnection.DriverName := 'IB';
    lConnection.Params.Database := xDbNameInklPfad;
    lConnection.Params.Password := 'masterkey';
    lConnection.Params.UserName := 'SYSDBA';
    lTransaction.Connection := lConnection;
    lScript.Connection := lConnection;
    lScript.Transaction := lTransaction;

    try
      lScript.Connection.StartTransaction;
      lScript.ExecuteFile( xSqlScriptDatei);
      lScript.Connection.Commit;
    except
      ShowMessage( 'FEHLER');
      lScript.Connection.Rollback;
    end;

  finally
    lConnection.Free;
    lTransaction.Free;
    lScript.Free;
  end;
So in etwa sieht mein Konstrukt aus.
Was mach ich falsch?


Fehlermeldung bei " lScript.ExecuteFile( xSqlScriptDatei) ":
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ***.exe ist eine Exception der Klasse EIBNativeException mit der Meldung '[FireDAC][Phys][IB]invalid transaction handle (expecting explicit transaction start)' aufgetreten.
---------------------------
Anhalten  Fortsetzen  Hilfe  
---------------------------

jobo 15. Nov 2018 07:32

AW: FireDac TFDScript
 
Ich kenne die Komponente nicht (fdscript) und deren Inhalt, also das Script, das abläuft zeigst Du auch nicht.
Also nur geraten: Der Scriptinhalt selbst enthält Code, der implizit Commit absetzt.
Damit stünde Dein explizites Commit dann ohne Transaktion da.

Du kannst das einfach prüfen, indem Du nur ein harmloses Select im Script absetzt. Das sollte dann funktionieren. Wenn nicht, setzt Du die Transaktionssteuerung mit den Komponenten falsch ein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 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