![]() |
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:
Geht das auch besser?
MyDataset.First
for i := 0 to myIndex - 1 do MyDataset.Next 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. |
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:
könnte damit dann
MyDataset.First
for i := 0 to Index do MyDataset.Next
Delphi-Quellcode:
werden.
MyDataset.First;
MyDataset.MoveBy(Index); Ob's die ideale Form zur Navigation durch eine Datenmenge ist, mag dahingestellt sein. |
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.
|
AW: Dataset gehe zu Index?
Wenn das DataSet das unterstützt kann man auch über
Delphi-Quellcode:
die aktuelle Position auslesen oder setzen.
MyDataSet.RecNo
|
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?
|
Dieses Thema wurde am "06. Feb 2019, 15:32 Uhr" von "Luckie" aus dem Forum "Object-Pascal / Delphi-Language" in das Forum "Datenbanken" verschoben.
|
AW: Dataset gehe zu Index?
Zitat:
Gruß K-H |
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 10:30 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