Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Verwenden Sie eine wiederverwendbare Klasse, um Kombinationsfeldern leicht Werte hinzuzufügen.

Techniken

Kombinationsfelder, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

KombifeldErweiternMitKlasse.mdb

Shortlink

www.access-im-unternehmen.de/811

Kombinationsfeld erweitern mit Klasse

André Minhorst, Duisburg

Die Funktion zum Hinzufügen von Werten zur Datensatzherkunft eines Kombinationsfeldes braucht man in fast jeder Datenbankanwendung. Mal eben eine neue Kategorie anlegen oder eine neue Abteilung? Kein Problem, wenn Sie pro Kombinationsfeld die richtige Ereignisprozedur programmiert haben. Aber warum sollte man diese eigentlich immer wieder neu programmieren? Schließlich gibt es in einer solchen Prozedur doch nur wenige flexible Parameter. Schauen Sie sich an, wie Sie mit einer einfachen Klasse und wenigen Codezeilen ein wiederverwendbares Element zaubern.

Wenn Sie ein Kombinationsfeld verwenden, um damit die Daten einer Lookup-Tabelle zur Auswahl durch den Benutzer bereitzustellen, brauchen Sie kein eigenes Formular, um etwa eine neue Kategorie oder Abteilung zu dieser Tabelle hinzuzufügen. Es reichen dann die folgenden Zeilen Code aus - angelegt in der Prozedur, die beim Hinzufügen eines noch nicht vorhandenen Wertes durch das Ereignis Bei nicht in Liste ausgelöst wird:

Private Sub LieferantID_NotInList(

             NewData As String, Response As Integer)

        Dim db As DAO.Database

        Dim rst As DAO.Recordset

        Set db = CurrentDb

        Set rst = db.OpenRecordset("tblLieferanten",

                                     dbOpenDynaset)

        With rst

            .AddNew

            !Firma = NewData

            .Update

        End With

        Response = acDataErrAdded

        rst.Close

        Set rst = Nothing

        Set db = Nothing

    End Sub

Gegebenenfalls fügen Sie an geeigneter Stelle noch eine MsgBox-Anweisung ein. Diese fragt, ob der neue Wert in die Datensatzherkunft des Kombinationsfeldes eingefügt werden soll (s. Abb. 1):

pic001.png

Abb. 1: Rückfrage beim Anlegen eines neuen Datensatzes in einer Lookup-Tabelle direkt über das Kombinationsfeld

If MsgBox("Soll der Wert '" & NewData & "' zur Liste

     hinzugefügt werden?", vbYesNo) = vbYes Then

    'Datensatz anlegen

Else

    Me.Undo

    Response = acDataErrContinue

End If

Ist das nicht der Fall, wird die Eingabe verworfen und mit Response = acDataErrContinue die sonst erscheinende Fehlermeldung unterdrückt. Diesen Code müssen Sie für jedes Kombinationsfeld, das die Eingabe neuer Einträge und deren Speicherung in der zugrunde liegenden Tabelle erlauben soll, hinterlegen - und Sie müssen jedesmal die entsprechenden Elemente wie etwa den Namen der Zieltabelle und des Zielfeldes austauschen. Davon abgesehen legen Sie grundsätzlich immer den gleichen Code an - nur diese beiden Werte ändern sich.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.