Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDataSet kopieren/klonen (https://www.delphipraxis.net/73594-tdataset-kopieren-klonen.html)

trashcandesign 20. Jul 2006 11:10


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:
while not DataSet.Eof do
begin
   [...]
DataSet.Next;
end;
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*

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:
[...]
var
  MyDataSet : TDataSet;
begin
  MyDataSet := DataSet;
[...]
Scheint er nur eine Referenz (?!?) zu übergeben, da der Zeiger im ersten DataSet trotzdem bewegt wird.
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

rwachtel 20. Jul 2006 11:12

Re: TDataSet kopieren/klonen
 
Einfacher wäre die Verwendung von .DisableControls und .EnableControls...

trashcandesign 20. Jul 2006 11:59

Re: TDataSet kopieren/klonen
 
Hat funktioniert, vielen Dank

mkinzler 20. Jul 2006 12:05

Re: TDataSet kopieren/klonen
 
Was hast du vor?

trashcandesign 20. Jul 2006 12:42

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.

marabu 20. Jul 2006 13:40

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: klick

Grüße vom marabu

trashcandesign 20. Jul 2006 14:38

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