Supportnet / Forum / Datenbanken
Felder mit Null-Wert finden!
Frage
Hallo,
ich benötige Hilfe.
Kann mir jemand sagen, wie ich in einer Abfrage ein Kriterium so definieren kann, dass sowohl Felder mit beliebigem Inhalt als auch Felder mit Null-Wert angezeigt werden!!
Danke schon mal im Vorraus
Flo
Antwort 1 von Sir_Hilly
Probier mal:
=NULL oder <>""
=NULL oder <>""
Antwort 2 von Koebi
Grüezi Flo
Als Kriterium in der Entwurfsansicht:
Wie "*" Oder Ist Null
Gruss
Köbi
Als Kriterium in der Entwurfsansicht:
Wie "*" Oder Ist Null
Gruss
Köbi
Antwort 3 von Knubbel
Hi Flo!
Schau mal in der Online-Hilfe unter Nz nach.
mfg Knubbel
Schau mal in der Online-Hilfe unter Nz nach.
Zitat:
Syntax
Nz(Variant[, WertWennNull])
Die Funktion Nz hat die folgenden Argumente.
Argument Beschreibung
Variant Eine Variable des Datentyps Variant.
WertWennNull Optional (wenn nicht in einer Abfrage verwendet). Eine Variable des Datentyps Variant, die einen Wert liefert, der zurückgegeben wird, falls das Argument Variant den Wert Null hat. Dieses Argument ermöglicht es Ihnen, einen Wert zurückzugeben, der ungleich 0 bzw. keine leere Zeichenfolge ist. Wenn Sie in einem Ausdruck in einer Abfrage die Nz-Funktion ohne das Argument WertWennNull verwenden, werden die Ergebnisse in den Feldern, die Nullwerte enthalten leer sein.I
Falls der Wert des Arguments Variant gleich Null ist, gibt die Funktion Nz die Zahl Null oder eine leere Zeichenfolge zurück, je nachdem, ob der Kontext anzeigt, daß der Wert eine Zahl oder eine Zeichenfolge sein soll. Wenn das optionale Argument WertWennNull angegeben ist, gibt die Funktion Nz den durch dieses Argument festgelegten Wert zurück, wenn das Argument Variant den Wert Null hat.
Wenn der Wert von Variant ungleich Null ist, gibt die Funktion Nz den Wert von Variant zurück.
Syntax
Nz(Variant[, WertWennNull])
Die Funktion Nz hat die folgenden Argumente.
Argument Beschreibung
Variant Eine Variable des Datentyps Variant.
WertWennNull Optional (wenn nicht in einer Abfrage verwendet). Eine Variable des Datentyps Variant, die einen Wert liefert, der zurückgegeben wird, falls das Argument Variant den Wert Null hat. Dieses Argument ermöglicht es Ihnen, einen Wert zurückzugeben, der ungleich 0 bzw. keine leere Zeichenfolge ist. Wenn Sie in einem Ausdruck in einer Abfrage die Nz-Funktion ohne das Argument WertWennNull verwenden, werden die Ergebnisse in den Feldern, die Nullwerte enthalten leer sein.I
Falls der Wert des Arguments Variant gleich Null ist, gibt die Funktion Nz die Zahl Null oder eine leere Zeichenfolge zurück, je nachdem, ob der Kontext anzeigt, daß der Wert eine Zahl oder eine Zeichenfolge sein soll. Wenn das optionale Argument WertWennNull angegeben ist, gibt die Funktion Nz den durch dieses Argument festgelegten Wert zurück, wenn das Argument Variant den Wert Null hat.
Wenn der Wert von Variant ungleich Null ist, gibt die Funktion Nz den Wert von Variant zurück.
mfg Knubbel
Antwort 4 von Viper311
Danke für eure Hilfe, das funktioniert auch, mein Problem ist nur, ich habe ein noch komplexeres Kriterium und damit funktioniert es nicht.
Das Kriterium lautet:
Wie Wenn([Formulare].[Suchen].[Feld1] Ist Null; Wie "*" Oder Ist Null;[Formulare].[Suchen].[Feld1])
Und so funktioniert es nicht mehr.
Könnt ihr mir sagen, wo der Fehler liegt, und wie es richtig sein muss.
Danke nochmal für die prompte Hilfe!!
Flo
Das Kriterium lautet:
Wie Wenn([Formulare].[Suchen].[Feld1] Ist Null; Wie "*" Oder Ist Null;[Formulare].[Suchen].[Feld1])
Und so funktioniert es nicht mehr.
Könnt ihr mir sagen, wo der Fehler liegt, und wie es richtig sein muss.
Danke nochmal für die prompte Hilfe!!
Flo
Antwort 5 von Koebi
Hallo Flo
Ich verstehe Deine Wenn-Bedingung im Kriterium nicht recht. Aber versuch es einmal so (ohne Wie und Wenn):
[Formulare]![Suchen]![Feld1] Oder Ist Null
Gruss
Köbi
Ich verstehe Deine Wenn-Bedingung im Kriterium nicht recht. Aber versuch es einmal so (ohne Wie und Wenn):
[Formulare]![Suchen]![Feld1] Oder Ist Null
Gruss
Köbi
Antwort 6 von Viper311
Meine Wenn Bedingung brauche ich, weil dass eine Suchfunktion ist.
Im Feld1 im Formular Suchen wird ein Wert eingegeben.
Nach diesem wird dann gefiltert.
Wird aber kein Wert eingegeben, sollen alle Datensätze angezeigt werden. Und da habe ich welche dabei, die einen Null-Wert haben. Ohne die Null-Wert-Bedingung funktoniert das Kriterium auch, aber dann liefert er nur die Datensätze mit Inhalt. Sobald ich die "Oder Ist Null" Bedingung hinzufüge, findet er keinen Datensatz mehr!!
Habt ihr noch ne Idee??
Flo
Im Feld1 im Formular Suchen wird ein Wert eingegeben.
Nach diesem wird dann gefiltert.
Wird aber kein Wert eingegeben, sollen alle Datensätze angezeigt werden. Und da habe ich welche dabei, die einen Null-Wert haben. Ohne die Null-Wert-Bedingung funktoniert das Kriterium auch, aber dann liefert er nur die Datensätze mit Inhalt. Sobald ich die "Oder Ist Null" Bedingung hinzufüge, findet er keinen Datensatz mehr!!
Habt ihr noch ne Idee??
Flo
Antwort 7 von Koebi
Hallo Flo
Mit diesem Kriterium erhältst Du alle DS mit dem genauen Wortlaut im Suchfeld und jene ohne einen Inhalt. Wird im Suchfeld nichts eingegeben, werden nur jene ohne Inhalt angezeigt.
[Formulare]![Suchen]![Feld1] Oder Ist Null
Mit diesem Kriterium erhältst Du alle DS mit dem Wortlaut im Suchfeld und jene ohne einen Inhalt. Dabei kann der Wortlaut im Suchfeld ein oder mehrere Wörter oder nur einzelne Buchstaben sein. Wird im Suchfeld nichts eingegeben, werden alle DS angezeigt.
Wie "*" & [formulare]![suchen]![Feld1] & "*" Oder Ist Null
Die Bedingung, die Du suchst, habe ich auch schon gesucht (und nicht gefunden). Ich habe mir schon so beholfen, dass das betreffende Feld in der Tabelle einen Eingabezwang hat und ein Standardwert (z.B. *(übrige)) vorgegeben ist. So ist das Problem mit den leeren Feldern gelöst, unelegant zwar aber einigermassen praktikabel.
Gruss
Köbi
Mit diesem Kriterium erhältst Du alle DS mit dem genauen Wortlaut im Suchfeld und jene ohne einen Inhalt. Wird im Suchfeld nichts eingegeben, werden nur jene ohne Inhalt angezeigt.
[Formulare]![Suchen]![Feld1] Oder Ist Null
Mit diesem Kriterium erhältst Du alle DS mit dem Wortlaut im Suchfeld und jene ohne einen Inhalt. Dabei kann der Wortlaut im Suchfeld ein oder mehrere Wörter oder nur einzelne Buchstaben sein. Wird im Suchfeld nichts eingegeben, werden alle DS angezeigt.
Wie "*" & [formulare]![suchen]![Feld1] & "*" Oder Ist Null
Die Bedingung, die Du suchst, habe ich auch schon gesucht (und nicht gefunden). Ich habe mir schon so beholfen, dass das betreffende Feld in der Tabelle einen Eingabezwang hat und ein Standardwert (z.B. *(übrige)) vorgegeben ist. So ist das Problem mit den leeren Feldern gelöst, unelegant zwar aber einigermassen praktikabel.
Gruss
Köbi
Antwort 8 von Knubbel
Hi Flo!
Hier mein Lösungsvorschlag:
in die Kriterienzeile eingeben
und in die "oder"-Zeile
eingeben.
Ich habs probiert. Wenn kein Eintrag im Suchfeld vorhanden, werden alle Datensätze angezeigt (auch Nullwerte). Bei Eintrag im Suchfeld (auch Fragmente) wird hiernach gefiltert. Ebenfalls werden die Datensätze mit leerem Feld angezeigt.
mfg Knubbel
Hier mein Lösungsvorschlag:
in die Kriterienzeile eingeben
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;"*";"*" & [Formulare]![Suchen]![Feld1] & "*"))und in die "oder"-Zeile
ist Nulleingeben.
Ich habs probiert. Wenn kein Eintrag im Suchfeld vorhanden, werden alle Datensätze angezeigt (auch Nullwerte). Bei Eintrag im Suchfeld (auch Fragmente) wird hiernach gefiltert. Ebenfalls werden die Datensätze mit leerem Feld angezeigt.
mfg Knubbel
Antwort 9 von Viper311
Danke für die vielen Antworten!
Leider löst das mein Problem nur teilweise. Denn ich habe meiner Tabelle mehrere Spalten, in denen Null-Felder enthalten sind, und diese sollen nur angezeigt werden, wenn im Eingabefeld nichts eingetragen wird. Sobald eine Eingabe erfolgt, sollen diese Felder nicht mehr angezeigt werden!!
Falls ihr noch Ideen habt, wäre ich euch sehr dankbar, trotzdem schon mal dickes Dankeschön für die restlichen Hilfen!!
Flo
Leider löst das mein Problem nur teilweise. Denn ich habe meiner Tabelle mehrere Spalten, in denen Null-Felder enthalten sind, und diese sollen nur angezeigt werden, wenn im Eingabefeld nichts eingetragen wird. Sobald eine Eingabe erfolgt, sollen diese Felder nicht mehr angezeigt werden!!
Falls ihr noch Ideen habt, wäre ich euch sehr dankbar, trotzdem schon mal dickes Dankeschön für die restlichen Hilfen!!
Flo
Antwort 10 von Koebi
Hallo Flo
Mein letzter Versuch:
Erstelle in der Abfrage folgendes zusätzliche Feld:
Nz([Feld1];0)
Damit werden die Null-Werte aus Feld1 hier zu 0 umgewandelt.
Als Kriterium gibst Du bei dieser Spalte ein:
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;Nz([Dein_Tabellenname].[Feld1];0);"*" & [Formulare]![Suchen]![Feld1] & "*"))
Gruss
Köbi
Mein letzter Versuch:
Erstelle in der Abfrage folgendes zusätzliche Feld:
Nz([Feld1];0)
Damit werden die Null-Werte aus Feld1 hier zu 0 umgewandelt.
Als Kriterium gibst Du bei dieser Spalte ein:
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;Nz([Dein_Tabellenname].[Feld1];0);"*" & [Formulare]![Suchen]![Feld1] & "*"))
Gruss
Köbi
Antwort 11 von Knubbel
Hi Flo!
Sag doch mal bitte, was Du von uns für eine Hilfe erwartest.
Wenn ich mir die obenstehenden Beiträge anschaue, habe ich das Gefühl, dass viele Dir helfen wollen. Aber, wenn Deine Vorstellungen von Beitrag zu Beitrag immer andere werden, werden wir kaum zu einem Ergebnis kommen.
Kläre uns doch mal auf, was Du wirklich haben möchtest.
mfg Knubbel
Sag doch mal bitte, was Du von uns für eine Hilfe erwartest.
Wenn ich mir die obenstehenden Beiträge anschaue, habe ich das Gefühl, dass viele Dir helfen wollen. Aber, wenn Deine Vorstellungen von Beitrag zu Beitrag immer andere werden, werden wir kaum zu einem Ergebnis kommen.
Kläre uns doch mal auf, was Du wirklich haben möchtest.
mfg Knubbel
Antwort 12 von Viper311
Hey Knubbel,
sorry, wenn ich mich unverständlich ausgedrückt habe.
Also mein Problem ist folgendes:
Ich habe eine Tabelle mit mehreren Spalten, in denen sich auch Felder mit Null-Werten befinden.
Desweiteren habe ich ein Formular zum Suchen bestimmter Datensätze angelegt, in dem nur einfache Felder stehen.
Mit Hilfe dieses Formulares möchte ich jetzt in meiner Tabelle beliebige DS suchen.
Wenn ein Suchfeld leer ist, soll Access alle DS anzeigen, auch die mit Null-Wert. Erfolgt eine Eingabe, sollen nur die entsprechenden DS angezeigt werden, nicht aber die mit Null-Wert.
Dazu habe ich die Wenn-Funktion aufgebaut!
Die funktioniert aber nicht, weil sobald ich die die "Ist Null" Bedingung einfüge, findet Access keinen einzigen DS mehr.
Mit den letzten Beiträgen funktioniert es jetzt schon so weit, dass wenn keine Eingabe erfolgt, alle DS angezeigt werden!
Wird aber eine Eigabe gemacht, werden sowohl die gefilterten als auch die DS mit Null-Wert angezeigt!
Wenn es euch noch gelingen würde, diese DS rauszukriegen, wäre ich euch sehr dankbar!
Ich hoffe, das war jetzt verständlicher.
Danke
Flo
sorry, wenn ich mich unverständlich ausgedrückt habe.
Also mein Problem ist folgendes:
Ich habe eine Tabelle mit mehreren Spalten, in denen sich auch Felder mit Null-Werten befinden.
Desweiteren habe ich ein Formular zum Suchen bestimmter Datensätze angelegt, in dem nur einfache Felder stehen.
Mit Hilfe dieses Formulares möchte ich jetzt in meiner Tabelle beliebige DS suchen.
Wenn ein Suchfeld leer ist, soll Access alle DS anzeigen, auch die mit Null-Wert. Erfolgt eine Eingabe, sollen nur die entsprechenden DS angezeigt werden, nicht aber die mit Null-Wert.
Dazu habe ich die Wenn-Funktion aufgebaut!
Die funktioniert aber nicht, weil sobald ich die die "Ist Null" Bedingung einfüge, findet Access keinen einzigen DS mehr.
Mit den letzten Beiträgen funktioniert es jetzt schon so weit, dass wenn keine Eingabe erfolgt, alle DS angezeigt werden!
Wird aber eine Eigabe gemacht, werden sowohl die gefilterten als auch die DS mit Null-Wert angezeigt!
Wenn es euch noch gelingen würde, diese DS rauszukriegen, wäre ich euch sehr dankbar!
Ich hoffe, das war jetzt verständlicher.
Danke
Flo
Antwort 13 von Koebi
Hallo Flo
Was Du möchtest, ist eine Filter mit den Kriterien UND, ODER und NOT. Auf einfache Art und Weise mit den Kriterien im Abfrageentwurf bringst Du das über mehrere Spalten hinweg kaum fertig. Mir mindestens geht die Übersicht nach zwei bis 3 Spalten verloren.
Ich nehme an, Du brauchst das Ganze für eine Abfrage. Wenn es nur um die Anzeige in einem Formular geht (z.B. auch Endlosformular) könntest Du ja am einfachsten den formularbasierten oder den auswahlbasierten Filter verwenden.
Andernfalls, wieviele Spalten sollen denn für den Filter verwendet werden? Und hast Du es schon einmal mit der BuildCriteria-Methode versucht (siehe Online-Hilfe)?
Gruss
Köbi
Was Du möchtest, ist eine Filter mit den Kriterien UND, ODER und NOT. Auf einfache Art und Weise mit den Kriterien im Abfrageentwurf bringst Du das über mehrere Spalten hinweg kaum fertig. Mir mindestens geht die Übersicht nach zwei bis 3 Spalten verloren.
Ich nehme an, Du brauchst das Ganze für eine Abfrage. Wenn es nur um die Anzeige in einem Formular geht (z.B. auch Endlosformular) könntest Du ja am einfachsten den formularbasierten oder den auswahlbasierten Filter verwenden.
Andernfalls, wieviele Spalten sollen denn für den Filter verwendet werden? Und hast Du es schon einmal mit der BuildCriteria-Methode versucht (siehe Online-Hilfe)?
Gruss
Köbi
Antwort 14 von Knubbel
Hi Flo!
Nochmal, damit ich Dein Problem richtig verstanden habe:
1) Wenn Du im Suchfeld nichts eingegeben hast, möchtest Du alle Datensätze, incl. Null-Werte, haben
2) Wenn Du im Suchfeld eine Eingabe gemacht hast, möchtest Du hiernach filtern, und alle Datensätze, ohne Null-Werte, haben.
Wenn das so richtig verstanden ist, habe ich auch kein geschachteltes Kriterium "bauen" können, was funktioniert.
Dennoch mein Lösungsvorschlag zu diesem Problem:
Ich habe 2 Abfragen gestaltet:
1) Alle Datensätze, incl. Null-Werte
"nach leeren Feldern suchen", mit dem Kriterium
[Code]
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;"*";"*" & [Formulare]![Suchen]![Feld1] & "*")) Oder Ist Null
2) Nach Eingabewerten filtern, ohne Null-Werte
"nach gefüllten Feldern suchen", mit dem Kriterium
Im Formular "Suchen" habe ich einen Button "suchen" angelegt, bei dessen klick das Makro "suchen" aufgerufen wird.
Makro "suchen"
Bedingung ## Aktion
[Formulare]![suchen]![Feld1] Ist Null ## öffnen Abfrage / nach leeren Feldern suchen
... ## stopMakro
## öffnen Abfrage / nach gefüllten Feldern suchen
Hiermit erhalte ich die o.g. Wunschergebnisse.
Wie dieses Problem gleichzeitig auf mehrere Tabellenspalten anzuwenden ist, weiss ich auch nicht, aber hierfür gibt es sicher auch eine Lösung.
mfg Knubbel
Nochmal, damit ich Dein Problem richtig verstanden habe:
1) Wenn Du im Suchfeld nichts eingegeben hast, möchtest Du alle Datensätze, incl. Null-Werte, haben
2) Wenn Du im Suchfeld eine Eingabe gemacht hast, möchtest Du hiernach filtern, und alle Datensätze, ohne Null-Werte, haben.
Wenn das so richtig verstanden ist, habe ich auch kein geschachteltes Kriterium "bauen" können, was funktioniert.
Dennoch mein Lösungsvorschlag zu diesem Problem:
Ich habe 2 Abfragen gestaltet:
1) Alle Datensätze, incl. Null-Werte
"nach leeren Feldern suchen", mit dem Kriterium
[Code]
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;"*";"*" & [Formulare]![Suchen]![Feld1] & "*")) Oder Ist Null
2) Nach Eingabewerten filtern, ohne Null-Werte
"nach gefüllten Feldern suchen", mit dem Kriterium
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;"*";"*" & [Formulare]![Suchen]![Feld1] & "*"))
Im Formular "Suchen" habe ich einen Button "suchen" angelegt, bei dessen klick das Makro "suchen" aufgerufen wird.
Makro "suchen"
Bedingung ## Aktion
[Formulare]![suchen]![Feld1] Ist Null ## öffnen Abfrage / nach leeren Feldern suchen
... ## stopMakro
## öffnen Abfrage / nach gefüllten Feldern suchen
Hiermit erhalte ich die o.g. Wunschergebnisse.
Wie dieses Problem gleichzeitig auf mehrere Tabellenspalten anzuwenden ist, weiss ich auch nicht, aber hierfür gibt es sicher auch eine Lösung.
mfg Knubbel
Antwort 15 von Knubbel
Hi Flo!
Sorry
Die Abfrage nach allen Datensätzen - wenn keine Eingabe gemacht wurde -funktioniert natürlich auch ohne ein Kriterium.
Sorry
Die Abfrage nach allen Datensätzen - wenn keine Eingabe gemacht wurde -funktioniert natürlich auch ohne ein Kriterium.
Antwort 16 von Heinzelmännchen
Hey Knubbel,
Du krauchst auch überall rum.
Du krauchst auch überall rum.
Antwort 17 von Knubbel
Hi Flo!
Sorry, sorry
Bei Verwendung des Makros funktioniert natürlich die 2. Abfrage auch viel einfacher:
Wie ("*" & [Formulare]![Suchen]![Feld1] & "*")
Hier zeigt sich wieder, durch erstmals falsch geleitete Gedankengänge findet man die einfachen Lösungen nicht.
Dies gilt natürlich nur, wenn ich das Problem richtig verstanden habe.
@Heinzelmännchen
Ist das was Schlimmes?
mfg Knubbel
Sorry, sorry
Bei Verwendung des Makros funktioniert natürlich die 2. Abfrage auch viel einfacher:
Wie ("*" & [Formulare]![Suchen]![Feld1] & "*")
Hier zeigt sich wieder, durch erstmals falsch geleitete Gedankengänge findet man die einfachen Lösungen nicht.
Dies gilt natürlich nur, wenn ich das Problem richtig verstanden habe.
@Heinzelmännchen
Ist das was Schlimmes?
mfg Knubbel

