Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Johannes72 am Mai 20, 2017, 17:53:33

Titel: Wenn - dann Abfrage...
Beitrag von: Johannes72 am Mai 20, 2017, 17:53:33
Hallo

Kann mir bitte jemand sagen warum eine Abfrage mit:

Ausdr1: Wenn([gefahrenekm]>[tdiaetenabkm];[diaetenzeit]*([tdiaetenh]*24);0)

funktioniert, aber:

Ausdr1: Wenn([gefahrenekm]>[tdiaetenabkm] oder wenn ([tdiaet] = 1);[diaetenzeit]*([tdiaetenh]*24);0)

nicht??

Wenn ich die Zweiten Klammern entferne, funktioniert es nicht und mit den Klammern auch nicht...??? Egal was ich versuche, immer wieder bekomme ich Fehler.

Kann mir da bitte jemand helfen?

Danke
Titel: Re: Wenn - dann Abfrage...
Beitrag von: MzKlMu am Mai 20, 2017, 18:14:30
Hallo,
das geht so nicht.
Beschreibe mal in Worten was Du erreichen willst.
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Lachtaube am Mai 20, 2017, 18:16:34
Du müsstest die 2. Wenn-Funktion zumindest auch mit einem zweiten Argument ausstatten, damit sie gültig wäre - in diesem Fall ist das aber unnötig.

Wenn(([gefahrenekm] > [tdiaetenabkm])
     Oder
     ([tdiaet] = 1); [diaetenzeit] * [tdiaetenh] * 24; 0)


PS: Ich habe den Ausdruck nur untereinander geschrieben, damit der Zusammenhang besser erkennbar ist.
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Johannes72 am Mai 20, 2017, 18:50:25
Danke für die rasche Antwort..

@Lachtaube: ich bekomme zwar keine Fehlermeldung aber in der Abfrage steht im Feld "0" was eigentlich nicht sein soll sondern eben das Ergebenis aus "[diaetenzeit] * [tdiaetenh] * 24" ...

@MzKlMu: Tja, was will ich erreichen.

Es geht um eine Liste mit Kilometergelt und Diäten. Das "Fahrentenbuch" funktioniert im Grunde einwandfrei. Kilometergelt, Diäten usw. alles bestens.  Nun möchte ich ein zusätzliches Ja/Nein Feld einbauen in dem ich Diäten verrechenen kann ohne Rücksicht auf Kilometer und Zeit. Die Grundidee ist: Wenn ich, wie im aktuellen Fall, die "Reisezeit" erreicht habe aber nicht die notwendigen Kilometer gefahren bin.... warum auch immer.... möchte ich dennoch die Diäten abrechenen können wenn ich dieses neue Ja/Nein Feld anhacke...

So im groben und schnell beschrieben sollte das der Sinn sein...
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Lachtaube am Mai 20, 2017, 19:48:51
Ein Ja/Nein-Feld hat in Access nicht den Wert 1 sondern -1. Man kann die Abfrage auf den Wert aber auch ganz weglassen.

Wenn(([gefahrenekm] > [tdiaetenabkm])
     Oder
     [tdiaet]; [diaetenzeit] * [tdiaetenh] * 24; 0)


oder vermutlich noch einfacher

Abs(([gefahrenekm] > [tdiaetenabkm]) Oder [tdiaet]) * [diaetenzeit] * [tdiaetenh] * 24

Damit kannst Du dann vermutlich Dein Geld richtig geltend machen. :)
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Johannes72 am Mai 20, 2017, 20:12:30
Hallo Lachtaube

Mir ist völlig unklar warum, aber das funktioniert so

Danke für deine Hilfe, das hätte ich so nicht geschafft...

Danke
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Lachtaube am Mai 20, 2017, 20:24:52
Johannes, wenn eine Bedingung innerhalb der Klammer erfüllt ist, wird sie als Wahr (-1) bzw. bei Nichterfüllung als Falsch (0) ausgewertet. Den Regeln der Logik folgend, sind die Ausdrücke (Wahr Oder Wahr), (Wahr Oder Falsch) sowie (Falsch Oder Wahr) Wahr, und nur (Falsch Oder Falsch) liefert als Ergebnis Falsch. Umgewandelt ind den Zahlenwert ergibt das 0 oder -1. Mit der Abs-Funktion wird der Absolutwert dieses Ausdrucks ermittelt, welcher dann 0 bzw. 1 ergibt und als Faktor in die Multiplikation einfließt.
Titel: Re: Wenn - dann Abfrage...
Beitrag von: Johannes72 am Mai 20, 2017, 20:35:00
Hi

ich habe aber die Version mit:

Wenn(([gefahrenekm] > [tdiaetenabkm])
     Oder
     [tdiaet]; [diaetenzeit] * [tdiaetenh] * 24; 0)

verwendet, und die funktioniert. Warum auch immer, die Logik ist mir nicht so recht klar....

Den anderen Code habe ich nicht versucht....