Kontakt
DSVGO
'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 SubAuf 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 SubBei 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