VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / Daten / Datenbank / FillCombo ComboBox mit Daten aus MDB füllen |
'Die Datenbank-Variable db soll global nutzbar sein:
Public db As Database
Public Sub FillCombo( _
ByRef cmb As ComboBox, _
ByVal SQL As String)
Dim rs As Recordset
Dim HasID As Boolean 'Enthält SQL eine ID?
With cmb
.Clear
Set rs = db.OpenRecordset(SQL, dbOpenForwardOnly)
If rs.Fields.Count > 1 Then
HasID = (rs(1).Type = dbLong)
End If
Do Until rs.EOF
'Beschreibung hinzufügen:
'(OBdA: 1. Feld enthält Beschreibung)
.AddItem rs(0)
If HasID Then
'Primärschlüssel merken:
'(OBdA: 2. Feld enthält ID)
.ItemData(.NewIndex) = rs(1)
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End With
End Sub
Auf einer Form muß eine ComboBox "cmbCategories" plaziert und folgender Code eingegeben werden:
Private Sub cmbCategories_Click()
'Bei Auswahl anzeigen:
With cmbCategories
If .ItemData(.ListIndex) Then
'ID vorhanden:
MsgBox "ID=" & .ItemData(.ListIndex)
Else
'ID nicht vorhanden:
MsgBox "Text=" & .Text
End If
End With
End Sub
Private Sub Form_Load()
'Konstanten (ggf. anpassen!)
Const MDB = "E:\Programme\DevStudio\VB\NWind.MDB"
Const SQL = "select CategoryName,CategoryID " & _
"from Categories " & _
"order by CategoryName"
'Datenbank öffnen:
Set db = OpenDatabase(MDB)
'ComboBox füllen:
FillCombo cmbCategories, SQL
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Datenbank schließen:
db.Close
Set db = Nothing
End Sub
Bei Auswahl eines Elements der ComboBox erscheint eine MessageBox, welche die entsprechende ID anzeigt. Wird in Form_Load die vorhandene Deklaration für SQL ersetzt durch
Const SQL = "select CategoryName from Categories " & _
"order by CategoryName"
so erscheint statt der ID der korrespondierende Text - ohne den Code für das Füllen ändern zu müssen! © Jost Schwider, 30.04.2000-30.04.2000 - http://vb-tec.de/fillcomb.htm