Hallo Eddie,
Zitat von
eddie11:
Das scheint mir zwar machbar aber recht komliziert, zumal ich mitunter Tabellen mit Schlüsseln habe, die aus mehr als zwei Feldern zusammengesetzt sind.
mein Lösungsvorschlag passt zu deiner Problembeschreibung. Wenn du aber sowieso durch die Gesamtdaten scrollen willst, dann besorge dir die sortierten Schlüssel als Grundlage in einer
Query (SortedQuery), die du dann offen hältst:
SELECT KundenNummer FROM Kunden ORDER BY Suchbegriff, KundenNummer
Durch die Beschränkung auf die KundenNummer im result set hält sich die übermittelte Datenmenge in Grenzen. Eine weitere Möglichkeit zur Reduzierung der Datenmenge bietet die CursorLocation clUseServer. Die Detailinfos holst du dann anhand des Schlüssels on demand aus der Datenbank:
SELECT * FROM Kunden WHERE KundenNummer = :kdnr
Das mit den Parametern ist nicht sonderlich schwierig. Wenn du das Statement schon im Object Inspector der Eigenschaft
SQL deiner
Query (DetailsQuery) zuweist, dann wird es auf vorhandene Parameter (:param) untersucht. Die gefundenen Parameter werden bei "ParamCheck = TRUE" in die Parameterliste der
Query eingetragen und du kannst ihnen dann vor dem Öffnen der
Query Werte zuweisen:
Delphi-Quellcode:
begin
with DetailsQuery do
begin
Close;
Parameters.ParamValues['kdnr'] := SortedQuery.FieldValues['KundenNummer'];
Open;
end;
end;
Ohne den vollständigen Use Case ist eine optimale Beratung kaum möglich, aber vielleicht hilft dir mein Beitrag ja ein wenig auf deinem eigenen Weg zur fertigen Lösung.
marabu