Beim Erfassen einer Farbe welche nicht im Dropdownfeld enthalten ist, soll der Anwender gefragt werden, ob die Farbe zu erfassen ist. Im „Ja-Fall“ soll Access den bereits ins Drop Down Feld eingegebenen Farbnamen in die Tabelle tblFarbe speichern und den neuen Wert in der Tabelle tblProdukt speichern.
Der Anwender versucht eine Farbe zu erfassen welche in der tblFarbe noch nicht existiert. Es erscheint eine Fehlermeldung.
Private Sub FarbeNr_NotInList(vFarbe As String, Response As Integer) Response = acDataErrContinue 'Keine Meldung an den Anwender Me.ActiveControl.Undo 'Fehlerhafte Eingabe rückgängig machen Dim vText As String Dim vTite As String vText = "Die gewählte Farbe <<" & vFarbe & ">> ist nicht erfasst. Soll sie jetzt erfasst werden?" vTite = "Neue Farbe erfassen" 'Den Anwender fragen ob die Farbe erfasst werden soll. Je nach Antwort verzweigen If MsgBox(vText, vbQuestion + vbYesNo, vTite) = vbYes Then Dim db As Database 'Eine Variabel als Datenbank dimensionieren Dim rs As Recordset 'Eine Variabel als Tabelle dimensionieren Dim vFarbZähler As Long 'Eine Zahlenvariabel dimensionieren Set db = CurrentDb() 'Der DB Variabel die aktuelle Datenbank zuweisen Set rs = db.openrecordset("T-Farben", DB_OPEN_DYNASET) 'Der Tabelle die Farbtabelle zuweisen rs.AddNew 'Zu neuem Datensatz gehen rs!Farbe = vFarbe 'Neue Farbe eingeben vFarbZähler = rs!FarbZähler 'Farbzähler (Autowert) merken rs.Update 'Datensatz speichern rs.Close 'Recordset schliessen db.Close 'Datenbank schliessen FarbeNr.Requery 'Dropdownfeld neu abfragen FarbeNr.Value = vFarbZähler 'Neue erfasster Wert in Dropdownfeld eingeben End If End Sub
Je nach verwendeter Access- und Windows-Version sind unterschiedliche Versionen der DAO-Bibliothek (DLL-Dateien) installiert. Obiger Code funktioniert mit “Microsoft DAO v3.6“. Sollte Trotz dieser Angabe (Menü ExtrasVerweise) der Code in der Zeile „OpenRecordset“ einen Fehler produzieren, ist die Dimensionierung mit „Dim db As DAO.Database“ und „Dim rs As DAO.Recordset" vor zu nehmen. Dies verhindert die Verwendung des gleichnamigen Befehles aus der ODBC-Bibliothek.