Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kriterium falsch ausgewertet

Begonnen von JU299, Mai 06, 2024, 16:21:07

⏪ vorheriges - nächstes ⏩

JU299

Hallo Zusammen,
ich habe folgende Abfrage, die auf nur einer Tabelle beruht:

SELECT tbl_hunde.name_ahnentafel_voll, tbl_hunde.name_besitzer_ruf, tbl_hunde.geschlecht, tbl_hunde.wurftag, tbl_hunde.fellfarbe, tbl_hunde.chip, tbl_hunde.eigentuemer, tbl_hunde.zucht_raus, tbl_hunde.todestag, tbl_hunde.zucht_raus_grund, tbl_hunde.zucht
FROM tbl_hunde
WHERE (((tbl_hunde.eigentuemer)=1) AND (Not (tbl_hunde.zucht_raus_grund)="Abgabe") AND ((tbl_hunde.zucht)=Yes));

Meine Frage ist nun folgende:
Wenn ich diese Abfrage ausführe, werden mir 4 Datensätze zu wenig angezeigt. Diese 4 DS haben eines gemeinsam:
Das Feld "zucht_raus_grund" hat den Wert Ist Null. Wenn ich das Kriterium in o.a. Abfrage auf Ist Null ändere, werden mir diese 4 DS auch angezeigt.
Der Eintrag in genanntes Felde passiert über ein Kombinationsfeld, dessen Werte ich manuell festgelegt habe.
Im entsprechenden Tabellenentwurf ist dieses Feld ein reines Textfeld, also kein Nachschlage-Assistent.
Nehme ich das Kriterium in der Abfrage für dieses Feld raus, bekomme ich alle DS angezeigt, wie ich sie erwarte.

Sieht jemand meinen (Denk)-Fehler?
Danke und Gruß
Gruß Jörg

Gehe stets mit anderen so um, wie du möchtest, dass man mit dir umgeht!

JU299

Nachtrag:
Habe gerade festgestellt, dass Access den Kriteriumsausdruck von sich aus geändert hat.

Von mir eingetragen:
Nicht "Abgabe"

von Access geändert auf:
<>"Abgabe"

Ich dachte, "<>" wird nur für Zahlen, Datum und Währung verwendet.

Danke
Gruß Jörg

Gehe stets mit anderen so um, wie du möchtest, dass man mit dir umgeht!

PhilS

Zitat von: JU299 am Mai 06, 2024, 16:21:07Wenn ich diese Abfrage ausführe, werden mir 4 Datensätze zu wenig angezeigt. Diese 4 DS haben eines gemeinsam:
Das Feld "zucht_raus_grund" hat den Wert Ist Null. Wenn ich das Kriterium in o.a. Abfrage auf Ist Null ändere, werden mir diese 4 DS auch angezeigt.
NULL bedeutet undefiniert und muss bei Kriterien gesondert behandelt werden.

... AND (tbl_hunde.zucht_raus_grund <> 'Abgabe' OR tbl_hunde.zucht_raus_grund IS NULL) ...
Ich habe alle unnötigen Klammern entfernt. Die Klammern, die noch da sind, sind erforderlich um das gewünschte Ergebnis zu erhalten.

Zitat von: JU299 am Mai 06, 2024, 16:32:24Ich dachte, "<>" wird nur für Zahlen, Datum und Währung verwendet.
Man kann >, <, oder <> auch für Text verwenden. Größer-/Kleiner-Vergleiche werden dann auf Basis der Sortierreihenfolge ausgewertet. <> ist einfach ungleich und hat denselben Effekt, wie NICHT =.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

JU299

Hallo Phil,
danke für deine Antwort.
Ich verstehe deinen Code. Er zeigt auch alle geforderten DS an.

Ich verstehe jedoch nicht, warum in meinem Versuch alle DS verloren gingen, die NULL waren.
Das würde mich noch interessieren. Ich mag es, wenn ich Sachverhalte verstehen kann.

Gruß Jörg
Gruß Jörg

Gehe stets mit anderen so um, wie du möchtest, dass man mit dir umgeht!

MzKlMu

Hallo,
NULL (=Nix) bedarf immer einer besonderen Behandlung weil NULL nicht mit etwas verglichen werden kann.

Zu NICHT und <>

Nicht ist eigentlich nicht vollständig. Eigentlich solle es NICHT WIE heißen und das wird auch nicht zu <> geändert.
Gruß Klaus

ebs17

Mit freundlichem Glück Auf!

Eberhard