Thema Datum  Von Nutzer Rating
Antwort
29.12.2007 15:45:45 Josie
NotSolved
Blau Aw:füllen einer Combobox durch ADO Schnittstelle
30.12.2007 09:25:33 Holger
NotSolved
30.12.2007 14:06:48 Josie
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
30.12.2007 09:25:33
Views:
999
Rating: Antwort:
  Ja
Thema:
Aw:füllen einer Combobox durch ADO Schnittstelle
Hallo Josie,
wenn ich dich richtig verstanden habe, geht es dir nur darum, Mehrfachnennung in der ComboBox cbxZahl und leere Einträge in der Combobox cbxTyp zu verhindern. Ohne es ausprobiert zu haben, meine ich, dass du mit folgender Änderung das Ziel erreichen kannst.
...
On Error Resume Next 'Überspringt Befehl, der Fehler auslöst
Do While Not rst.EOF
With cbxZahl
for i=0 to .count-1 'sieht nach, ob der Wert schon vorliegt
vorh=false:if .list(i)=rst.Fields("Zahl") then vorh=true:exit for
next i
if vorh=false then .AddItem rst.Fields("Zahl")
End With
cbxTyp.AddItem rst.Fields("Typ") 'dieser Befehl wird bei Fehlern übersprungen
rst.MoveNext
Loop
on Error Goto 0 'schaltet die error-Funktion wieder aus
...

Wenn in ComboBox cbxZahl nicht zwischen Groß- und Kleinschreibung unterschieden werden soll und eventuell unterschiedlich viele Leerzeichen auftreten, empfehle ich
vorh=false:if trim(lcase(.list(i)))=trim(lcase(rst.Fields("Zahl"))) then vorh=true:exit for
zu verwenden.
Für die Vermeidung von Mehrfachnennungen gibt es elegantere Lösungen, wenn aber deine Datei nicht zu umfangreich ist, wirst du kaum eine längere Laufzeit feststellen. Du könntest z.B. die Listeneinträge sortieren und Mehrfachnennungen so leicht löschen.
Für die Combobox cbxTyp kannst du den Fehler auch auffangen, wenn du prüfst, ob Typ leer ist. Dann wird aber nur dieser Fehler abgefangen:
if rst.Fields("Typ")<>"" then cbxTyp.AddItem rst.Fields("Typ")


Viel Erfolg und guten Rutsch
Holger


Josie schrieb am 29.12.2007 15:45:45:

Hi ich wollte meine Combobox mit Hilfe der ADO Schnittstelle auf Basis der Daten einer Datenbank füllen. Das hat auch so weit hingehauen. Doch habe ich da noch ein Problem. die Daten die ich abrufe sind häufig mehrfach vorhanden. Ich möchte aber das die Daten in der Combobox jeweils nur einmal erscheinen. Bsp. In einer Spalte der Datenbank kommt häufiger die Zahl 212 vor. Diese Zahl soll aber in der Combobox nur einmal erscheinen und jede andere Zahl der Spalte auch. Dies soll auch bei der zweiten Combobox (Typ) der Fall sein. Bei der zweiten Combobox habe ich auch noch das Problem das die Daten noch nicht in die Combobox eingelesen werden (bei Versuch wird Error angezeigt), da es auch leere Datensätze gibt. Mit dem untenstehenden Code ist das noch nicht möglch. Kann mir jemand helfen den hier unten stehenden Code so zu optimieren, dass die genannten Probleme gelöst werden können?

Option Explicit

Private objConn As ADODB.Connection
Private rst As ADODB.Recordset
Private strSQL As String


Private Sub UserForm_Activate()
Dim strPath As String
strPath = Application.Path
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"

Set objConn = New ADODB.Connection
With objConn
.Provider = "Microsoft Jet 4.0 OLE DB Provider"
.ConnectionString = "Data Source=" & strPath & "etdb.mdb"
.Open
End With
Combo_Fill
End Sub



Private Sub Combo_Fill()
Set rst = New ADODB.Recordset
With rst
.ActiveConnection = objConn
.CursorLocation = adUseClient
.Source = "SELECT KundeMotor.* FROM KundeMotor"
.Open
End With

If rst.EOF Then Exit Sub

cbxZahl.Clear
cbxTyp.Clear


Do While Not rst.EOF
With cbxZahl
.AddItem rst.Fields("Zahl")
End With
With cbxTyp
.AddItem rst.Fields("Typ")
End With


rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub

Vielen Dank schonmal im voraus!!
MfG Josie

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.12.2007 15:45:45 Josie
NotSolved
Blau Aw:füllen einer Combobox durch ADO Schnittstelle
30.12.2007 09:25:33 Holger
NotSolved
30.12.2007 14:06:48 Josie
NotSolved