NewComboEntry PDF Drucken E-Mail

Einfach Einträge zu Kombinationsfeldern hinzufügen mit  mossNewComboEntry

Kombinationsfelder zeigen oft Daten aus Lookuptabellen an, also beispielsweise Anreden, Titel, Kontaktarten et cetera. Wenn der Benutzer dieser erweitern möchte, müssen Sie dazu jedesmal den gleichen Code produzieren und auf den jeweiligen Fall anpassen. Es geht aber auch einfacher: Mit unserer Erweiterung brauchen Sie nur einmal zwei Klassen zum VBA-Projekt hinzuzufügen und ein paar Zeilen Code für das jeweilige Kombinationsfeld hinzuzufügen. Wie es geht, zeigt dieser Artikel.

Kombinationsfelderweiterung mit Pepp!

Wer ein Kombinationsfeld verwendet, um Daten wie die Anrede oder den Titel einer Person oder andere Lookupdaten auszuwählen, möchte die in diesem Feld angezeigte Liste möglicherweise zur Laufzeit erweitern - und zwar, ohne ein zusätzliches Formular öffnen zu müssen. Prinzipiell ist das gar nicht schwer: Sie brauchen einfach nur auf das Ereignis Bei nicht in Liste zu reagieren, dass mit seinem Parameter NewData alles liefert, was Sie zum Hinzufügen des neuen Eintrags in die zugrunde liegende Tabelle brauchen.

Dort fügen Sie nun noch einige Zeilen Code ein, die folgende Aufgaben erledigen:

  • Schreiben des neuen Datensatzes in die Zieltabelle
  • Auslesen der ID des neuen Datensatzes
  • Aktualisieren der Datensatzherkunft des Kombinationsfelds
  • Zuweisen des neuen Werts zum Kombinationsfeld

Der Code hierfür ist ebenso trivial wie in verschiedenen Varianten verbreitet, zum Beispiel in der Access-FAQ von Karl Donaubauer.

Wer fit ist, erstellt die Prozedur mit den benötigten Codezeilen auf die Schnelle selbst, wer weniger fit oder Tipparbeit spart, kopiert eine bestehende Version und passt den Code hier und da an (andere Tabelle, anderes Zielfeld, ...).

Wer schlau ist, probiert unsere Lösung aus: Sie brauchen dabei nur zwei Klassen in die Datenbank zu importieren und dann nur noch die folgenden Zeilen zum Klassenmodul des Formulars mit dem betroffenen Kombinationsfeld hinzuzufügen:

Private objNewComboEntries As clsNewComboEntrys
Private Sub Form_Load()
    Set objNewComboEntries = New clsNewComboEntrys
   
    'Beispiel für neue Einträge mit Rückfrage
    objNewComboEntries.AddComboBox Me!LieferantID, "tblLieferanten", "Firma", _
        True, "Firma '[NewData]' zur Liste der Lieferanten hinzufügen?", "Neuer Lieferant"
       
    'Beispiel für neuen Einträge ohne Rückfrage
    objNewComboEntries.AddComboBox Me!KategorieID, "tblKategorien", "Kategoriename"
End Sub

Diese Variante enthält schon alle der fünf möglichen Parameter für die Einrichtung des Kombinationsfelds. Diese lauten:

  • cbo: Verweis auf das Kombinationsfeld, zum Beispiel Me!cboAnrede
  • strTable: Name der Lookuptabelle, aus der die angezeigten Daten des Kombinationsfelds stammen
  • strField: Name des Felds, dass die angezeigten Werte enthält
  • bolConfirmNewValue: Gibt an, ob der Benutzer das Anlegen bestätigen muss.
  • strMessageNewData: Enthält den Meldungstext der Bestätigung. Der Platzhalter [NewData] kann hier verwendet werden und wird zur Laufzeit durch den neu eingetragenen Wert ersetzt.
  • strTitleNewData: Enthält den Titel des Meldungsfensters der Bestätigung. Der Platzhalter [NewData] kann wie oben beschrieben auch hier eingesetzt werden.

Die letzten drei Parameter sind optional. Sie können diese weglassen, wenn neue Einträge ohne Rückfrage zur Datensatzherkunft des Kombinationsfelds hinzugefügt werden sollen.

Download

Die folgende Beispieldatenbank enthält die beiden benötigten Klassen sowie ein Formular mit einem Beispiel für den Einsatz der Kombinationsfelderweiterung mossNewComboEntry.

Download Beispieldatenbank (mdb)

Detaillierte Anleitung

Wenn Sie das Beispiel heruntergeladen und in ein Verzeichnis Ihrer Wahl entpackt haben, gehen Sie wie folgt vor, um die Klasse zum VBA-Projekt Ihrer Anwendung hinzuzufügen:

  • Öffnen Sie die Datenbank, die Sie mit mossNewComboEntry ausstatten möchten.
  • Aktivieren Sie den VBA-Editor (Alt + F11).
  • Wählen Sie den Menübefehl Datei|Datei importieren aus.
  • Selektieren Sie im nun erscheinenden Dialog die Datei clsNewComboEntry.cls.
  • Verfahren Sie auf die gleiche Weise mit der Datei clsNewComboEntrys.cls.

Nun statten Sie das Formular, dass ein Kombinationsfeld zur Auswahl von Lookupdaten enthalten soll, mit der in den beiden Klassen enthaltenen Funktionalität aus:

  • Öffnen Sie das gewünschte Formular in der Entwurfsansicht.
  • Fügen Sie, soweit noch nicht vorhanden, das Kombinationsfeld zur Eingabe des Datums hinzu und statten Sie es mit der gewünschten Datensatzherkunft aus.
  • Aktivieren Sie das Eigenschaftsfenster (F4).
  • Wählen Sie für die Eigenschaft Beim Laden den Eintrag [Ereignisprozedur] aus, sofern diese Eigenschaft noch leer ist.
  • Klicken Sie auf die Schaltfläche mit den drei Punkten.
  • Der VBA-Editor wird aktiviert und zeigt, sofern Sie zuvor noch keine Ereignisprozedur für das Ereignis Beim Laden des Formulars angelegt haben, eine leere Ereignisprozedur namens Form_Load an.
  • Fügen Sie im Kopf des Moduls die folgende Deklarationszeile ein:
Private objNewComboEntries As clsNewComboEntrys
  • Ergänzen Sie die Prozedur wie folgt:
Private Sub Form_Load()
    Set objNewComboEntries = New clsNewComboEntrys
   
    'Beispiel für neue Einträge mit Rückfrage
    objNewComboEntries.AddComboBox Me!LieferantID, "tblLieferanten", "Firma", _
        True, "Firma '[NewData]' zur Liste der Lieferanten hinzufügen?", "Neuer Lieferant"
       
    'Beispiel für neuen Einträge ohne Rückfrage
    objNewComboEntries.AddComboBox Me!KategorieID, "tblKategorien", "Kategoriename"
End Sub

Dies sorgt dafür, dass die Klasse beim Öffnen des Formulars (beziehungsweise Unterformulars) instanziert wird. Die zweite Zeile fügt die Klasse für das gewünschte Kombinationsfeld zur Auflistung der Objekte hinzu, die mit der beschriebenen erweitert werden sollen.

Weitere Kombinationsfelderweiterungen hinzufügen

Wenn Sie mehr als ein Kombinationsfeld im glelichen Formular mit mossNewComboEntry ausstatten möchten, brauchen Sie nur weitere Zeilen mit dem Aufruf der AddComboBox-Methode zur Ereignisprozedur Form_Load hinzuzufügen

Versionsinformationen

Version 0.9.0.0: Veröffentlicht am 17.12.2009.

Bei Problemen ...

... schreiben Sie uns einfach einen Kommentar mit der Fehlerbeschreibung. Gern können Sie uns auch Verbesserungsvorschläge unterbreiten. Kommentare werden nur veröffentlicht, wenn diese von allgemeinem Interesse sind.

 

Ihren Kommentar hinzufügen

Ihr Name:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode: