Supportnet Computer
Planet of Tech

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 <>""

Antwort 2 von Koebi

Grüezi Flo

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.

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.


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

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

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

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

Antwort 8 von Knubbel

Hi Flo!

Hier mein Lösungsvorschlag:
in die Kriterienzeile eingeben
Wie (Wenn(([Formulare]![Suchen]![Feld1]) Ist Null;"*";"*" & [Formulare]![Suchen]![Feld1] & "*"))

und in die "oder"-Zeile
 ist Null

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




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

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

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

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

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


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

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.

Antwort 16 von Heinzelmännchen

Hey Knubbel,

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: