![]() |
Datenbank: Firebird • Zugriff über: Fibplus
Fibplus Problem mit Transaction
Hallo,
ich stehe gerade mit Fibplus auf dem Schlauch, vielleicht hat ja wer einen Tip. In einem TDatamodule habe ich zwei TpFIBDatabase, welche mit völlig unterschiedlichen Datenbanken verbunden sind. Datenbank A und Datenbank B Mit dem pFIBDatabase für Datenbank B verbinde ich zur Laufzeit ein TDataset und zeige ein Grid an. Eine Transaction ist verbunden und wird explizit mit Starttransaction/Commit gesteuert. Das funktioniert. Jetzt erzeuge ich zur Laufzeit 2 neue Transactionen und verbinde diese mit der Datenbank A. Der verwendete Code :
Delphi-Quellcode:
IBConnection ist in diesem Fall TpFIBDatabase der Datenbank A.Query := TpFIBDataset.Create(nil); { Temporäres Query über die Lebenszeit des Unit } Queryint := TpFIBQuery.Create(nil); Connection := IbConnection; Transaction := TpFIBTransaction.Create(nil); Transaction1 := TpFIBTransaction.Create(nil); Transaction.DefaultDatabase := Connection; // default Transaction.TPBMode := tpbReadCommitted Transaction1.DefaultDatabase := Connection; Query.Database := Connection; Query.Transaction := Transaction; Queryint.Database := Connection; Queryint.Transaction := Transaction1; Öffne ich jetzt eine der beiden Transactionen und schließe sie mit Commit wieder, dann funktioniert der oben beschriebene Ablauf für Datenbank B nicht mehr. Beim Versuch das Dataset zu öffnen kommt die Fehlermeldung Transaction active. Im Quellcode wird der Fehler beim Versuch eine interne TRansaction zu öffnen, verursacht. Hat wer einen Tip, wie ich das Problem in den Griff bekomme? Mit Gruß Peter |
Re: Fibplus Problem mit Transaction
um welche FIBPlus Version reden wir? Und gibts vielleicht noch ein bissl mehr Code? Danke :-)
|
Re: Fibplus Problem mit Transaction
Zitat:
Query ist ein Dataset. Die Transactionen werden zur Laufzeit erzeugt und mit dem Dataset bzw. der Query verbunden. Wird dieser Construct einmal verwendet, dann funktioniert die Transactionssteuerung für Datenbank B nicht nehr. Also
Delphi-Quellcode:
TdsAuswahl.SQLs.SelectSQL.Text := 'Select NR,ABTLG,BEZEICHNUNG FROM PRUEFUNG ORDER BY NR,ABTLG';
TdsAuswahl.Transaction.StartTransaction; TdsAuswahl.Open; Open (oder auch Prepare) bringt den Fehler Transaction activ. Gruß Peter |
Re: Fibplus Problem mit Transaction
Habe auch 2 völlig unabhängige Datenbanken. Deshalb auch je zweimal TFIBDatabase, Transactions. Alles im selben Programm. Ich gehe allerdings nicht hin und erzeuge das, was sowieso gebraucht wird zur Laufzeit. Oder gehts um Turbo Delphi Explorer ?
|
Re: Fibplus Problem mit Transaction
Zitat:
Hier werden SQL Anweisungen etwas nutzerfreundlicher aufbereitet. z.B. If Select('Select * From Datei') then oder Update('TableName',['Param1',var1,'Param2',Var2,...],['PID=',primarykey]) oder CopytoVirtualTable('Select * from Datei Where ID<3') und dann CachedUpdate('Datei','ID',VirtualTable); Die letzten beiden Anweisungen kopieren eine Datenmenge in ein Virtuelles Memtable und die CachedUpdate-Anweisung spielt nur die Änderungen zurück. Das Object verwende ich in fast jeden Programm und unter IBObjects hat es funktioniert. Gruß Peter |
Re: Fibplus Problem mit Transaction
Query.Open = neu Transaction.
wir brauchen TdsAuswahl.Transaction.StartTransaction; machen nicht. |
Re: Fibplus Problem mit Transaction
Zitat:
Ich möchte eine ganze Reihe von Datenbankaktionen im Kontext einer von mir gestarteten Transaction abarbeiten. Davon sind mehrere Tabellen betroffen. Entweder sind die alle erfolgreich, dann Commit oder schlägt auch nur eine der Aufgaben fehl, dann Rollback. Für Dritte sollen die Änderungen auch erst sichtbar sein, wenn alle Aktionen abgeschlossen sind. Da die Client - Rechner teilweise im WLan und mobil arbeiten wäre alles andere tödlich. Der Fehler tritt reproduzierbar so tief im Fibplus auf, das ich inzwischen meine das es ein Bug ist. Gruß Peter |
Re: Fibplus Problem mit Transaction
Es sieht so aus, als hier eine implizite Tranaktionssteuerung abläuft. Vielleicht gibt es eine Möglichkeit dieses Feature zu deaktivieren.
|
Re: Fibplus Problem mit Transaction
Hi,
vielleicht muss man noch das poStartTransaction aus den Options nehmen. Frank |
Re: Fibplus Problem mit Transaction
[quote="hanspeterDer Fehler tritt reproduzierbar so tief im Fibplus auf, das ich inzwischen meine das es ein Bug ist.[/quote]
Deswegen fragte ich nach der Version. Bei unserer 6.8 war ein ähnlicher Fehler vorhanden. Nach einem Prepare blieb eine Transaktion über die Lebenszeit der Anwendung offen (sehr ärgerlich) Ich hab den Fehler in der pFIBDataInfo.pas gefunden. Vielleicht liegt der deinige an einer ähnlichen Stelle? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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-2025 by Thomas Breitkreuz