# ComboBox und Label mit Datensätzen füllen



## DesignedbyJF (19. August 2010)

Hallo an alle !

Vielleicht kann mir einer helfen. Ich habe folgendes Problem:

Ich habe eine Datenbank erstellt mit einer Tabelle die aus 2 Spalten besteht (Name und Tel.-Nr.). In meinem Programm hab ich eine ComboBox und ein Label. Ich bin auch schon soweit, dass die ComboBox mit den Namen geladen wird. Wenn ich nun einen Namen aus der ComboBox auswähle soll in dem Label die dazugehörige Tel.-Nr. angezeigt werden. Kann mir einer sagen wie´s funktioniert? 
Hier mein bisheriger Code:

```
Private Sub Form_Load()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String
'Sachbearbeiter laden
    Set cn = New ADODB.Connection
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<Pfad>;"
        cn.Open
        strSQL = "Select Name, Name from Sachbearbeiter"
    Set rs = cn.Execute(strSQL)
    With Me.cboSachbearbeiter
        Do While Not rs.EOF
            .AddItem rs.Fields(1)
            rs.MoveNext
        Loop
    End With
    rs.Close
    Set rs = Nothing
    Set cn = Nothing
```


----------



## tombe (19. August 2010)

Also zuerst mal denke ich das die Abfrage einen Fehler hat:


```
strSQL = "Select Name, Name from Sachbearbeiter"
```

Du frägst zweimal das Feld Name ab.

Zum eigentlichen Problem. In der onClick-Prozedur der Combobox erstellst du eine Abfrage die die Telefonnummer ermittelt und an das LAbel übergibt:


```
strSQL = "Select Telefonnummer from Sachbearbeiter WHERE Name = '" & cboSachbearbeiter.Value & "'"
Set rs = cn.Execute(strSQL)
Label.Caption = rs.Fields("Telefonnummer")
```

Feldnamen bzw. den Namen des Labels musst du halt noch anpassen.


----------



## DesignedbyJF (19. August 2010)

Danke für die schnelle Antwort.
Leider hat das Programm ein Problem mit der Value-Eigenschaft, hier krieg ich immer einen Fehler: "Methode oder Mitgliedsdaten nicht gefunden."

```
strSQL = "Select Telefonnummer from Sachbearbeiter WHERE Name = '" & cboSachbearbeiter.Value & "'"
```
Was ist da falsch?

Sorry! Bin leider noch nicht ganz so gut in VB und kenn´mich noch nicht so gut aus.


----------



## tombe (19. August 2010)

Ok und was passiert wenn du anstelle "Value" einfach "Text" schreibst oder nur "cboSachbearbeiter"?

Bin mir jetzt nicht sicher wie es bei dir richtig ist, schreib mal womit du arbeitest, da du oben von einer Datenbank gesprochen hast, könnte es Access sein!?


----------



## DesignedbyJF (19. August 2010)

Ja hab eine Acess-Datenbank angelegt.
Wenn ich statt Value Text schreibe oder nur cboSachbearbeiter, kommt diese Fehlermeldung:

"Laufzeitfehler 3021: Entweder BOF ode EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz."


----------



## tombe (20. August 2010)

Dann führe mal rs.MoveFirst oder rs.Refresh aus. Dann sollte auch dieses Problem behoben sein.


----------



## DesignedbyJF (20. August 2010)

Hallo,
das funktioniert leider auch nicht. Kommt immer dieser Fehler:

"Laufzeitfehler 3265: Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden."

Dabei wird mir dann das hier markiert:

```
lblDurchwahl.Caption = rs.Fields(2)
```


----------



## tombe (20. August 2010)

Also ich gehe mal davon aus das der Name des "Labels" richtig geschrieben ist. Dann vergebe doch mal für das Recordset-Objekt nicht eine Nummer (gibt es in der Abfrage überhaupt 2 Felder?) sondern verwende den eigentlichen Namen.


```
lblDurchwahl.Caption = rs.Fields("Telefon")
```

Wobei du hier "Telefon" natürlich noch den Namen geben musst wie er bei der Abfrage aus der Datenbank kommt.

Ansonsten was für eine Access Version verwendest du? Wenn du Access 2000 hast oder deine DB in dem Format speichern kannst, dann stelle sie mal hier rein und ich schau drauf.


----------



## DesignedbyJF (20. August 2010)

funktioniert leider auch nicht, kommt wieder der Laufzeitfehler 3021.

die datenbank hab ich mit Access 2007 gemacht. kann die datenbank nicht hochladen. das sind vertrauliche Daten drin. sorry


----------



## tombe (21. August 2010)

Na dann wird es ein bisschen schwieriger. Dan zeige doch zumindest mal den Code wo du die Liste füllst und wo/wie du beim Auswählen eines Eintrages aus der Liste die Telefonnummer ermitteln willst.
Wenn kein aktueller Datensatz gefunden wird, kann auch die SQL-Anweisung falsch sein. Kann man nur nicht sagen wenn man nicht sieht womit du arbeitest.


----------



## DesignedbyJF (23. August 2010)

Hallo, 
habs jetzt hingekriegt. Ich hab doch das ganze in die FormLoad-Prozedur geschrieben statt in die onClick-Prozedur. Manchmal ist es so einfach aber man siehts nicht.

Jedenfalls nochmal vielen dank für die Hilfe!


----------



## tombe (23. August 2010)

Also wenn du es jetzt so gelöst hast.


> Ich hab doch das ganze in die FormLoad-Prozedur geschrieben statt in die onClick-Prozedur.


 
Dann passt das aber nicht hierzu:


> Wenn ich nun einen Namen aus der ComboBox auswähle soll in dem Label die dazugehörige Tel.-Nr. angezeigt werden.



Aber wenn es den Zweck erfüllt, ist es ja gut.


----------

