Summenberechung mit unterschiedlichen Tagessätzen

Hallo,

und erneut stehe ich vor einem Problem. In meiner Datenbank soll die Summe der Kosten berechnet werden nach unterschiedlicher Dauer der Unterstellung.

Es gibt ein Feld, welches die Dauer in Tagen berechnet (DAUER),
dann den TAGESSATZ_1 und den TAGESSATZ_2; schließlich noch das Feld KOSTEN.
Vom ersten bis zum 30. Tag der Unterstellung soll der Betrag aus TAGESSATZ_1 genommen werden, ab dem 31. Tag der Betrag aus TAGESSATZ_2.
Das soll im Steuerfeld KOSTEN berechnet werden.

Also angenommen: Dauer der Unterstellung 40 Tage. TS_1 = 1 Euro, TS_2 = 2 Euro. Kosten müssten 50 Euro ergeben.

Wie stellt man die Formel im Feld KOSTEN dar?
Vielen Dank für die Hilfe.

Grüße

Hallo,

statt sich mit einer Spagetti-Formel im Steuerelementinhalt eines Textfeldes herumzuschlagen, würde ich die Berechnung in eine Public-Funktion in einem Standardmodul auslagern und das Ergebnis von dieser Funktion zurückliefern lassen. Der Aufruf der Funktion passiert dann im Steuerelementinhalt des Textfeldes für die Anzeige des Ergebnisses.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Tja, das mag wohl sein. :smile:
Leider bin ich zu unerfahren in Access, als das ich wüsste wie so etwas zu bewerkstelligen ist.
Wie müsste denn so etwas aussehen? Hast du da auch einen Tipp?

Falls zu kompliziert, hätte ich auch gegen die Spaghetti-Formel nichts, denn die wird nur ein Mal benötigt. Ist vielleicht einfacher?

Hallo,

in einem Standardmodul schreibe:

Option Explicit

Public Function fktCalcKosten (Dauer as Long, TS1 as Double, TS2 as Double) as Double
If Dauer > 30 Then
fktCalcKosten=30 *TS1 + (Dauer-30) * TS2
Else
fktCalcKosten=Dauer * TS1
End If
End Function

Im Steuerelementinhalt eines Textfeldes schreib:
= fktCalcKosten ([Dauer];[TS_1];[TS_2])

Spagetti im Steuerelementinhalt eines Textfeldes :

= Wenn([Dauer > 30];30 * [TS_1] + ([Dauer]-30) * [TS_2];[Dauer]*[TS_1])

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Klasse. Werde ich ausprobieren und testen.
Melde mich dann wieder.

Danke und Grüße

Mit dem Modul hat es wunderbar funktioniert.

Danke und Grüße