Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

16.1.6 Einstellen des Kombinationsfeldes für die Schnellauswahl

16.1.7 Aktualisieren des Kombinationsfeldes

Das Aktualisieren des Kombinationsfeldes besteht aus zwei Aktionen: Die erste tritt bei Änderungen am Datenbestand auf und aktualisiert die Datensatzherkunft des Kombinationsfeldes. Die zweite sorgt dafür, dass das Kombinationsfeld immer den Datensatz anzeigt, den auch das Formular darstellt.

Die Datensatzherkunft des Kombinationsfeldes soll in mehreren Fällen aktualisiert werden - beim Einfügen, Ändern und Löschen von Datensätzen. Für die drei Ereignisse gibt es auch drei Ereignisprozeduren. Alle drei enthalten lediglich eine Anweisung, die immer die gleiche Prozedur aufruft (auf diese Weise brauchen Sie Änderungen nur an einer Stelle durchzuführen):

Private Sub mForm_AfterDelConfirm(Status As Integer)
    RequeryComboBox
End Sub

Private Sub mForm_AfterInsert()
    RequeryComboBox
End Sub

Private Sub mForm_AfterUpdate()
    RequeryComboBox
End Sub

Listing 16.17: Ereignisprozeduren zum Löschen, Einfügen und Ändern von Daten

Die von den drei Routinen aufgerufene Prozedur enthält ebenfalls nur eine Anweisung. Diese führt die Requery-Methode des Kombinationsfeldes aus.

Private Sub RequeryComboBox()
    'Kombinationsfeld aktualisieren
    mSearchComboBox.Requery
End Sub

Listing 16.18: Aktualisieren der Datensatzherkunft des Kombinationsfeldes

Der zweite Teil der Aktualisierung stellt im Kombinationsfeld den Datensatz ein, der dem im Formular angezeigten Datensatz entspricht. Diese Aktion soll bei jedem Datensatzwechsel ausgelöst werden, was ein typischer Einsatzfall für die Ereigniseigenschaft Beim Anzeigen des Formulars ist. Die entsprechende Ereignisprozedur hat folgendes Aussehen:

Private Sub mForm_Current()
    'Wenn ein Kombinationsfeld referenziert wurde
    If Not (mSearchComboBox Is Nothing) Then
        'Kombinationsfeld aktualisieren
        UpdateCombobox
    End If
End Sub

Listing 16.19: Beim Wechsel des im Formular angezeigten Datensatzes wird das Schnellsuche-Kombinationsfeld ebenfalls aktualisiert

Die Ereignisprozedur aus Listing 16.19 prüft vor dem Aufrufen der Prozedur UpdateComboBox noch, ob überhaupt ein Schnellsuche-Kombinationsfeld referenziert ist, und unterlässt gegebenenfalls die Aktualisierung. Die Prozedur UpdateComboBox prüft, ob das Formular überhaupt einen Datensatz anzeigt, und ermittelt in diesem Fall den Wert des Primärschlüsselfeldes des aktuellen Datensatzes. Anderenfalls - entweder weil kein oder ein noch nicht gespeicherter Datensatz angezeigt wird - leert die Prozedur das Kombinationsfeld.

Private Sub UpdateCombobox()

    Dim rst As DAO.Recordset

    'Kopie des Formular-Recordset erzeugen
    Set rst = mForm.RecordsetClone

    'Wenn kein Datensatz markiert oder Datensatz neu ist
    If rst.NoMatch Or mForm.NewRecord Then
        'Kombinationsfeld leeren
        mSearchComboBox.Value = 0
    Else
        'sonst Recordset-Kopie auf den gleichen Datensatz wie im
        'Formular einstellen
        rst.Bookmark = mForm.Bookmark
        'Kombinationsfeld auf den Primärindex dieses Datensatzes setzen
        mSearchComboBox.Value = rst.Fields(mPrimaryKey)
    End If

    Set rst = Nothing

End Sub

Listing 16.20: Aktualisieren des Kombinationsfeldes nach Änderungen im Datenbestand

Nächster Abschnitt:

16.1.8 Anzeige des im Kombinationsfeld ausgewählten Datensatzes

© 2006-2008 André Minhorst Alle Rechte vorbehalten.