Ich vermute stark, du verwechselst hier was: Nicht die
Transaktion bleibt offen, sondern das
Query bleibt aktiv (
Active = True). Die Transaktion kann gar nicht offenbleiben, nachdem die Daten via
select von der Datenbank angefordert wurden und eingetroffen sind. Wäre die Transaktion noch offen, würde der
Select-Befehl noch auf seine Ausführung warten.
Eine
Query- oder
Table-Komponente muß aktiv bleiben, solange die Daten angezeigt oder sonstwie verarbeitet werden sollen. Anders ausgedrückt: Wenn das Property
Active der Datenmenge nicht mehr den Status
True aufweist, besteht keine Möglichkeit, die Datenmenge zu verarbeiten. Erst das Setzen von
Active auf
True bzw. der
Open-Befehl führt den
Select-Befehl aus und beendet damit die Transaktion.
Meines wissens nicht
denn ich habe ja ne TIBQuery und ne TIBTransaction, und sobald ich die TIBTransaction schleiße sind auch die daten aller zugehörigen IBQuerys oder IBTables weg.
Und auch am Firebird Server kann ich mir ja die offenen Transaction anschauen und sehe, das es eigentlich so ist.
@mkinzler
Ja Clientseitig cachen ist ne möglichkeit, und mache ich bei meinen eigenen Sachen auch, nur für die Drittanbieter Software wird es halt um einige schwieriger, und aufwändiger, und ich erhoffte mir eine schneller und fast genau so gute lösung.
@hstreicher
Aber wenn eine Transaction READ ONLY ist, dann beudetet das ja nicht, das die Records nicht trotzdem Versioniert werden müssen solange die Transaction offen ist oder?
eventuell eine kombination mit READ COMMITTED oder [NO] RECORD_VERSION
nur ich will auf keinen Fall etwas verschlimmbessern