Freigeben über


Hinzufügen eines Werts zu einem gebundenen Kombinationsfeld

Um eine Werteliste in einer Tabelle oder einer Abfrage anzuzeigen, werden häufig Kombinationsfelder verwendet. Indem Sie auf das NotInList-Ereignis reagieren, bieten Sie dem Benutzer die Möglichkeit, Werte hinzuzufügen, die nicht in der Liste enthalten sind.

Der Wert, der in einem Kombinationsfeld angezeigt wird, wird häufig aus einem Datensatz in einer verknüpften Tabelle nachgeschlagen. Da die Liste von einer Tabelle oder einer Abfrage abgeleitet ist, müssen Sie eine Möglichkeit bieten, wie der Benutzer einen neuen Datensatz in der zugrunde liegenden Tabelle eingeben kann. Anschließend können Sie die Requery-Methode verwenden, um die Liste erneut abzufragen, damit sie den neuen Wert enthält.

Wenn ein Benutzer einen Wert in ein Kombinationsfeld eingibt, das nicht in der Liste enthalten ist, tritt das NotInList-Ereignis des Kombinationsfelds auf, solange die LimitToList-Eigenschaft des Kombinationsfelds auf Ja festgelegt ist oder eine andere Spalte als die gebundene Spalte des Kombinationsfelds im Feld angezeigt wird. Sie können eine Ereignisprozedur für das NotInList-Ereignis schreiben, das dem Benutzer die Möglichkeit bietet, der Tabelle, die die Werte der Liste bereitstellt, einen neuen Datensatz hinzuzufügen. Die NotInList-Ereignisprozedur enthält ein Zeichenfolgenargument namens NewData , das Access verwendet, um den vom Benutzer eingegebenen Text an die Ereignisprozedur zu übergeben.

Die NotInList-Ereignisprozedur verfügt außerdem über das Argument Response, mit dem Sie Access mitteilen, wie nach Ausführung der Prozedur vorgegangen wird. Je nach Aktion in der Ereignisprozedur legen Sie das Argument Response auf einen der drei vordefinierten konstanten Werte fest:

Konstante Beschreibung
acDataErrAdded Falls der neue Wert in der Datenquelle für die Liste von der Ereignisprozedur eingegeben wird oder dem Benutzer dafür eine Möglichkeit geboten wird, legen Sie das Argument Response auf acDataErrAdded fest. Das Kombinationsfeld wird dann automatisch erneut abgefragt, wodurch der Liste der neue Wert hinzugefügt wird.
acDataErrDisplay Wenn Sie den neuen Wert nicht hinzufügen und access die Standardfehlermeldung anzeigen soll, legen Sie das Argument Response auf acDataErrDisplay fest. Der Benutzer wird dann von Access aufgefordert, einen gültigen Wert aus der Liste einzugeben.
acDataErrContinue Falls Sie in der Ereignisprozedur eine eigene Meldung anzeigen möchten, legen Sie das Argument Response auf acDataErrContinue fest. In Access wird nicht die Standardfehlermeldung angezeigt, sondern der Benutzer muss weiterhin einen Wert im Feld eingeben. Wenn Sie nicht möchten, dass der Benutzer einen vorhandenen Wert aus der Liste auswählt, können Sie Änderungen am Feld mithilfe der Undo-Methode rückgängig machen.

So wird z. B. der Benutzer in der folgenden Ereignisprozedur gefragt, ob einer Liste ein Wert hinzugefügt werden soll, der Wert hinzugefügt und dann das Argument Response verwendet, um Access zur erneuten Abfrage der Liste aufzufordern:

Private Sub ShipperID_NotInList(NewData As String, Response As Integer)

   Dim dbsOrders As DAO.Database
   Dim rstShippers As DAO.Recordset
   Dim intAnswer As Integer

On Error GoTo ErrorHandler

   intAnswer = MsgBox("Add " & NewData & " to the list of shippers?", _
      vbQuestion + vbYesNo)

   If intAnswer = vbYes Then

      ' Add shipper stored in NewData argument to the Shippers table.
      Set dbsOrders = CurrentDb
      Set rstShippers = dbsOrders.OpenRecordset("Shippers")
      rstShippers.AddNew
      rstShippers!CompanyName = NewData
      rstShippers.Update

      Response = acDataErrAdded         ' Requery the combo box list.
   Else
      Response = acDataErrDisplay       ' Require the user to select
                                        ' an existing shipper.
   End If

   rstShippers.Close
   dbsOrders.Close

   Set rstShippers = Nothing
   Set dbsOrders = Nothing

   Exit Sub

ErrorHandler:
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.