Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Dataset neu laden (https://www.delphipraxis.net/169108-dataset-neu-laden.html)

Nico93 29. Jun 2012 09:47

Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase

Dataset neu laden
 
Hallo zusammen,

leider habe ich nochmal ein kleines Problemchen.

Und zwar habe ich ein DbGrid1 welches von einem Dataset1 gefüllt wird.
Diese Daten, auf die Dataset1 zugreift, werden zwischenzeitlich jedoch von einem anderen Dataset "Dataset2" geändert oder neue hinzugefügt oder sonst was.
Später soll Dataset1 dann wieder neu geladen werden, um die Änderungen von Dataset2 anzuzeigen.
Dies habe ich schon mit DbGrid1.Refresh und Dataset1.Refresh probiert, jedoch werden die Änderungen aus Dataset2 in Dataset1 nicht angtezeigt.
Die Daten werden erst angezeigt wenn ich das Dataset1 nochmal schließe und neu öffne.
Dann sind jedoch wieder alle Einstellungen des DbGrid weg.

Gibt es hierzu eine elegantere Lösung?

Vielen Dank für die Hilfe

DeddyH 29. Jun 2012 10:07

AW: Dataset neu laden
 
Hängen die Datasets evtl. an verschiedenen Transaktionen?

Nico93 29. Jun 2012 12:46

AW: Dataset neu laden
 
nee eigentlich hängen die an garkeinen

mkinzler 29. Jun 2012 12:58

AW: Dataset neu laden
 
In Firebird hängen diese immmer an einer Transaktion; im Zweifel an einer automatisch erzeugten.

shmia 29. Jun 2012 13:00

AW: Dataset neu laden
 
Zitat:

Zitat von Nico93 (Beitrag 1172937)
Dies habe ich schon mit DbGrid1.Refresh und Dataset1.Refresh probiert, jedoch werden die Änderungen aus Dataset2 in Dataset1 nicht angtezeigt.
Die Daten werden erst angezeigt wenn ich das Dataset1 nochmal schließe und neu öffne.

Tja, manchmal funktioniert TDataset.Refresh nicht so wie geplant.
Delphi-Quellcode:
// workaround
var
  primarykey : string;
begin
  primarykey := dataset1['IdKey'];
  dataset1.close;
  dataset1.open;
  dataset1.Locate('IdKey', primarykey, []);

tsteinmaurer 29. Jun 2012 13:03

AW: Dataset neu laden
 
So weit ich mich erinnern kann, ist dieses Verhalten für IBX ganz normal. Die Refresh-Methode in IBX aktualisiert nur den aktuell positionierten Datensatz, d.h. ein Close/Open ist notwendig, wenn man auch andere Änderungen sehen möchte. Dazu ist aber noch zu sagen, dass der Transaktions-Isolation-Level und AutoCommit auch eine Rolle spielt. Eine laufende SNAPSHOT Transaktion wird nie die Änderungen anderer Transaktionen sehen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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 by Thomas Breitkreuz