"Wenn" -Abfragekriterium mit Operatoren

mstadler71

Benutzer
Beiträge
8
Hallo allerseits
bis jetzt habe ich mich ja für einen "eher versierten" Access-User gehalten; nun scheitere ich an einer -wahrscheinlich- leichten Aufgabe. ;-/

Ich möchte bei einer Abfrage ein "Wenn"-Kriterium mit Operatoren vorgeben, das nimmt Access jedoch nicht.

also zb: wenn(1=1; = [Verweis auf Formularfeld]; >= [Verweis auf Formularfeld])

Ohne Operatoren geht's (z.B. wenn(1=1; 2018; 2019); sobald Operatoren ins Spiel kommen, liefert die Abfrage keine Ergebnisse mehr. Habe es auch schon als Zeichenkette versucht, geht auch nicht.

Danke für Euer Feedback!
 
Werbung:
Nunja 1=1 ist klar, TRUE. = 2018 oder = 2019 ist kein boolischer Ausdruck, was Access daraus macht kann ich dir nicht sagen. >= 2018 kann Access unmöglich sinnvoll interpretieren, was soll >= 2018 sein? Also nichtmal Excel-Formeln ergeben so sinnvolle Dinge.

Aber ich vermute das du deutlich besser fährst wenn du ausschließlich boolische Ausdrücke verwendest, wo auch immer diese Formeln jetzt genau stehen.
 
1=1 ist nur ein Platzhalter für meine Frage; der "Wenn"-Teil ist ja nicht das Problem, sondern die True/False Kriterien.

zusammengefasst soll die Abfrage Daten aus mehreren Geschäftsjahren -abhängig vom Formularwert- ausgeben:
  • entweder eines Geschäftsjahres: z.B. 2018 (=2018)
  • oder ab einem Geschäftsjahr: z.b. ab 2018 (>=2018)
sobald im True/False-Teil Operatoren stehen, liefert die Abfrage keine Ergebnisse; ohne "Wenn"-Bedingung im Kriterium geht es natürlich
 
Bestimmte Operatoren haben die Eigenart, dass sie mehrere, z.B. 2 Operanden benötigen.

- wenn [Verweis auf Formularfeld] > [aktuelles Datum]
- wenn [Verweis auf Formularfeld] <= [Spaltename einer abgefragten Tabelle]

Das sollte Access schon verstehen. Hierbei habe ich die eckigen Klammern nur analog zu Deinem Beispiel genommen. Ich weiß nicht, wo sowas verwendet wird außer bei MS Produkten. Normalerweise würde man es eher so notieren:
Code:
- wenn :Parameter > <aktuellesDatum|:andereKonstante>
- wenn :Parameter <= Spaltenname
oder
- wenn a.Spaltenname > b.Spaltenname

Wobei a und b für für 2 konkrete Tabellen Aliase der Abfrage stehen.

Mir fällt grad ein, in Access werden im Abfrage Assistenten doch die Kriterien in den Spalten eingetragen oder?
Dein Beispiel Abfrage wäre dannübersetzt
Filter für <DieseSpalte>
Wenn 1 = 1 ist, dann filtere auf Spaltenwert 2018, sonst filtere auf Spaltenwert 2019

Du würdest für Filter auf
2018 nur 2018 eintragen
>2018 nur >2018

für Oder glaube ich 2 Zeilen eintragen, also für 2018 oder 2020
eine Zeile mit 2018
eine Zeile mit 2020

Alternativ mit Accessfunktionen wahrscheinlich:
ODER(2018;2020)

Lass dir einfach mal die SQL Variante anziegen, das ist vielleicht verständlicher.
 
danke, aber das funktioniert alles nicht
ich versuche es vielleicht konkreter, hoffe es gelingt
  • Ausgangspunkt: Entwurfsansicht Abfrage
  • Spalte "Geschäftsjahr"
  • Einträge Kriterienzeile die funktionieren:
    • Wenn(Bedingung=WAHR; 2018) ;d.h. alle Datensätze aus Geschäftsjahr 2018
    • >=2018 ;d.h. alle Datensätze ab Geschäftsjahr 2018
  • Eintrag Kriterienzeile der keine Werte liefert: Wenn(Bedingung=WAHR; >=2018) ;d.h. SOLL alle Datensätze ab Geschäftsjahr 2018
ich benötige aber die Wennfunktion, da es ja auch eine False-Wert gibt
gewünscht ist eben: Wenn(Bedingung =Wahr; 2018; >=2018)

Wie gesagt, sobald ein Operator im Wenn-Kriterium ins Spiel kommt ist Sense; das hilft auch der Access-Generator nix..
 
Werbung:
Mal eine naheliegende Frage:
Was bedeutet "funktioniert alles nicht"?
Du widersprichst Dir 2 Zeilen tiefer selbst, einige Dinge funktioneren.

Um eine Antwort vorwegzunehmen:
Eine leere Ergebnismenge bedeutet, dass es funktioniert. Wenn Dir das Ergebnis nicht plausibel erscheint, musst Du Daten liefern, eine Tabellenbeschreiung und was das erwartete Ergebnis ist. Das hilft gegen viele Missverständnisse und langatmiges Hinundher.
 
Zurück
Oben