![]() |
TDataSet kopieren/klonen
Hi,
ich habe ein DBGrid, in dem die Daten eines DataSet angezeigt werden. Nun muss ich in diesem DataSet per Schleife die einzelnen Datensätze durchgehen um ein paar Werte auszulesen. Das ganze mache ich über:
Delphi-Quellcode:
Wenn ich das aber mache zeigt mir auch das DBGrid an, dass sich der Datensatzzeiger verändert, da ich die Schleife ein paar mal durchgehen muss sehe ich es in meinem Grid erst mal rattern, bis er fertig ist *g*
while not DataSet.Eof do
begin [...] DataSet.Next; end; Um zu verhindern, dass die Datensatzzeigerbewegung in dem Grid angezeigt wird wollte ich das DataSet einfach in ein zweites kopieren und dieses dann in den Schleifen durchgehen. Wenn ich aber sowas mach:
Delphi-Quellcode:
Scheint er nur eine Referenz (?!?) zu übergeben, da der Zeiger im ersten DataSet trotzdem bewegt wird.
[...]
var MyDataSet : TDataSet; begin MyDataSet := DataSet; [...] Wie kann ich aber eine echte/eigenständige Kopie des DataSet erzeugen? Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt ^^ Gruß trashcandesign |
Re: TDataSet kopieren/klonen
Einfacher wäre die Verwendung von .DisableControls und .EnableControls...
|
Re: TDataSet kopieren/klonen
Hat funktioniert, vielen Dank
|
Re: TDataSet kopieren/klonen
Was hast du vor?
|
Re: TDataSet kopieren/klonen
Ich gebe in einem Grid Datensätze aus, in diesen kann man entweder über ein Suchfeld einen bestimmten Datensatz suchen, oder aber die Datensätze nach bestimmten Werten Gruppieren.
Um Werte für die Gruppierung zu erhalten nehm ich bestimmte Spalten der DB, lese die Werte der einzelnen Felder aus, fasse sie zusammen und gebe sie in einem TTreeView aus. Und um das TTreeView zu füllen und doppelte Einträge raus zu sieben muss ich das DataSet ein paar mal durchlaufen. Aber mit dem Disable und EnableComponents hat das wunderbar geklappt. |
Re: TDataSet kopieren/klonen
Und wenn du den Datensatzzeiger nach Beendigung deiner Arbeiten wieder auf den ursprünglichen Datensatz zurückstellst, dann hast du genau das gleiche Verhalten als hättest du mit einem recordset clone gearbeitet:
![]() Grüße vom marabu |
Re: TDataSet kopieren/klonen
Es geht ja nicht darum nach meiner Aktion was zu machen, sondern dass er während das DataSet die Schleifen durchläuft das auch im Grid angezeigt wird => die einzelnen Zeilen werden mehrmals durchgegangen.
Und das wollte ich nicht haben. Mit DisableControls und am Ende EnableControls hat genau das funktioniert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 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