Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Große Datenmenge in LookupCombo zur Verfügung stellen

  Alt 23. Apr 2017, 12:30
Datenbank: mssql • Version: 2008 • Zugriff über: unidac
Hallo,

ich stelle den Benutzern eine DBLookupComboBox zur Verfügung in der 1.4 Mio Datensätze zur Auswahl stehen. In der hinterlegten Query werden nur 3 der 30 Felder der DB-Tabelle geführt (ID, Serien-Nr., Typ).

Warum alle Daten:
Das Kunden-Netz ist teilweise sehr langsam so dass Echtzeitfilter zu Verzögerungen führen
Manchmal will der Nutzer ab der aktuellen Serien-Nr noch ein paar Datensätze vor oder zurück blättern.

Sobald die Daten geladen sind, funktioniert das Ganze auch einwandfrei und sehr schnell.

Aufgabe:
Wie kann ich die Zwangspause beim Laden der Daten beim Start verhindern
Wie kann ich die Daten hin und wieder im Hintergrund ohne für den User bemerkbare Aussetzer aktualisieren?

Lösungsansatz:
Laden und Aktualsierung erfolgt in einem Thread

Meine Frage:
Zuerst dachte ich es sei eine gute Idee die Daten in einer UniQuery in einem Thread abzurufen und dann an eine VirtualQuery zu übergeben. Beim Test habe ich dann aber festgestellt, dass das UniQuery.Open auf meinem Rechner 1s dauert und das VirtualQuery.Open dann 7s. In beiden Fällen ist FetchAll = True. Im Kundennetzt dauert das Ganze um einiges länger.

Wie müsste Execute/Synchronice gestaltet werden, dass die Daten ohne spürbare Verzögerung an den Main-Thread übergebe werden und der User u.U. im Mainthread in den Daten gerade blättert.

Ich habe dazu schon einige Foren durchsucht aber nie eine funktionierenden Lösungsansatz gefunden.

Wenn einer eine gute Idee hat, wäre ich sehr dankbar.

Gerd
  Mit Zitat antworten Zitat