Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IB-Transaktionen (https://www.delphipraxis.net/41161-ib-transaktionen.html)

stoxx 27. Feb 2005 19:46

Re: IB-Transaktionen
 
wie heisst eigentlich das schlaue Buch ?

Dankeschön !

MagicAndre1981 27. Feb 2005 19:56

Re: IB-Transaktionen
 
Ich glaube er meint das Buch "InterBase Datenbankentwicklung mit Delphi "von Andreas Kosch zum Thema IBX.

MfG
André

Hansa 27. Feb 2005 20:47

Re: IB-Transaktionen
 
[quote="Albi"]
Zitat:

Über die TIBTransaction-Methode Commit wird ein sogenannter Hard-Commit ausgelöst, der die aktuelle Ergebnismenge der Select-Abfrage auf dem Interbase-Server verwirft. Ab diesem Zeitpunkt gib es also keine Datenmenge mehr, die IBX anzeigen kann.
Das da ist aber sehr irreführend. :shock: "Verwerfen" heißt für mich : alle Ergebnisse wegschmeißen und in diesem Falle nichts speichern und eben von vorne anfangen. Genau das macht aber ein Rollback !! Ein Commit speichert alles endgültig. Danach geht dann kein Rollback mehr. Dies bedeutet aber, daß die Daten zur neuerlichen Bearbeitung neu gelesen werden müssen, um sie anzuzeigen. Am Commit kommt man aber auch so oder so nicht drum rum.

Ein CommitRetaining verwende ich zumindest nicht. Das ist irgendwie nichts halbes und nichts ganzes.

Quake 27. Feb 2005 20:51

Re: IB-Transaktionen
 
Da steht aber geschrieben verwirft die Abfragen (SELECT) und nicht die Änderungen (Update). Wenn du also eine Abfrage startest (SELECT) und dann Commitest hast du danach keine Ergebnismenge mehr.
Gegen ein CommitRetain spricht doch nur der Garbage Collector.

MagicAndre1981 27. Feb 2005 20:56

Re: IB-Transaktionen
 
wegen der MGA muss immer eine Transaktion ausgeführt werden, wenn man Daten lesen und anzeigen will.
Wenn du ein COMMIT machst siehst du in einem DBEdit nichts mehr.

André

Quake 27. Feb 2005 20:57

Re: IB-Transaktionen
 
@HaJO: Ruf mal den Transaktions-Editor auf. Evtl steht deine Transaktion auf Schnappschuss.

@André: Das meinte ich auch so. :thumb:

Hansa 27. Feb 2005 21:06

Re: IB-Transaktionen
 
Ich meine doch mit irreführend das Wort "verwerfen". Mit einem Commit wird nichts verworfen. Es wird dauerhaft gespeichert und fertig. Entweder es soll was gespeichert werden oder eben nicht. Ich hätte jedenfalls keine Lust, nach einem Stromausfall 100 Transaktionen zu sehen mit der Frage "Soll Transaktion x jetzt committed werden oder doch nicht ? J/N".

HaJo 27. Feb 2005 21:21

Re: IB-Transaktionen
 
Danke nochmals an Euch alle. Aber scheinbar ist es ein Fehler innerhalb der Interbase-Komponenten die in Delphi7 verwendet werden.

Dort steht in der Hilfe zur IBTransaction folgendes:

----------
Die Methode CommitRetaining schließt die aktuelle Transaktion unter Beibehaltung des Transaktionskontextes.

Delphi-Syntax:

procedure CommitRetaining;

C++ Syntax:

void __fastcall CommitRetaining(void)

Beschreibung

Mit CommitRetaining können Sie alle in der aktuellen Transaktion aktualisierten, eingefügten und gelöschten Daten in die Datenbank eintragen und den Transaktionskontext erhalten. Die aktuelle Transaktion ist die zuletzt mit der Methode StartTransaction gestartete Transaktion.

Hinweis: Prüfen Sie erst den Status der Eigenschaft InTransaction, bevor Sie CommitRetaining aufrufen. Wenn in der Anwendung keine aktuelle Transaktion vorhanden ist, wird eine Exception ausgelöst.
-----------

wäre ja zu schön gewesen wenn es funktioniert hätte.
Mit einem richtigen Commit geht alles.

Lieben Gruß
Jochen

Albi 28. Feb 2005 08:11

Re: IB-Transaktionen
 
Hallo HaJo,

wo ist da der Fehler, es stimmt doch was da geschrieben ist. Über ein SoftCommit können die Daten in die DB geschrieben werden und die Trans wird geschlossen und von dieser eine neue Instanz geöffnet und die Datenmenge der 1ten Trans wird erhalten (alte Version der Datenmenge).

HaJo 28. Feb 2005 14:20

Re: IB-Transaktionen
 
Hallo Micha,

ist alles gut und schön was da steht. Die Daten werden ja in die DB geschrieben. Andere Clienets sehen diese Daten dann auch.

Aber derjenige Client der geschrieben hat wird niemals mehr aktuelle Daten sehen, die ein anderer Client in die DB geschrieben hat. Nicht einmal dann, wenn die entsprechende Tabelle oder der Query explizit geschlossen und wieder geöffnet wird. Es bleiben dann für diesen Client "nur" seine eigenen Daten sichtbar.
Das das korrekt ist, kann ich mir nicht vorstellen!

Lieben Gruß
Jochen


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Seite 4 von 5   « Erste     234 5      

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