2016-07-13 14 views
1

Ich habe eine Access-Datenbank mit einer Datenbank von Bestellungen und das Hauptformular, das meine Benutzer verwenden, ist eine geteilte Formularansicht mit der Oberseite ist eine nette GUI-Datensatz-Viewer und die Unterseite ist eine Datenblatt-Listenansicht dieser Datensätze .Access Split Form mehrere Filter

Auf dem Formular habe ich eine Textbox, die Benutzer Zahlen eingeben können, um die Bestellnummern zu filer im Datenblatt zu erhalten. Der Code befindet sich unter _Change(), daher aktualisiert er das Datenblatt aktiv mit den übereinstimmenden Bestellnummern.

Die Aufträge haben mehrere Felder wie die folgenden:

Status: Schwebende, offen, geschlossen
Typ: Hersteller, Händler, Vertrag

ich eine Option Gruppe erstellt Benutzern zu ermöglichen, Wählen Sie OPEN und dann nur öffnen Bestellungen oder OPEN & Hersteller nur anzeigen öffnen und Anbieter Bestellungen. Der Code steht unter _Click() und wird mit einer Case-Anweisung und Formularfiltern für jeden Fall erstellt.

Aber mein Problem ist, dass, wenn eine der Optionen ausgewählt ist und ein Benutzer beginnt, eine Bestellnummer einzugeben, der Code für die Suche nach Bestellnummer den Filter ausblendet und den durch die Optionsgruppenauswahl festgelegten Filter ignoriert .

Was wäre die Idee Methode in der Lage zu wählen einen Fall, der die Datensätze ausfiltert, und dann suchen diese Datensätze mit einem Eintrag von der textbox Suche auf der form?

Ich vermute, ich muss den Teil des Codes in meiner Textbox-Suche entfernen, die den Filter ausblendet, aber wollte wissen, ob es eine Idee-Methode, um diese Art von Filter dann suchen.

Vielen Dank.

Update 1:

meinen Code unten hinzugefügt. Dies ist die Combobox/Textbox, mit der Benutzer nach Teilenummern suchen (PARTNO). Sie können einen beliebigen Teil einer Teilenummer eingeben, und der Filter wird bei der Eingabe eines neuen Zeichens automatisch gefiltert.

+0

Um Ihnen zu helfen, müssen wir Ihren vorhandenen Code sehen. Bitte bearbeiten Sie Ihre Frage und fügen Sie sie hinzu. – Andre

+0

Code hinzugefügt. Vielen Dank. – Luna

Antwort

0

Sie benötigen eine separate Funktion, die alle (beide) Filtersteuerelemente betrachtet und daraus den Filter erstellt und anwendet.

Alles von Ihrem _Change Sub mit Ausnahme der letzten zwei Zeilen gehen in diese Funktion, plus der _Click Code aus Ihrer Optionsgruppe.

Die Funktion betrachtet beide Filtersteuerelemente und erstellt einen UND-Filter, wenn beide festgelegt sind.
Es wird von beiden Ereignisprozeduren aufgerufen.

Edit:

Hier ist ein gutes Beispiel für ein Suchformular mit mehreren Filterkontrollen:
http://allenbrowne.com/ser-62.html

In Ihrem Fall, da Sie die Funktion auf cmbPARTNOSEARCH_Change() anrufen, die Sie ergreifen müssen Berücksichtigen Sie, ob die Combobox den Fokus hat (dann verwenden Sie ihre .Text Eigenschaft) oder nicht (dann verwenden Sie ihre .Value).

Sie können dafür Screen.ActiveControl verwenden oder einen Parameter an die Funktion übergeben, um diese Unterscheidung zu treffen.


Randbemerkung: in Ihrem Code haben Sie

ElseIf Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 
    If Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 

die keinen Sinn macht.