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!

4.9.3 Schnellauswahl per Kombinationsfeld

4.9.4 Schnelles Filtern von Listenfeldern

Listenfelder kommen oft zum Einsatz, wenn Datensätze in einer Übersicht zur Auswahl angeboten werden sollen. Wenn viele Datensätze zur Auswahl bereitstehen, macht eine Möglichkeit zum Filtern der Datensätze Sinn.

Die üblichen Filter-Funktionen bestehen aus verschiedenen Textfeldern zur Eingabe der Filterkriterien und einer Schaltfläche zum Auslösen des Filtervorgangs mit den neuen Parametern. Je mehr Felder man mit einer solchen Filter-Funktion abdeckt, desto mächtiger ist diese - dafür benötigt man aber auch entsprechend viele Steuerelemente, durch die sich der Benutzer erst einmal hindurchkämpfen muss.

In vielen Fällen ist das gar nicht notwendig; dort lässt sich eine viel handlichere Lösung einsetzen: Stellen Sie dem Benutzer einfach ein Textfeld bereit, das in beliebig vielen Feldern des Listenfeldes sucht und unmittelbar nach der Eingabe eines jeden Buchstabens die angezeigten Datensätze filtert. Dazu ist neben ein wenig Routinearbeit noch ein kleiner Trick notwendig - sehen Sie einfach selbst. Abbildung 4.70 zeigt das fertige Formular in der Entwurfsansicht. Es enthält ein Listenfeld zur Anzeige der Datensätze, eine Schaltfläche zum Anzeigen der Detailansicht des markierten Datensatzes und ein Textfeld zur Eingabe des Suchbegriffs.

Abbildung 4.70: Listenfeld mit Schnellfilter

Das erste Textfeld namens txtSuche dient der Eingabe des Suchbegriffs. Der Inhalt des Listenfeldes lstKontakte soll nach jeder Änderung des im Textfeld txtSuche enthaltenen Suchbegriffs aktualisiert werden.

Das Listenfeld bezieht seine Daten aus der Abfrage qryKontakteListenfeld (siehe Abbildung 4.71). Die Abfrage enthält die anzuzeigenden Felder in der gewünschten Reihenfolge und Sortierung.

Damit das Listenfeld nach jeder Änderung des Inhalts des Textfeldes txtSuche aktualisiert wird, verwenden Sie eine sonst recht stiefmütterlich behandelte Ereigniseigenschaft. Die Ereigniseigenschaft Bei Änderung des Feldes zur Eingabe des Suchbegriffs wird bei jeder Änderung des Inhalts ausgelöst. Für die entsprechende Ereignisprozedur fügen Sie den folgenden Code ein:

Abbildung 4.71: Datensatzherkunft des Listenfeldes zur Anzeige der Kontakte

Private Sub txtSuche_Change()

    Dim strSuchbegriff As String

    'Suchbegriff in Variable speichern
    strSuchbegriff = Me!txtSuche.Text

    'Neue Datensatzherkunft zuweisen
    Me!lstKontakte.RowSource = "SELECT * FROM qryKontakteListenfeld " _
        "WHERE Nachname LIKE '" & strSuchbegriff & "*'"

    'Inhalt des Listenfeldes aktualisieren
    Me!lstKontakte.Requery

End Sub

Listing 4.53: Prozedur zum Filtern des Listenfeldes

Der Trick ist, dass Sie nicht den Inhalt des Textfeldes über die Eigenschaft Value auswerten, sondern die Text-Eigenschaft verwenden. Die Value-Eigenschaft wird nämlich erst nach dem Aktualisieren des Textfeldes auf den tatsächlichen Inhalt eingestellt.

Der Abfrageausdruck ermittelt alle Datensätze der Abfrage qryKontakteListenfeld, in denen der Nachname mit dem im Textfeld angegebenen Ausdruck beginnt.

Der Vollständigkeit halber finden Sie hier noch den Code zum Anzeigen des im Listenfeld ausgewählten Kontaktes. Der Kontakt soll im Formular aus dem vorherigen Beispiel angezeigt werden. Zwei Aktionen sollen dazu führen: ein Doppelklick auf das Listenfeld und ein Klick auf die Schaltfläche cmdAnzeigen. Die entsprechenden Ereignisse sollen prinzipiell die gleiche Aktion auslösen - daher legen Sie dafür eine neue Prozedur an und rufen diese über die beiden Ereignisprozeduren auf:

Private Sub cmdAnzeigen_Click()
    Anzeigen
End Sub

Private Sub lstKontakte_DblClick(Cancel As Integer)
    Anzeigen
End Sub

Private Sub Anzeigen()
    If Not IsNull(Me!lstKontakte) Then
        DoCmd.OpenForm "frmSchnellsuchePerKombifeld", _
            WhereCondition:="KontaktID = " & Me!lstKontakte, _
            WindowMode:=acDialog
    End If
End Sub

Listing 4.54: Prozeduren zum Anzeigen der Details eines Kontaktdatensatzes

Die Beispiele zu diesem Kapitel finden Sie auf der Buch-CD in der Datenbank \Kap_04\Formulare.accdb sowie in weiteren Beispieldatenbanken - dazu an anderer Stelle mehr.

Im Rahmen dieses Kapitels können leider nur die wichtigsten Ereignisse besprochen werden. Für Informationen zu speziellen Ereignissen klicken Sie einfach in das Feld der gewünschten Eigenschaft im Eigenschaftsfenster und betätigen anschließend die Taste F1. Die Onlinehilfe steht Ihnen dann mit Rat und Tat zur Seite.

Mit »einfachen Abfragen« sind hier Abfragen gemeint, deren Daten quasi wie eine Tabelle gehandhabt werden - also etwa Abfragen, die zwei per 1:1-Beziehung verknüpfte Tabellen darstellen oder die eine einzelne Tabelle mit einem oder mehreren Lookup-Feldern beinhalten.

Die Verknüpfungsfelder müssen nicht zwangsläufig mit dem Primärschlüsselfeld des Hauptformulars und dem Fremdschlüsselfeld des Unterformulars gefüllt werden. Es gibt auch Fälle, in denen beispielsweise der Wert eines Kombinationsfeldes im Hauptformular zur Auswahl der passenden Datensätze im Unterformular herangezogen wird - hier würde man einfach den Namen des Kombinationsfeldes als Wert der Eigenschaft Verknüpfen nach verwenden.

Beispieldatenbank: Die Tabellen tblProjekte, tblMitarbeiter und tblProjektzeiten, die Abfrage qryProjektzeiten sowie die Formulare frmProjektzeiten und sfmProjektzeiten finden Sie unter \Kap_04\Formulare.accdb.

Es gibt mehrere Möglichkeiten, ein Formular als Unterformular in ein anderes Formular einzubauen. Am schnellsten geht es aber vermutlich, indem Sie das Zielformular in der Entwurfsansicht öffnen und das zukünftige Unterformular aus dem Navigationsbereich einfach an die gewünschte Stelle ziehen.

Beispieldatenbank: Die Tabellen tblFahrzeuge, tblFahrzeugeSonderausstattungen, tblAusstattungen und das Formular frmFahrzeuge finden Sie unter \Kap_04\Formulare.accdb.

Beispieldatenbank: Die Formulare frmProjektzeiten_Undo und sfmProjektzeiten_Undo finden Sie unter \Kap_04\Formulare.accdb.

Beispieldatenbank: Die Tabelle tblKontakte und das Formular frmSchnellsuchePerKombifeld finden Sie unter \Kap04\Formulare.accdb.

Nächster Abschnitt:

5 Steuerelemente

© 2006-2008 André Minhorst Alle Rechte vorbehalten.