Datensätze per Kombinationsfeld anlegen

30.12.2003

Ändern Sie die Datensatzherkunft des Kombinationsfelds.

Kombinationsfelder sind in erster Linie dazu gedacht, vorhandene Datensätze aus der Liste auszuwählen. Von Haus aus bietet Access keine Möglichkeit, der vorhandenen Liste neue Einträge hinzuzufügen.

Es gibt allerdings Situationen, wo genau diese Möglichkeit sinnvoll und auch komfortabel wäre.
Angenommen, Sie erfassen in einer Datenbank Bücher und wählen den dazugehörigen Autor aus einem Kombinationsfeld aus, das auf einer Tabelle. Dann kann passieren, dass Sie ein Buch erfassen wollen, dessen Autor noch nicht in der Datenbank vorhanden ist.

Ändern Sie einfach die Datensatzherkunft des Kombinationsfelds, indem Sie in der zugrunde liegenden Tabelle einen neuen Datensatz anlegen

Dazu ist lediglich eine kleine Ereignisprozedur notwendig, die beim Ereignis Bei Nicht in Liste des Kombinationsfelds aufgerufen wird. In dieser Ereignisprozedur sollte noch eine Benutzerabfrage vorhanden sein, ob denn auch tatsächlich ein neuer Autor angelegt werden soll.

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

    If MsgBox("Dieser Autor ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then

        Dim db As DAO.Database
        Dim rs As DAO.Recordset 
        Set db = CurrentDb 
        Set rs = db.OpenRecordset("tblAutoren", DB_OPEN_DYNASET) 
        rs.AddNew 
        rs!txtAutor = NewData 
        rs.Update 
        Response = acDataErrAdded 
        rs.Close 
        Set rs = Nothing 
        Set db = Nothing 
    Else

            'Hier kann beispielsweise ein Tippfehler abgefangen werden
         Response = acDataErrContinue CboAutor.Undo

    End If

End Sub

Dieser Code verwendet das DAO-Objektmodell. Für das ADO-Objektmodell verwenden Sie in der Prozedur zwischen If und Else den folgenden Code:

If...

    Dim cn As ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Set cn = CurrentProject.Connection 
    rs.Open "tblAutoren", cn, adOpenDynamic, adLockOptimistic 
    rs.AddNew rs!txtAutor = NewData 
    rs.Update 
    Response = acDataErrAdded 
    rs.Close 
    Set rs = Nothing 
    Set cn = Nothing

Else ...

Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.