AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fibplus Problem mit Transaction
Thema durchsuchen
Ansicht
Themen-Optionen

Fibplus Problem mit Transaction

Ein Thema von hanspeter · begonnen am 1. Nov 2007 · letzter Beitrag vom 5. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 15:08
Datenbank: Firebird • Zugriff über: Fibplus
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:
 
  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;
IBConnection ist in diesem Fall TpFIBDatabase der Datenbank A.

Ö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
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 15:21
um welche FIBPlus Version reden wir? Und gibts vielleicht noch ein bissl mehr Code? Danke
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 19:23
Zitat von MarcoWarm:
um welche FIBPlus Version reden wir? Und gibts vielleicht noch ein bissl mehr Code? Danke
Version ist 6.8 und vielmehr Code gibt es eigentlich nicht.
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 19:31
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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 20:52
Zitat von Hansa:
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 ?
Nein, das ist ein Tool, was ich bereits unter IBObjects verwendet habe.
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
  Mit Zitat antworten Zitat
Valeo Pupsus

Registriert seit: 5. Jun 2006
21 Beiträge
 
#6

Re: Fibplus Problem mit Transaction

  Alt 1. Nov 2007, 21:20
Query.Open = neu Transaction.
wir brauchen TdsAuswahl.Transaction.StartTransaction; machen nicht.
MFG,Val.
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Fibplus Problem mit Transaction

  Alt 2. Nov 2007, 07:48
Zitat von Valeo Pupsus:
Query.Open = neu Transaction.
wir brauchen TdsAuswahl.Transaction.StartTransaction; machen nicht.
Sorry, aber das ist nun mal Unsinn.
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Fibplus Problem mit Transaction

  Alt 2. Nov 2007, 07:51
Es sieht so aus, als hier eine implizite Tranaktionssteuerung abläuft. Vielleicht gibt es eine Möglichkeit dieses Feature zu deaktivieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Fibplus Problem mit Transaction

  Alt 2. Nov 2007, 08:10
Hi,

vielleicht muss man noch das poStartTransaction aus den Options nehmen.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: Fibplus Problem mit Transaction

  Alt 2. Nov 2007, 09:05
[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?
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:11 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