jhaustein
Goto Top

Probleme mit einer Abfrage in Access

Hallo Gemeinschaft,

habe ein Problem mit einer Abfrage

folgende Fälle gibt es
ohne Steuer + Festvermietung
ohne Steuer + Teilvermietung
ohne Steuer
mit Steuer + Festvermietung
mit Steuer + Teilvermietung
mit Steuer

breche mir da die Ohren bei, wenn ich es so in der Art machen möchte

Betrag: Format(Wenn([Teilmietbetrag_Auswahl]=Wahr Und [Mwst]=-1;[Gas]+[Wasser]+[Strom];..................);"Festkommazahl")

Content-ID: 3689040389

Url: https://administrator.de/forum/probleme-mit-einer-abfrage-in-access-3689040389.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

jhaustein
jhaustein 18.08.2022 aktualisiert um 15:13:52 Uhr
Goto Top
ich habs mal so probiert - testweise
SELECT [Abreisetag]-[Anreisetag] AS Tage, (CASE WHEN [Abreisetag]-[Anreisetag] < 6 then 6
else 9 END) AS Test
FROM abfr_mietabrechnung;

bekomme dann fehlender Operator Meldung
Gentooist
Gentooist 18.08.2022 um 15:23:32 Uhr
Goto Top
Was willst du eigentlich genau erreichen? Mir ist das immer noch nicht klar...
jhaustein
jhaustein 18.08.2022 um 15:24:39 Uhr
Goto Top
ich möchte erst einmal verstehen, wo in der obigen query der fehler ist - wenn ich die zum laufen bekomme, dann geht der rest
mbehrens
mbehrens 18.08.2022 um 16:28:38 Uhr
Goto Top
Zitat von @jhaustein:

ich möchte erst einmal verstehen, wo in der obigen query der fehler ist - wenn ich die zum laufen bekomme, dann geht der rest

Dann Zerlege das Problem in möglichst kleine Teile.

Erstes Problem:

Gesetzt den Fall, Anreisetag und Abreisetag sind Datumsfelder, kann das unbekannte Datenbanksystem solche Datumsoperationen durchführen, oder müssen Hilfsfunktionen, wie z. B. DATEDIFF (day, Anreisetag, Abreisetag), benutzt werden?
jhaustein
jhaustein 18.08.2022 um 16:32:07 Uhr
Goto Top
nein - zur Einfachheit können wir diesen Term auch weglassen

SELECT (CASE WHEN [Abreisetag]-[Anreisetag] < 6 then 6
else 9 END) AS Test
FROM abfr_mietabrechnung;
mbehrens
mbehrens 18.08.2022 um 16:43:14 Uhr
Goto Top
Zitat von @jhaustein:

nein - zur Einfachheit können wir diesen Term auch weglassen

SELECT (CASE WHEN [Abreisetag]-[Anreisetag] < 6 then 6
else 9 END) AS Test
FROM abfr_mietabrechnung;

Viel zu komplex.

Unterstützt das unbekannte Datenbanksystem Datumsoperationen in dieser Form, werden Conditional Expressions in Form von CASE in diesem Syntax unterstützt, ...

Also zurück auf Start:

Gesetzt den Fall, Anreisetag und Abreisetag sind Datumsfelder, kann das unbekannte Datenbanksystem solche Datumsoperationen in dieser Form durchführen, oder müssen Hilfsfunktionen, wie z. B. DATEDIFF (day, Anreisetag, Abreisetag), benutzt werden?
ukulele-7
ukulele-7 18.08.2022 um 16:44:12 Uhr
Goto Top
Auch in dem Fall wird [Abreisetag]-[Anreisetag] gerechnet, welchen Datentypen haben die Spalten?

Access scheint übrigens kein CASE zu können, IIF könnte eine Alternative sein:
https://stackoverflow.com/questions/772461/case-expressions-in-access
Ich bin aber bei Access nicht auf der Höhe, eventuell ist das auch mittlerweile implementiert.
jhaustein
jhaustein 18.08.2022 um 16:50:53 Uhr
Goto Top
wieso unbekanntes Dateisystem - MS Access
jhaustein
jhaustein 18.08.2022 aktualisiert um 16:52:38 Uhr
Goto Top
könnt ihr mir dabei helfen das statement mit iif zu erstellen

Datentyp ist Datum - und das rechnet auch korrekt - nur ich brauche eben die Fallabfrage
mbehrens
mbehrens 18.08.2022 um 17:01:46 Uhr
Goto Top
Zitat von @jhaustein:

wieso unbekanntes Dateisystem - MS Access

Da steht nirgends etwas von MS Access als Backend zur Datenhaltung. Ich war da schon von etwas vernünftigem ausgegangen, wenn es schon MS Access als Frontend sein muss face-wink
jhaustein
jhaustein 18.08.2022 um 17:07:45 Uhr
Goto Top
vielleicht kannst du mir ja trotzdem dabei helfen
mbehrens
mbehrens 18.08.2022 um 17:16:19 Uhr
Goto Top
Zitat von @jhaustein:

könnt ihr mir dabei helfen das statement mit iif zu erstellen

Datentyp ist Datum - und das rechnet auch korrekt - nur ich brauche eben die Fallabfrage

Nachdem jetzt Datenbank Backend und Feldtypen geklärt sind, könnte es auf so etwas hinauslaufen

SELECT IIf(([Abreisetag]-[Anreisetag])<6, 6, 9) AS Test FROM abfr_mietabrechnung;

da MS Access kein CASE kennt.
jhaustein
jhaustein 19.08.2022 um 07:42:58 Uhr
Goto Top
klasse - und wenn ich 6 Abfragen drin haben muss - siehe oben, dass sind meine Fälle
jhaustein
Lösung jhaustein 19.08.2022 um 15:06:51 Uhr
Goto Top
ich habs nun ausgelagert in eine Funktion