![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDac
FireDac Datensätze markieren
Hallo Zusammen,
in IBObjects verwaltet die Query die markierte Datensätze. Mit markiert meine ich, z.b. im Grid mit gedrückter Strg + LinksKlick einen Datensatz markieren. Die Liste bleibt erhalten selbst wenn das Where der Query verändert wird. Um das Where geht es mit in diesem Fall jedoch nicht. Soweit ich weis, verwaltet FireDac keine Liste für markierte Datensätze. Habt jemand eine Idee wie man die markierten Datensätze am besten Verwalten kann. Übrigens, die fdQuery ist mit einem DexExpress cxGrid verbunden. Ich bin der Meinung, die Verwaltung sollte nicht über das cxGrid erfolgen sondern irgendwie über die Query. Die Liste selbst in einer Array zu verwalten ist sicherlich auch eine Möglichkeit. Das FireDac dass nicht vorgesehen haben soll, wundert mich an dieser Stelle, oder ich habe es noch nicht gefunden. Gruß Kostas |
AW: FireDac Datensätze markieren
Das TFDQuery von TDataSet erbt, sollte die Eigenschaft Bookmark doch wohl vorhanden sein?
|
AW: FireDac Datensätze markieren
Zitat:
Zitat:
![]() Gibt das aktuelle Bookmark-Objekt in der Datenmenge an. Bookmark ermöglicht den Zugriff auf das aktuelle Bookmark-Objekt in einer Datenmenge. Diese Objekte ermöglichen das Markieren einer bestimmten Position in einer Datenmenge, um später rasch zu diesen Datensätzen zurückzukehren. In einer Anwendung kann Bookmark gelesen werden, um die Positionsmarkierung für den aktuellen Datensatz zu ermitteln, oder auf ein gespeichertes Bookmark gesetzt werden, um den aktiven Datensatz zu wechseln. In einer ![]()
Delphi-Quellcode:
procedure DoSomething (const Tbl: TTable)
var Bookmark: TBookmark; begin Bookmark := Tbl.GetBookmark; { Speicher reservieren und einen Wert zuweisen } Tbl.DisableControls; { Datensatzanzeige in Steuerelementen deaktivieren } try Tbl.First; { Auf den ersten Datensatz in der Tabelle positionieren } while not Tbl.Eof do {durch alle Datensätze der Tabelle iterieren } begin { Hier folgt die weitere Verarbeitung } . . . Tbl.Next; end; finally Tbl.GotoBookmark(Bookmark); Tbl.EnableControls; { ggf. Anzeige von Datensätzen in Datensteuerelementen wieder aktivieren } Tbl.FreeBookmark(Bookmark); {Von Positionsmarke belegten Speicher freigeben } end; end; |
AW: FireDac Datensätze markieren
Zitat:
![]() |
AW: FireDac Datensätze markieren
Stimmt auffallend :thumb: Auf eine TBookmarkList wäre ich jetzt gar nicht auf Anhieb verfallen :wink:
|
AW: FireDac Datensätze markieren
Hallo Zusammen,
Wir haben das jetzt mit einem Dictionary und ein Calculated Field gelöst. Beim markieren eines Datensatzes im Grid oder sonst wo, wird ein Eintrag ins Dict. mit dem PK geschrieben und beim Abwählen wieder gelöscht oder getogglet je nach Anforderung. Bei OnCalcFields wird der Eintrag über den PK gesucht. Falls vorhanden, wird das Calc. Boolean Field entsprechend gesetzt. Daraufhin zeigt das Grind den aktuellen Zustand. Das hat den Vorteil dass ich Datensätze auch ohne Grid markieren kann und der zweite Vorteil, ich kann dynamisch das Where durch Makro verändern und meine Auswahl fortsetzen da sie bestehen bleibt. Das kann IBO per Default. Gruß Kostas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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