Microsoft Office Online
Für Mein Office Online (Was ist das?) registrieren | Anmelden

 
 
Microsoft Office Access
Suchen
Suchen
 
 
 
 
Warnung: Sie haben diese Webseite mit einem nicht unterstützten Browser geöffnet. Diese Webseite wird am besten angezeigt, wenn Sie Microsoft Internet Explorer 6.0 oder höher, Firefox 1.5 oder Netscape Navigator 6.0 oder höher verwenden. Hier finden Sie weitere Informationen über unterstützte Browser.

DruckversionDruckversion Lesezeichen und FreigabeFreigabe
Hinzufügen von benutzerdefinierten Filter- und Suchfunktionen zu einer Seite in Access 2002
 

AnzeigenHinzufügen der Funktion "Gruppenfilter-Steuerelement" zu zwei oder mehr Dropdownlistenfeldern

Ein Gruppenfilter-Steuerelement wird verwendet, um Datensätze abzurufen, die den im Steuerelement ausgewählten Wert enthalten. Allerdings unterstützt eine Datenzugriffsseite nur ein Gruppenfilter-Steuerelement für jede Gruppierungsebene. Wenn Sie auf Werten basierende Datensätze filtern möchten, die in mehreren Listenfeldern ausgewählt wurden, kann dies programmgesteuert erfolgen.

Die folgende Abbildung zeigt eine Datenzugriffsseite mit zwei Dropdownlistenfeldern, die wie Gruppenfilter-Steuerelemente agieren. Die Daten werden erst dann auf der Seite angezeigt, wenn Sie einen Wert in jedem Listenfeld ausgewählt haben.

Datenzugriffsseiten mit zwei Gruppenfilter-Steuerelementen

Wenn Sie beispielsweise Berge, Karin im ersten Listenfeld und Brasilien im zweiten Listenfeld wählen, ruft die Seite alle Aufträge ab, die von Frau Berge nach Brasilien versandt wurden.

Datenzugriffsseiten mit zwei Gruppenfilter-Steuerelementen

Hinzufügen von mehreren Gruppenfilter-Steuerelementen zu einer Seite

  1. Erstellen Sie eine Datenzugriffsseite mit den gewünschten Feldern und Gruppierungsebenen.
  2. Fügen Sie die Filterfelder unbedingt als Dropdownlistenfelder in den Kopfzeilenabschnitt ein.

    Auf der vorstehenden Seite werden die Listenfelder mit den Namen cboEmployee und cboShipCountry bezeichnet.

  3. Legen Sie die Eigenschaften ListRowSource, ListBoundField und ListDisplayField für jedes der Listenfelder fest.

    Legen Sie beispielsweise für das Listenfeld ShipCountry die Option ListRowSource auf Recordset: Orders fest, die Option ListBoundField auf ShipCountry und ListDisplayField auf ShipCountry.

  4. Klicken Sie auf die Leiste im Headerbereich der äußersten Gruppierungsebene, und klicken Sie dann auf Beschriftung.
  5. Deaktivieren Sie die ControlSource-Eigenschaft der Gruppenfilter-Steuerelemente, und verschieben Sie die Listenfelder dann in den Beschriftungsabschnitt.
  6. Um zu verhindern, dass die äußerste Gruppierungsebene Datensätze abruft, bevor die Auswahl getroffen wurde, legen Sie im Fenster Datengliederung die ServerFilter-Eigenschaft des äußersten RecordsetDef-Objekts auf einen Ausdruck fest, der False zurückgibt.

    Wählen Sie beispielsweise den Eintrag Orders RecordsetDef in der Datengliederung, und geben Sie dann 1=0 in das ServerFilter-Eigenschaftsfeld ein.

  7. Entfernen Sie den Datensatznavigationsbereich für die Gruppierungsebene, die die Gruppenfilter-Steuerelemente enthält.

  8. Fügen Sie im DataPageComplete-Ereignis Code hinzu, um den ausgewählten Text in den Listenfeldern zu entfernen und alle anderen Abschnitte der Seite auszublenden.

    Weitere Informationen darüber, wie den Steuerelementen auf einer Seite Code hinzugefügt wird, finden Sie in der Hilfe zu Microsoft Access.

    AnzeigenBeispiel für die DataPageComplete-Ereignisprozedur.

    <SCRIPT language=vbscript event=DataPageComplete(dscei) for=MSODSC> <!-- ' fInited wird verwendet, um sicherzustellen, dass dieser Code nur ausgeführt wird, wenn die Seite das erste Mal geladen wird. If (fInited = FALSE And dscei.DataPage.GroupLevel.RecordSource = "Orders") Then    fInited = TRUE
    
        ' Diese Listenfelder sollen zu Beginn leer sein.    cboEmployee.value = ""    cboShipCountry.value = ""
    
        ' 'Rückgängig machen' verwenden, um den anfänglichen Bereich auszublenden, wenn die Seite geladen wird.      MSODSC.Datapages(0).Undo End If --> </SCRIPT>
    
  9. Rufen Sie im OnChange-Ereignis der Listenfelder die OnFilterComboChange-Unterprozedur auf, mit der das Recordset basierend auf den in den Listenfeldern ausgewählten Werten gefiltert wird.

    Beispielsweise sieht das OnChange-Ereignis für das Listenfeld cboEmployee folgendermaßen aus:

    <SCRIPT language=vbscript event=OnChange for=cboEmployee> <!--    OnFilterComboChange()
    
    --> </SCRIPT>
    
  10. Initialisieren Sie in einem separaten globalen Skriptblock die Variable, die sicherstellt, dass der Code im DataPageComplete-Ereignis nur einmal ausgeführt wird, und definieren Sie dann die OnFilterComboChange-Unterprozedur.

    AnzeigenBeispiel für einen Skriptblock, der die "fInited"-Variable initialisiert und die "OnFilterComboChange"-Unterprozedur definiert

    <SCRIPT language=vbscript>
    
    Dim fInited
    
    fInited=FALSE
    
    Sub OnFilterComboChange() Dim stWhere ' Nichts tun, bis der Benutzer einen Wert aus dem Listenfeld auswählt. If (cboEmployee.value <> "" And cboShipCountry.value <> "") Then    stWhere = "EmployeeID=" & cboEmployee.value & " "    stWhere = stWhere & "AND ShipCountry='" & cboShipCountry.value & "' "
    
        ' Serverfilter für das Orders-Recordset festlegen.    MSODSC.RecordsetDefs.Item("Orders").ServerFilter = stWhere End If End Sub
    

AnzeigenHinzufügen einer Schaltfläche "Suchen" zu einer Datenzugriffsseite

Wenn eine Seite in der Seitenansicht geöffnet ist, können Sie nach Datensätzen filtern, die den ausgewählten Werten entsprechen, indem Sie auf der Symbolleiste Datensatznavigation auf die Schaltfläche Auswahlbasierter Filter klicken. Allerdings enthält die Symbolleiste keine Schaltfläche Suchen, die es Ihnen ermöglicht, das Recordset nach bestimmten Datensätzen zu durchsuchen. Sie können eine eigene Schaltfläche Suchen erstellen, indem Sie der Seite eine Befehlsschaltfläche hinzufügen und dem OnClick-Ereignis der Schaltfläche eine Ereignisprozedur zuordnen.

Die folgende Abbildung zeigt die Datenzugriffsseite Artikel mit der Schaltfläche Artikel suchen.

Datenzugriffsseite mit der Schaltfläche "Suchen"

Wenn Sie auf die Schaltfläche Artikel suchen klicken, zeigt die Seite das Dialogfeld Suchen an. Mit dem Dialogfeld werden Sie aufgefordert, die ID des Artikeldatensatzes einzugeben, den Sie anzeigen möchten. Wenn Sie auf OK klicken, wird der entsprechende Datensatz angezeigt, sofern er im Recordset gefunden werden kann. Andernfalls zeigt die Seite eine Fehlermeldung an.

Hinzufügen einer Schaltfläche "Suchen" zu einer Seite

  1. Öffnen Sie eine Datenzugriffsseite in der Entwurfsansicht.
  2. Vergewissern Sie sich, dass das Tool Steuerelement-Assistent in der Toolbox nicht aktiviert ist. Hiermit wird der Assistent ausgeschaltet.
  3. Klicken Sie in der Toolbox auf das Tool Befehlsschaltfläche Befehlsschaltfläche .
  4. Klicken Sie auf der Datenzugriffsseite auf die Befehlsschaltfläche in dem Kopfzeilenabschnitt, der dem Recordset entspricht, das Sie durchsuchen möchten.
  5. Legen Sie die Eigenschaften der Befehlsschaltfläche fest, um ihr das gewünschte Aussehen zu verleihen.
  6. Fügen Sie im OnClick-Ereignis der Schaltfläche Suchen Code hinzu, um das Recordset zu klonen, um den Benutzer zur Eingabe aufzufordern, um Eingaben seitens des Benutzers zu akzeptieren und um das geklonte Recordset nach dem entsprechenden Datensatz zu durchsuchen.

    Weitere Informationen darüber, wie den Steuerelementen auf einer Seite Code hinzugefügt wird, finden Sie in der Hilfe zu Microsoft Access.

    AnzeigenBeispiel für die OnClick-Ereignisprozedur der Schaltfläche "Suchen"

    <SCRIPT language=vbscript event=onclick for=btnFind> <!--
    
    ' Recordset erstellen.
    
    Dim rs Set rs = MSODSC.DataPages(0).Recordset.Clone On error resume next
    
    ' In dieser Zeile wird davon ausgegangen, dass der gefilterte Wert eine Ganzzahl ist. ' Wenn der Suchwert eine Zeichenfolge ist, eine andere Syntax verwenden. ' Beispielsweise "CustomerID = '" & CStr(InputBox("Gewünschten Kunden eingeben", "Suchen")) & "'" rs.find "ProductID=" & cLng(inputbox("ProductID eingeben","Suchen")) ' Benutzerdefinierte Fehlerbehebung. If (err.number <> 0) Then    Msgbox "Error: " & err.number & " " & err.description,,"Ungültige Suche"    Exit Sub End If ' Überprüfen, ob Suchergebnisse erfolgreich sind. If (rs.bof) or (rs.eof) Then    Msgbox "No Product found",,"Suche beendet"    Exit Sub End If MSODSC.DataPages(0).Recordset.Bookmark = rs.Bookmark --> </SCRIPT>
    

Anmerkung  Wenn Sie VBScript-Blöcke (Visual Basic Scripting Edition) für MSODSC-Ereignisse (Microsoft Office Data Source Control) erstellen, müssen Sie dem Ereignisnamen wie folgt einen Parameter hinzufügen:


<SCRIPT LANGUAGE=vbscript FOR=MSODSC EVENT=Current(oEventInfo)>

Der oEventInfo-Parameter wird verwendet, um spezifische Informationen über das Ereignis an das Skript zurückzugeben. Sie müssen diesen Parameter ungeachtet der Tatsache hinzufügen, ob er verwendet werden soll, denn ohne den Parameter funktioniert das Skript nicht.

Anzeige