Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Dataset gehe zu Index? (https://www.delphipraxis.net/199618-dataset-gehe-zu-index.html)

JanTera 6. Feb 2019 13:47


Dataset gehe zu Index?
 
Grüezi mitenand

Ich hab da eine Frage zum TDataset Typen. Man kann ja zum Beispiel mit .Next zum nächsten Eintrag im Dataset gehen. Da wird sozusagen der Index um eins erhöht. Kann ich auch, wenn ich den gewünschten Index weiss, direkt dorthin gehen?
Wenn nicht, dann würde ich es irgendwie so machen:

Delphi-Quellcode:
MyDataset.First
for i := 0 to myIndex - 1 do
  MyDataset.Next
Geht das auch besser?

LG jan_tera

PS: Wenn man bei ein neues Thema erstellt, kann man noch nicht die Delphi Version 10.3 auswählen, obwohl sie schon draussen ist. Ich habe jetzt einfach 10.2 genommen.

Delphi.Narium 6. Feb 2019 13:58

AW: Dataset gehe zu Index?
 
Mit .Next geht man zum nächsten Datensatz der Datenmenge und zwar in der gerade (mehr oder weniger) zufällig gewählten Reihenfolge der Sätze.

Mit .MoveBy(irgendeinezahl) kann man um soviele Sätze weiter gehen, wie mit irgendeinezahl angegeben wurde. Handelt es sich bei irgendeinezahl um eine negative Zahl, so wird zurückgegangen, dass enstpricht entsprechend vielen .Prior.

.MoveBy(3) entspricht also drei Aufrufen von .Next.

aus
Delphi-Quellcode:
MyDataset.First
for i := 0 to Index do
  MyDataset.Next
könnte damit dann
Delphi-Quellcode:
MyDataset.First;
MyDataset.MoveBy(Index);
werden.

Ob's die ideale Form zur Navigation durch eine Datenmenge ist, mag dahingestellt sein.

ConnorMcLeod 6. Feb 2019 14:05

AW: Dataset gehe zu Index?
 
Bei jedem .Next werden die verknüpften visuellen Elemente aktualisiert (DisableControls - EnableControls) und kalkulierte Felder berechnet. Das kann langsam werden.

Uwe Raabe 6. Feb 2019 14:09

AW: Dataset gehe zu Index?
 
Wenn das DataSet das unterstützt kann man auch über
Delphi-Quellcode:
MyDataSet.RecNo
die aktuelle Position auslesen oder setzen.

JanTera 6. Feb 2019 14:11

AW: Dataset gehe zu Index?
 
Super, das MoveBy funktioniert prächtig. Ich arbeite in diesem Fall zwar nicht mit riesigen Datasets, aber ist es auch schnell?

DP-Maintenance 6. Feb 2019 14:32

Dieses Thema wurde am "06. Feb 2019, 15:32 Uhr" von "Luckie" aus dem Forum "Object-Pascal / Delphi-Language" in das Forum "Datenbanken" verschoben.

p80286 6. Feb 2019 17:08

AW: Dataset gehe zu Index?
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1424866)
Mit .Next geht man zum nächsten Datensatz der Datenmenge und zwar in der gerade (mehr oder weniger) zufällig gewählten Reihenfolge der Sätze.

Das kann ich nur unterstreichen! In einer Datenmenge an bestimmete Positionen zu springen ist unsicher, da nicht gewährleistet ist, daß ein bestimmter Datensatz an einer bestimmten Position ist. Ausnahme wenn diese Position vorher visuell bestimmt wurde.

Gruß
K-H

Delphi.Narium 6. Feb 2019 17:12

AW: Dataset gehe zu Index?
 
Sagen wir mal so:

Wenn ich ein select * from tabelle order by id habe und dann jeden 42. Datensatz verarbeiten möchte, mag ein DataSet.MoveBy(42) angehen, aber ansonsten ist es eher grenzwertig, da einem Zufallsgenerator ähnlich ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz