online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon wolpi27 vom 21.10.2020, 11:08 Options

Lösung

rechnen mit Abfragen in Access

Hallo,
ich habe eine Datenbank in der Artikel mit Preisen und Mindestbestellmengen hinterlegt ist.

Ich habe nun eine Abfrage erstellt, welche den Preis für den Artikel berechnet.

UPDATE artikel SET artikel.product_price = [artikel]![Feld75]/[artikel]![Feld76]*"1,15";

soweit so gut.
Nun ist mir aufgefallen, das ich noch ein Feld62 habe, welches in die Berechnung mit einfliesen muß, sobald das Feld62 größer als Feld 76 ist. Ist das Feld62 leer, so soll mit dem Feld76 gerechnet werden.
Allerdings habe ich hier offenbar ein Verständnisproblem wie ich das lösen kann?


Antwort schreiben

Antwort 1 von lorf55 vom 21.10.2020, 14:11 Options

Hallo wollpi,
für das Problem hat man die Funktion IIF(Frage,ja,nein) erfunden. In deinem Fall könnte man diese wie folgt einsetzen:
UPDATE artikel SET product_price = Feld75/IIf(not isEmpty(Feld62), IIf(Feld62>Feld76,Feld62,Feld76), Feld76)*1,15;


Gruß
lorf

Antwort 2 von wolpi27 vom 23.10.2020, 08:48 Options

Hi Lorf,

danke für deine Antwort.
Bin schon wesentlich weiter gekommen. Allerdings rechnet diese Anweisung immer mit dem Feld 75/Feld76 .
Wahrscheinlich verstehe ich noch nicht ganz den Synatax der Anweisung.
Die Anweisung soll ja entscheiden ob das Feld64 grö0er als das Feld 76 ist und dann das größere Feld in die Kalkulation einsetzen.
Wenn nun das Feld 64 größer ist als Feld76 sollte er dementsprechend Feld 75/Feld64 rechenen.

Da hänge ich im Moment noch.

Gruß Whoppel

Antwort 3 von lorf55 vom 31.10.2020, 20:46 Options

Sorry Whoppel,
ich habe dich leider übersehen.

Ich verstehe jetzt nicht ganz, warum du lieber Feld64 statt Feld62 haben möchtest, aber gut. Gehen wir das nochmal durch:
Zitat:
Die Anweisung soll ja entscheiden ob das Feld64 grö0er als das Feld 76 ist und dann das größere Feld in die Kalkulation einsetzen.
Wenn nun das Feld 64 größer ist als Feld76 sollte er dementsprechend Feld 75/Feld64 rechenen.

Gut denn tauschen wir Feld62 gegen Feld64.
Ist Feld64 nie leer? Wenn ja, brauchen wir nur
UPDATE artikel SET product_price = Feld75/IIf(Feld64>Feld76,Feld64,Feld76)*1,15;
. Wenn nein, ist diese Variante nötig:
UPDATE artikel SET product_price = Feld75/
IIf(not isEmpty(Feld64), IIf(Feld64>Feld76,Feld64,Feld76), Feld76)*1,15;

Letzteres heißt auf Deutsch:
Mache ein Update in der Tabelle artikel und Setze product_price indem Feld75 geteilt wird durch Feld64 wenn das nicht leer ist und größer als Feld76, sonst durch Feld76 und multipliziere mit 1,15.

Die Syntax: IIF(Frage,ja,nein) ==
IF Frage=ja THEN ja ELSE nein

Eigentlich müsste man ja so eine Abfrage machen:
IF Feld64>Feld76 THEN Feld64 ELSE Feld76
bzw.
(IF not isEmpty(Feld64) THEN IF Feld64>Feld76 THEN Feld64 ELSE Feld76 ELSE Feld76)*1,15

Da das aber so nicht geht in SQL, hat man sich dieses IIF ausgedacht. Die Frage ergibt immer den logischen Wert ja oder nein. Die Funktion kann man verschachteln, d.h. in jedem Ja- und in jedem Nein-Zweig können wieder IIF auftauchen.

Gruß
lorf

Antwort 4 von wolpi27 vom 03.11.2020, 08:12 Options

Danke Lorf,

jetzt hab ich es verstanden. Die rechnung funktioniet ohne Probleme, prima.

Vielen Vielen Dank :-)

Gruß Whoppel

Antwort 5 von lorf55 vom 03.11.2020, 13:11 OptionsLösung

Lösung
Danke Whoppel für die Rückmeldung.
Denn können wir ja der Übersicht halber einen Haken dran machen.

Gruß
lorf

Ähnliche Themen

access abfragen selektion
WoasNedWeida  26.04.2007 - 108 Hits - 1 Antwort

abfragen in access
humusandi  14.08.2007 - 60 Hits - 4 Antworten

Access rechnen in Formularen
hpv  29.11.2007 - 289 Hits - 3 Antworten

Access: mehrere Abfragen in einen Bericht integrieren
Tumulus  05.04.2008 - 162 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026