MS Access Abfrage mit Formular filtern

mchlrx

Neuer Benutzer
Beiträge
2
Hallo zusammen,

ich bin ein ziemlicher Access Amateur und habe eine Frage.

Ich habe eine Datenbank zur Planung und Sammlung von Arbeitszeiten von Mitarbeitern für verschiedene Projekte pro Kalenderwoche/Monat erstellt. Diese funktioniert nach langem abmühen auch soweit und den Vorstellungen entsprechend.

Mein Problem ist nun, dass die Filteroptionen bei den Abfragen für meinen Chef unübersichtlich sind, weshalb ich nun versuche, die Abfrage mit einem Formular zu filtern. Dies ist an sich kein Problem, wenn ich in einem Formular nur nach einer Kategorie (z.B. Mitarbeiter ID) filtern möchte: Bei Kriterien ([Formulare]![Filterformular]![MitarbeiterID]) eingeben.

Allerdings fangen die Probleme an, wenn ich in einem Formular die Option haben möchte, nach verschiedenen Kategorien filtern zu können, und nicht immer nach allem filtern zu müssen. Wenn ich ein Kombinationsfeld (z.B. Projekt ID) nicht ausfülle, ist die ausgeführte Abfrage natürlich leer, weil es die leere Projekt ID nicht findet.

Ich habe nun versucht, mit einer Wenn Formel zu arbeiten: Wenn([Formulare]![Filterformular]![MitarbeiterID]="" ;">0";[Formulare]![Filterformular]![MitarbeiterID]). Idee: wenn das Feld leer ist, sollen alle MitarbeiterIDs ausgewählt werden.

Dies funktioniert wieder nur, wenn ich bei allen Kombinationsfeldern etwas eintrage. Wenn ich eins leer lasse, kommt weiter eine leere Abfrage.

Ich hoffe, dass ihr mir bei diesem Problem weiterhelfen könnt, und wünsche Euch allen ein frohes neues Jahr!
 
Werbung:
Ich bin auch ein Access Amateur, ich nutze das nicht. Aber ich würde annehmen, das deine Filterbedinungen an irgendeiner Stelle in den WHERE-Teil eines SQL Selects übernommen werden, kann man diesen Select bearbeiten? Auch dort könntest du mit der passenden Zusammensetzung das Problem umgehen.

Angenommen deine Variable %ProjektID% führt zu so einer Abfrage
Code:
SELECT * FROM tabelle WHERE ProjektID = %ProjektID%

Dann ließe sich das umformulieren auf
Code:
SELECT * FROM tabelle WHERE ( ProjektID = %ProjektID% OR %ProjektID% IS NULL OR %ProjektID% = 0 )
 
Ich vermute, auch in Access gibt es keine Automatik, um Suchfelder elegant (automatisch) in eine Abfrage zu übertragen.
Man muss sich wahrscheinlich die Mühe machen, alle verwendeten Kriterien einzeln zu einer WHERE Clause zusammenzubauen.
Wenn die Faulheit siegt und man eine statische WHERE Clause behalten möchte, könnte man noch als Trick nutzen, ein leeres Suchfeld stumpf durch den Ausdruck des zugehörigen Feldnamens zu ersetzen.
 
Werbung:
Vielen Dank für die Tipps, da ich aber auch keine Ahnung von SQL habe hab ich das alles leider nicht verstanden 😅.
Ich habe das Problem jetzt so gelöst:

Wenn([Formulare]![Filterformular]![MitarbeiterID] Ist Null;[Mitarbeiter]![MitarbeiterID];[Formulare]![Filterformular]![MitarbeierID]).

Übersetzt: Wenn im Filterformular keine MitarbeiterID ausgewählt ist, werden alle MitarbeiterID Werte aus der Mitarbeitertabelle eingefügt. Wenn aber ein Wert ausgewählt ist, wird nur dieser Wert eingefügt.

Vielleicht kann das ja mal jemandem in Zukunft helfen :)
 
Zurück
Oben