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.
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.
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:
in den Eigenschaften des Kombinationsfeldes, Registerkarte „Ereignis“, Eintrag „bei nicht in Liste“ [Ereignisprozedur] auswählen
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]