Aus Datenbank in Combobox einlesen

Sonie

Mitglied
Hallo.

Ich möchte eine Tabellenspalte aus einer DB in ein Combo als Auswahl-Kriterium einlesen: bisher löse ich das so:
Code:
Set rcdSetLieferant = New ADODB.Recordset
rcdSetLieferant.Open "Select * from Lieferanten", sql, adOpenDynamic, adLockBatchOptimistic

With rcdSetLieferant
   .MoveFirst
    Do Until .EOF
       combo1.AddItem !Lieferant
      .MoveNext ' Weiterrücken des Datensatz zeigers
    Loop
    Lieferantencount = .RecordCount
    .MoveFirst
  End With

Weiß jemand, wie´s schneller und einfacher geht?
 
Zuletzt bearbeitet:
So wie du das machst, ist das eigentlich schon sehr schnell. Möglicherweise kannst du aus vorgefertigten datensensitiven Steuerelementen noch ein paar Millisekunden zusätzlich rausquetschen, aber das halte ich für unwahrscheinlich und damit könntest du auf andere Probleme stoßen. Mit der Variante, wie du sie jetzt schon hast, hast du wenigstens selbst Kontrolle über die Daten.
Welches DBMS benutzt du denn überhaupt und wieviele Datensätze sind es? Und was bringt dir das MoveFirst in der letzten Zeile noch?
 

Ich hab mich bei der Datenbank nicht festgelegt, ich öffne über einen Connector wahlweise eine SQL oder eine Access-DB. In dieser Liste sollten es nicht viele werden, aber es geht ja um eine generelle Lösung.

Das .movefirst ist so eine Angewohnheit von mir, ich arbeite ja grundsätzlich mit einer netzwerkfähigen Programmierung.

Nach dem zählen (wer weiß, wie lange das dauert) wird der erste gültige Record geöffnet und angezeigt.
 
Kannst du mir sagen warum du adOpenDynamic benutzt ?
Du weißt schon was das bedeutet ?
Bei einer Access Db die local verfügbar ist kann man damit
eventuell Vorteile haben aber adOpenDynamic funktioniert nur mit
Cursorloaction = adUseServer und bedeutet das jeder einzelne
Datennsatz seperat übers Netz abgerufen wird !
Und dass zieht eine nicht zu unterschätzende Netzlast
mit sich.

rs.CursorLocation =adUseClient
rs.CursorType = adOpenStatic
s.LockType = adLockOptimistic

sind im Netz wesentlich sinnvoller.

Gruß
Jens
 
rs.CursorLocation =adUseClient
rs.CursorType = adOpenStatic
s.LockType = adLockOptimistic

sind im Netz wesentlich sinnvoller.

...
Weil ich keine Ahnung habe, wofür die Flags eigentlich genau stehen, es hat gefunzt. werde es gleich ausprobieren, danke!
 
Es beschleunigt deine Abfrage zusätzlich wenn du nicht

Select * from Tabelle

sondern nur die Felder die du in deiner combobox wirklich brauchst in dein Recordset lädst


da du auch nur lesend auf dein Recordset zugreifst würde ich den Locktype
adLockReadOnly

benutzen

Gruß bb
 
...
da du auch nur lesend auf dein Recordset zugreifst würde ich den Locktype
adLockReadOnly

benutzen
....
Jo danke. aber das weicht zu arg vom Thema ab, ich mach besser einen neuen tread auf.
 
Zuletzt bearbeitet:
Zurück