Access Abfrage: Filter nutzen aber auch leere Felder anzeigen

Hallo Leute!

Ich brauche mal wieder Hilfe. Ich habe eine Access Datenbank. In dieser gibt es eine Abfrage die Werte aus einer Tabelle entnimmt. In dieser Abfrage sind auch Kriterien enthalten
(And ((admin_uebersicht_montage.beendet) Like „*“ & Formulare!frm_admin!opt_beendet_tf_mon.Value & „*“) So sehen die Kriterien aus. Sie beziehen sich auf Textfelder in einem Formular. Jedoch habe ich nun dass Problem, wenn ein Feld leer ist, wird es nicht angezeigt. Gibt es eine möglich kein den Filter so auszufüllen, dass er, wenn ausgefüllt nach dem gesuchten Filtert und sonst alles anzeigt. Mit Alles meine ich in dem fall dann Alle inklusive leerer Felder?

Ich hoffe ihr könnt mir helfen.

Kannst du ein bischen ausführlicher werden?

Problem könnte eventuell folgendes sein: Wenn dein Formularfeld leer ist, kann Access unter Umständen den Ausdruck nicht korrekt verknüpfen. Den Leer-Fall kann man mit der Funktion NZ(Feldbezug;Wenn-Leer-Wert) abfangen. Wenn du mit VBA arbeitest, dann bitte statt Semikolon das Komma nutzen. Im Beispiel unten habe ich das Komma eingesetzt.

(And ((admin_uebersicht_montage.beendet) Like „*“ & nz(Formulare!frm_admin!opt_beendet_tf_mon.Value,"" & „*“)

Wenn das nicht hilft, schildere mal den Vorgang ausführlicher. Was enthält den admin_uebersicht_montage.beendet (Datentyp)

EP

Es läuft direkt über SQL in einer Abfrage. In dem Feld steht ein Datum. Es ist eine Bauteilübersicht. Und wenn das Bauteil angelegt wurde, aber das Datum fehlt wird es in dem Formular nicht angezeigt, weil das Datumsfeld leer ist.
Und ich dachte, dass es vielleicht eine Formulierung gibt, die es ermöglicht auch leere Felder zu Filtern. Also dass diese trotzdem angezeigt werden, bis man ein Kriterium eingibt.

Du könntest ein eine OR x = „“ Bedingung hinzufügen.
Irgendiwe so:

(And (
(((admin_uebersicht_montage.beendet) Like „*“ OR admin_uebersicht_montage.beendet = „“) & (Formulare!frm_admin!opt_beendet_tf_mon.Value & „*“ OR Formulare!frm_admin!opt_beendet_tf_mon.Value = „“)) …

Das hatte ich mir auch überlegt. Aber sobald ich dann ein Kriterium eingebe, zeigt mir die Abfrage dann ja die Datensätze mit meinem Kriterium UND auch die die leer sind.

Ich habe Access zu lange schon nicht mehr programmiert, aber das sieht nicht so kompliziert aus. Evtl. reicht an der richtigen Stelle ein Oder bzw. | unterbringen, also in etwa:

(bedingung1 & bedingung2) | bedingung3

bedingung3 wäre dann irgendwas mut blah.Value = „“, also leerer String. Möglich, dass es auch das Attribut „empty“ gibt, also:
(bedingung1 & bedingung2) | blah.empty

Falls Dir das nicht weiter hilft: Frag besser jemand anders :wink:

Variante 1
Wenn du mit SQL arbeitest, müsstest du ja hier eigentlich eine gespeicherte Prozedur verwenden, wo du den Wert des Formularfeldes als Parameter übergibst. In der gespeicherten Prozedure kann man in Abhängigkeit von dem übergebenen Wert unterschiedliche SQL-Auswertungen laufen lassen.

Variante 2
In SQL gibt es auch die Möglichkeit, einen Wert auf Null zu prüfen (Tabellenfeld Is Null).
Du müsstest deine Bedingungen dann so formulieren:
tabfeld_Bauteildatum = Formularfeldwert or tabfeld_Bauteildatum is Null

In dem Fall verstehe ich die Frage nicht. Ich dachte, es sollen eben alle kommen, auch die die leer sind.
Kannst du dein Problem genauer beschreiben?

Ich möchte, wenn ich nichts in mein Filterfeld eintrage alle sehen (auch die nicht ausgefüllten) und wenn ich z.B. 21.08.2013 eingebe, sollen nur die Datensätze mit dem Wert angezeigt werden.

Hallo, ich würde als erstes zum Testen mit der direkten Abfrage auf „NULL“ prüfen. Wenn das klappt, dann die eiugetliche Abfrage nach NULL als „or“-Bedingung explizit in die Abfrage mit aufnehmen

Gruß, Christian