Kombinationsfeld

hallo experten,

ich erstelle gerade eine datenbank.
ich möchte bei einem formular, in dem ich spätere datensätze eingeben werde, ein kombinationsfeld erstellen, um die auswahl für gewisse felder zu beschränken. Z.B. Feld „beruf“ mit den standardeinträgen „arzt“, „rechtsanwalt“, „professor“.
hab dann erst in derzugrundeliegenden tabelle ein nachschlageassistenten erstellt, mit den drei angaben und dann im formular ein kombinationsfeld aufgrundlage der tabelle.
bei 1000 datensätzen erscheinen dann aber im formular alle Werte z.B: 300 ärzte, 400 rechtsanwälte und 300 professoren. ich möchte aber nur die drei einträge dort erscheinen lassen. wenn ich jetzt hingehe und im formular ein kombinationsfeld nicht auf basis des nachschlageassistenten oder der tabelle erstelle, sondern die werte selbst in die liste eintrage, dann werden ja bei neuen datensatzeinträgen die werte nicht in der tabelle gespeichert. mein problem ist also: was mache ich jetzt. bin ziemlicher anfänger, und wäre über eine hilfe sehr dankbar.

tausend dank
jule

Hallo, Jule!

Wenn Du Dir Dein Formular im Entwurf anschaust, wirst Du Dein Kombinationsfeld finden. Dort wird möglicherweise was in der „Datensatzherkunft“-Eigenschaft stehen. Und zwar vermutlich etwas wie „SELECT Berufsfeld FROM DeineTabelle“, vielleicht noch was mit „ORDER BY …“ hintendran.

Hier musst Du folgendes eintragen: „SELECT DISTINCT Berufsfeld FROM DeineTabelle“, ggf. mit Deinem ORDER. Das DISTINCT sorgt dafür, dass keine Duplikate auftauchen.

Gruß, Manfred

Hallo Jule,

mach doch einfach eine weitere Tabelle, in der die Standardeinträge für das Kombinationsfeld enthalten sind. Sollen tatsächlich nur diese Einträge auswählbar sein, in den Eigenschaften des Kombinationsfeldes die Eigenschaft „nur Listeneinträge“ auf „Ja“ setzen. So können hinterher nur diese Einträge ausgewählt werden.

Etwas schwieriger wird dann die automatische Erweiterung der Einträge der Tabelle(Kombinationsfeld). Wird ein Wert in das Kombinationsfeld eingetragen, der nicht in der Liste steht und hinzugefügt werden soll, mußt du folgendes machen:

  1. in den Eigenschaften des Kombinationsfeldes, Registerkarte „Ereignis“, Eintrag „bei nicht in Liste“ [Ereignisprozedur] auswählen

  2. In die Prozedur (durch klick auf „…“) folgenden Code einfügen:

    Private Sub Beruf_NotInList(NewData As String, Response As Integer)
    Dim temp As String
    Dim ctl As Control
    Dim db As Database, rs As Recordset

    Set ctl = Me!Beruf
    If MsgBox(„Beruf fehlt. Hinzufügen?“, vbOKCancel) = vbOK Then
    Response = acDataErrAdded
    temp = NewData
    Set db = CurrentDb
    Set rs = db.Openrecordset(„Berufe“) ’
    Grüße,
    Kerstin

    [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]