Datensätze per Kombinationsfeld anlegen
Veröffentlicht am 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 ...