Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Liste per VBA filtern

Begonnen von ulleohl, Februar 27, 2015, 12:17:05

⏪ vorheriges - nächstes ⏩

ulleohl

Hallo,

Ich bin noch relativ neu in der Access-Welt und stehe nun seit mehreren Stunden vor einem Problem:

Ich habe ein Formular, welches mir die Tabelle "Artikelliste" anzeigt. Diese anzuzeigenden Daten sollen aber vorher gefiltert werden, je nachdem wonach der Benutzer sucht. So stehen zur Auswahl "Artikelnummer", "Kategorie", "Unterkategorie", "Lieferant" und noch einige mehr.

Ich habe das Formular mal als Bild angehängt. Die unten zu sehende Liste soll je nach eingegebenen Kriterien gefiltert und aktualisiert werden. Das Aktualisieren und Filtern klappt für ein Kriterium. Ich möchte nun je nachdem welche Felder ausgefüllt sind, danach filtern. Dies über ganz viele If Bedingungen mit passender Abfrage, welche dann an die list.RowSource übergeben wird, kommt nicht in Frage. Mein Ansatz wäre folgender:
Sind z.B. Kategorie, Unterkategorie und Lieferant angegeben, so soll die Original Artikelliste zu erst nach Kategorie gefiltert werden, die daraus sich ergebende neue Liste wird dann nach Unterkategorie gefiltert, und diese wiederum wird dann noch nach Lieferant gefiltert. So könnte ich mit relativ wenig Aufwand alle Fälle Abdecken indem ich zu erst prüfe, ob das jeweilige Feld ausgefüllt ist, und wenn es das ist wird die Liste danach gefilter. Das passiert dann in einer festen Reihenfolge.

Mein Problem bei der Umsetzung ist, dass ich nicht weiß wie ich direkt auf der Liste arbeiten kann bzw. wie ich z.B. das Ergebnis einer Abfrage, dann in VBA zwischenspeichern kann, dort die nächste Abfrage über die temporäre Liste laufen lasse und diese, dann ja im Prinzip zwei Mal gefilterte Liste, wieder zurück an die Liste im Formular gebe.

Ich erwarte nicht, dass hier eine vollständige Lösung geboten wird, mir würde es wahrscheinlich schon reichen, wenn mir jemand erklären würde, wie ich in VBA eine Temporäre Liste/Tabelle erstelle und dann auf dieser weitere Operationen durchführen kann, um diese dann am Ende an die Liste im Formular zu übergeben. 


MaggieMay

Hallo,
ZitatDies über ganz viele If Bedingungen mit passender Abfrage, welche dann an die list.RowSource übergeben wird, kommt nicht in Frage.
was sonst?! Das stufenweise Filtern lässt sich nicht programmieren, das kannst du höchstens über den formularbasierten Filter erreichen.

ZitatIch erwarte nicht, dass hier eine vollständige Lösung geboten wird,
Warum nicht? Man muss das Rad ja nicht immer wieder neu erfinden. ;-)

Schau dir mal das Beispiel zum Thema "1. Suchformular in 10 Minuten..." im Forum office-loesung an, das macht genau das was du suchst.
Freundliche Grüße
MaggieMay

ulleohl

Schon mal vielen Dank für den Tipp mit Suchformular in 10 Minuten.

Habe es jetzt jedoch anders gemacht, indem ich einfach in meiner Suchabfrage mit like anstatt mit = gearbeitet habe und somit nur eine Abfrage schreiben musste. Da meine Tabelle nur ~1000 Datensätze beinhaltet, ist die Performance kein Problem.

HB9876

Hallo,
ich wuerde persoenlich schon auf den von Maggie May genanten Vorschlag eingehen.
Das kann (und wahrscheinlich) wird dir irgendwann eine Menge Kopfschmerzen ersparen.
Der gennante Loesungsweg ist auch relativ einfach umzusetzen.

Ich wuerde dann noch im Formular auf abhaengige kombifelder umstellen, hilfe dazu siehe z.Bsp. hier:
http://www.donkarl.com/faq/FAQ4Formulare.htm#4.36

Mit jeder Antwort komme ich weiter und lerne.<br /><br />Danke!!!