Discussion:
Abfrage mit WENN-Kriterium und NULL-Werten
(zu alt für eine Antwort)
Bjoern
2006-06-16 06:45:01 UTC
Permalink
Moin!

Access 2003

Ich habe folgendes Problem:
Stark vereinfacht formuliert möchte ich in einer Abfrage mittels Kriterium
bestimmte Daten aus einer Tabelle auslesen.
Das Kriterium steht in einem Kombinationsfeld eines Formulars, und soll
sinngemäß so aussehen:
"WENN in dem Kombinationsfeld nichts drinsteht, DANN hol alle Datensätze
(auch Null-Werte) aus der Tabelle, SONST nimm den Wert des Kombiantionsfeldes
als Kriterium"

Also sowas:
"Wie Wenn(IstNull([InhaltKombinationsfeld]);"*";[InhaltKombinationsfeld])"

Das funktioniert auch bestens, allerdings werden Felder unterschlagen, die
keine Werte enthalten.

Ich habe daher Folgendes versucht:
"Wie Wenn(IstNull([InhaltKombinationsfeld]);wie "*" ODER Ist
Null;[InhaltKombinationsfeld])"
oder abgewandelt:
"Wie Wenn(IstNull([InhaltKombinationsfeld]);"*" ODER Ist
Null;[InhaltKombinationsfeld])"

Das haut aber nicht hin, er findet dann gar nichts mehr. Das ist merkwürdig,
denn wenn ich als Kriterium "wie "*" ODER Ist Null" separat verwende, also
genau das, was im 'Dann-Teil' der Wenn-Funktion steht, dann funktioniert es.

Wie muss man das denn machen, damit auch leere Felder gefunden werden?

Danke für Eure Hilfe und viele Grüße,

Björn
Gunter Avenius
2006-06-16 06:55:42 UTC
Permalink
Hallo Bjoern,
Post by Bjoern
Stark vereinfacht formuliert möchte ich in einer Abfrage mittels
Kriterium bestimmte Daten aus einer Tabelle auslesen.
Das Kriterium steht in einem Kombinationsfeld eines Formulars, und
"WENN in dem Kombinationsfeld nichts drinsteht, DANN hol alle
Datensätze (auch Null-Werte) aus der Tabelle, SONST nimm den Wert
des Kombiantionsfeldes als Kriterium"
"Wie
Wenn(IstNull([InhaltKombinationsfeld]);"*";[InhaltKombinationsfeld])"
Das funktioniert auch bestens, allerdings werden Felder
unterschlagen, die keine Werte enthalten.
"Wie Wenn(IstNull([InhaltKombinationsfeld]);wie "*" ODER Ist
Null;[InhaltKombinationsfeld])"
"Wie Wenn(IstNull([InhaltKombinationsfeld]);"*" ODER Ist
Null;[InhaltKombinationsfeld])"
Das haut aber nicht hin, er findet dann gar nichts mehr. Das ist
merkwürdig, denn wenn ich als Kriterium "wie "*" ODER Ist Null"
separat verwende, also genau das, was im 'Dann-Teil' der
Wenn-Funktion steht, dann funktioniert es.
Access-FAQ Punkt 3.14 geht darauf ein.
--
Gruß
Gunter
_________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com
Henry Habermacher [MVP Access]
2006-06-16 07:05:15 UTC
Permalink
Hallo Bjoern

Bitte verwende hier den vollen Realnamen
-----Original Message-----
Stark vereinfacht formuliert möchte ich in einer Abfrage
mittels Kriterium
bestimmte Daten aus einer Tabelle auslesen.
Das Kriterium steht in einem Kombinationsfeld eines
Formulars, und soll
"WENN in dem Kombinationsfeld nichts drinsteht, DANN hol alle
Datensätze
(auch Null-Werte) aus der Tabelle, SONST nimm den Wert des
Kombiantionsfeldes
als Kriterium"
"Wie
Wenn(IstNull([InhaltKombinationsfeld]);"*";[InhaltKombinationsfeld])"
Das funktioniert auch bestens, allerdings werden Felder
unterschlagen, die
keine Werte enthalten.
"Wie Wenn(IstNull([InhaltKombinationsfeld]);wie "*" ODER Ist
Null;[InhaltKombinationsfeld])"
"Wie Wenn(IstNull([InhaltKombinationsfeld]);"*" ODER Ist
Null;[InhaltKombinationsfeld])"
Das haut aber nicht hin, er findet dann gar nichts mehr. Das
ist merkwürdig,
denn wenn ich als Kriterium "wie "*" ODER Ist Null" separat
verwende, also
genau das, was im 'Dann-Teil' der Wenn-Funktion steht, dann
funktioniert es.
Wie muss man das denn machen, damit auch leere Felder
gefunden werden?
Leg ein neues Feld in der Abfrage an, welches Suchfeld heisst und
Nz(DeinFeld; "") enthält.
Dann machst Du damit das, was Du bereits oben gemacht hast.

Ich bevorzuge allerdings die Methode ein Feld "(alle)" in das
Kombinationsfeld mit aufzunehmen. Das kannst Du per Union Abfrage
machen. Details findest Du in der FAQ (www.donkarl.com).

Gruss
Henry
Henry Habermacher [MVP Access]
2006-06-16 07:07:09 UTC
Permalink
Hallo Bjoern

Bitte verwende hier den vollen Realnamen
-----Original Message-----
Stark vereinfacht formuliert möchte ich in einer Abfrage
mittels Kriterium
bestimmte Daten aus einer Tabelle auslesen.
Das Kriterium steht in einem Kombinationsfeld eines
Formulars, und soll
"WENN in dem Kombinationsfeld nichts drinsteht, DANN hol alle
Datensätze
(auch Null-Werte) aus der Tabelle, SONST nimm den Wert des
Kombiantionsfeldes
als Kriterium"
"Wie
Wenn(IstNull([InhaltKombinationsfeld]);"*";[InhaltKombinationsfeld])"
Das funktioniert auch bestens, allerdings werden Felder
unterschlagen, die
keine Werte enthalten.
"Wie Wenn(IstNull([InhaltKombinationsfeld]);wie "*" ODER Ist
Null;[InhaltKombinationsfeld])"
"Wie Wenn(IstNull([InhaltKombinationsfeld]);"*" ODER Ist
Null;[InhaltKombinationsfeld])"
Das haut aber nicht hin, er findet dann gar nichts mehr. Das
ist merkwürdig,
denn wenn ich als Kriterium "wie "*" ODER Ist Null" separat
verwende, also
genau das, was im 'Dann-Teil' der Wenn-Funktion steht, dann
funktioniert es.
Wie muss man das denn machen, damit auch leere Felder
gefunden werden?
Leg ein neues Feld in der Abfrage an, welches Suchfeld heisst und
Nz(DeinFeld; "") enthält.
Dann machst Du damit das, was Du bereits oben gemacht hast.

Ich bevorzuge allerdings die Methode ein Feld "(alle)" in das
Kombinationsfeld mit aufzunehmen. Das kannst Du per Union Abfrage
machen. Details findest Du in der FAQ (www.donkarl.com).

Gruss
Henry

Loading...