3 Stimmen

Das Laden von Daten in ein Kombinationsfeld ist langsam

Ich habe eine VB6-Anwendung mit einer Suchmaske. In der Suchmaske habe ich 9 Kombinationsfelder. Einige der Kombinationsfelder haben nur ein paar Einträge, aber einige haben ein paar hundert Einträge. Es dauert lange (einige Sekunden), bis die Daten ausgefüllt sind.

Jedes Kombinationsfeld ist gleich konfiguriert: Sorted = False, Style = 2 - Dropdown-Liste

3 der Kombinationsfelder haben weniger als 20 Einträge. 1 hat 130 Einträge. 4 haben ungefähr 250 Einträge 1 hat fast 700 Einträge.

Ich fülle alle neun Kombinationsfelder mit ähnlichem Code.

While Not RS.EOF

    cmbX.List(i) = RS("Description")
    cmbX.ItemData(i) = RS("Id")

    i = i + 1

    RS.MoveNext
Wend

Ich habe versucht, Visible = False zu setzen, aber das hatte keine Auswirkungen auf die Leistung.

Gibt es einen anderen Weg, um das Kombinationsfeld zu füllen, die besser als meine bestehende Methode durchführen wird?

0voto

Robert Harvey Punkte 173098

Das scheint wirklich eine lange Zeit zu sein. Wie öffnen Sie Ihre Datensätze? Verwenden Sie Firehose-Cursor (Nur-Lese-Cursor, Nur-Vorwärts-Datensatz-Cursor)? Wenn nicht, könnten Sie dadurch eine Leistungssteigerung erzielen. Stellen Sie sicher, dass Ihre SQL-Anweisungen NUR die Daten zurückgeben, die für die Kombinationsfelder benötigt werden (d. h. verwenden Sie KEINE SELECT *).

Wenn Ihre SQL-Anweisungen WHERE-Klauseln oder JOINS enthalten, stellen Sie sicher, dass Sie Indizes für die entsprechenden Felder haben.

Wenn Sie ACCESS als Backend verwenden, werden Sie durch ein Upsizing auf SQL Server Express eine unmittelbare Geschwindigkeitssteigerung erzielen.

0voto

hugo Punkte 1

'' COMBOBOX befüllen

Ich musste 20 Sekunden warten, bis mein Programm das Kombinationsfeld "Stadt" mit 80.000 Datensätzen gefüllt hatte. Ich habe mehrere Methoden ausprobiert, aber sie waren alle schlechter

Dies war mein ursprünglicher Code

    Me.txt_City.DataSource = tblCities
    Me.txt_City.ValueMember = "city"
    Me.txt_City.DisplayMember = "city"

und raten Sie mal, was, ich habe gerade die erste Codezeile an das Ende verschoben und dann dauerte die Besiedlung nur noch 5 Sekunden

    Me.txt_City.ValueMember = "city"
    Me.txt_City.DisplayMember = "city"

    Me.txt_City.DataSource = tblCities

versuchen Sie es

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X