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-Key: 3689040389

Url: https://administrator.de/contentid/3689040389

Printed on: April 26, 2024 at 17:04 o'clock

Member: jhaustein
jhaustein Aug 18, 2022 updated at 13:13:52 (UTC)
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
Member: Gentooist
Gentooist Aug 18, 2022 at 13:23:32 (UTC)
Goto Top
Was willst du eigentlich genau erreichen? Mir ist das immer noch nicht klar...
Member: jhaustein
jhaustein Aug 18, 2022 at 13:24:39 (UTC)
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
Member: mbehrens
mbehrens Aug 18, 2022 at 14:28:38 (UTC)
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?
Member: jhaustein
jhaustein Aug 18, 2022 at 14:32:07 (UTC)
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;
Member: mbehrens
mbehrens Aug 18, 2022 at 14:43:14 (UTC)
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?
Member: ukulele-7
ukulele-7 Aug 18, 2022 at 14:44:12 (UTC)
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.
Member: jhaustein
jhaustein Aug 18, 2022 at 14:50:53 (UTC)
Goto Top
wieso unbekanntes Dateisystem - MS Access
Member: jhaustein
jhaustein Aug 18, 2022 updated at 14:52:38 (UTC)
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
Member: mbehrens
mbehrens Aug 18, 2022 at 15:01:46 (UTC)
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
Member: jhaustein
jhaustein Aug 18, 2022 at 15:07:45 (UTC)
Goto Top
vielleicht kannst du mir ja trotzdem dabei helfen
Member: mbehrens
mbehrens Aug 18, 2022 at 15:16:19 (UTC)
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.
Member: jhaustein
jhaustein Aug 19, 2022 at 05:42:58 (UTC)
Goto Top
klasse - und wenn ich 6 Abfragen drin haben muss - siehe oben, dass sind meine Fälle
Member: jhaustein
Solution jhaustein Aug 19, 2022 at 13:06:51 (UTC)
Goto Top
ich habs nun ausgelagert in eine Funktion