0

Addition mit Auswahlfeld

Hallo an Alle,

wahrscheinlich ist die Antwort so offensichtlich, als würde ich fragen, wieviel 1+1 ist, aber ich komme einfach nicht darauf.

Google-Suche und Forum-Suche haben mich nicht weitergebracht oder ich hatte die Lösung vor Augen und habe es nicht kappiert.

In der Untertabelle 'Positionen' habe ich Zahlenfelder mit Preis A, B, C, D und ein Auswahlfeld, welches entweder Preis X oder Preis Y anzeigt.

Nun möchte ich alle Preise addieren, also A bis D + X oder +Y, jenachdem welches Auswahlfeld gewählt wird.

Die Gesamtsumme ist ein Berechnungsfeld.

Kann mir bitte jemand  auf die Sprünge helfen?

Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe.

Vielen Dank im Voraus!

 

Beste Grüße

Kruna

16 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna, wo kommen denn die Werte für Preis X und Y her? Falls sie als Ganzzahl nur mit Ziffern als Text in dem Auswahlfeld geschrieben sind (z. B. "25"), dann könnte es mit einem Funktionsfeld folgendermaßen funktionieren:

     

    let myPreis := number(text(Auwahl));
    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myPreis

     

    Wenn der Wert auch Nachkommastellen beinhaltet (z. B. 9,95"), dann würde ich es so versuchen:

     

    let myPreis := text(Auswahl);
    let myPVK := number(first(split(myPreis, ",")));
    let myPNK := number(last(split(myPreis, ","))) / 100;
    let myZahl := myPVK + myPNK;
    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myZahl

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die schnelle Antwort.

    Die Fromel hat leider nicht funktioniert. Ich denke, dass ich mich falsch ausgedrückt habe.

    Nein, sie sind nicht mit Ziffer als Text im Auswahlfeld.

    Ich habe in meiner TAbelle 'Artikel' im Auswahlfeld 1= Kosten A, 2=Kosten B, 3=Kosten C usw. Daneben habe ich das dazugehörige Zahlfeld 'Preis' für Kosten A, 'Preis' für Kosten B usw.

    Die Felder werden angezeigt, je nach Auswahl (Auswahl=1, usw)

    Nun möchte ich eine RG schreiben und habe in der Untertabelle 'Positionen' die Preise stehen und auch die Auswahl:

    Bildschirmfoto 2020-03-19 um 12.26.50

     

    'Techn. Kosten 4 Motive' wären dann zB 20€

    Die Rechnung wäre dann 'Preis A' + 'Preis B' + 'Preis C' + 12€ oder 20€, je nachdem welche Auswahl man ausgewählt hat.

    Eine gute Idee, daran habe ich nicht gedacht, aber ja, der Wert könnte auch Nachkommastellen beinhalten. Vielen DAnk für den Hinweis.

     

    Beste Grüße

    Kruna

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Klar, wenn die Preise nicht direkt in den Einträgen des Auswahlfeldes stehen, dann kann die Formel natürlich nicht funktionieren. Jetzt blicke ich aber offen gestanden nicht mehr so ganz durch. Vorher spielte sich alles in der Tabelle 'Positionen' ab, jetzt gibt es eine weitere Tabelle 'Artikel' und ein weiteres Auswahlfeld mit 'Kosten A', 'Kosten B' usw. ...

     

    Wenn es aber nur um die abgebildete Auswahl und das dazugehörige Zahlenfeld geht, dann könnte man das mit einer if-Abfrage machen. Oder gleich mit einer switch-case-Struktur für den Fall, dass noch weitere Einträge dazukommen könnten:

     

    let myPreis := switch number(Auswahl) do
        case 1: 'Technische Kosten 1 Motiv p.a.'
        case 2: 'Technische Kosten 4 Motive p.a.'
        default: 0
    end
    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myPreis

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,

    ja, ich muss mich entschuldigen, ich habe wohl mit dem Versuch, es verständlicher zu erklären, noch mehr durcheinander gebracht.

    Es geht ja eigentlch um die abgebildete Auswahl und mit Deiner Formel hat alles wunderbar geklappt!

    Vielen, tausend DANK!

     

    Beste Grüße

    Kruna

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    👍

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Huhu nochmals,

    Entschuldigung, aber ich habe da doch noch eine Frage, wie gehe ich denn vor, wenn ich zwei Auswahlfelder habe?

    D.h. ich müsste case 1, case 2, case 3 usw. mit einem anderen Auswahlfeld (1 Jahr, 2 Jahre usw. ) multiplizieren:

     

    case 1 * 12

    case 1* 24

    case 1 *36

    case 2 *12

    case 2*24

    case 2*36

     

    Vielen Dank und beste Grüße,

    Kruna

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    let myMultiplikator := switch Auswahlfeld1 do
    case 1:
    12
    case 2:
    24
    case 3:
    36
    end;
    let myErgebnis switch Auswahlfeld2 do
    case 1:
    Feld1 * myMultiplikator
    case 2:
    Feld2 * myMultiplikator
    .
    .
    .
    end

     

    lg, Torsten

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Örgs,

    da hab ich was vergessen:

     

    let myErgebnis := switch Auswahlfeld2 do

    sorry...

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    vielen Dank für Deine Antwort! Ich habe die Formel gerade ausprobiert:

     

    let myMultiplikator := switch Mietdauer do
    case 1:
    12
    case 2:
    24
    case 3:
    36
    case 4:
    48
    case 5:
    60
    case 6:
    1
    case 7:
    3
    case 8:
    6
    end;
    let myErgebnis := switch Auswahl do
    case 1:
    'Techn. Kosten 4 Motive p.a.' * myMultiplikator
    case 2:
    'Techn. Kosten 1 Motiv p.a.' * myMultiplikator
    case 3:
    'Nebenkosten mtl.' * myMultiplikator
    end;
    void

    Die Formel, so wie ich sie hingeschrieben habe,  funktioniert leider nicht. Bei mir kommt am Ende immer diese 'void', obwohl ich es garnicht dahingeschrieben habe.

     

    Was habe ich bloß falsch gemacht?

     

    Beste Grüße

    Kruna

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna, ich verstehe nicht genau, was du da machen willst, aber wenn du ein zweites Auswahlfeld mit einem Multiplikator hast, kannst du dieses getrennt auswerten, in eine eigene Variable übernehmen und diese dann für jede Berechnung nutzen:

    let myLaufzeit := switch number(Laufzeit) do
        case 1: 12
        case 2: 24
        case 3: 36
    end

    Die switch-case-Abfrage zur Ermittlung von myPreis bliebe wie gehabt. Und die Berechnungsformel würde um den Mulitiplikator ergänzt:

    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myPreis * myLaufzeit

    Oder so, wie ich es schon oben in meiner ersten Antwort als Möglichkeit genannt hatte: Die Anzahl der Monate direkt in Ziffern als Text der Auswahloptionen schreiben, also "12", "24", "36" usw. Dann kann man sich das switch-case sparen:

     

    let myLaufzeit := number(text(Laufzeit))

    Falls ich es richtig verstehe und es um die 'Anzahl Motive' und die 'Laufzeit Monate' geht, dann wäre vielleicht zu überlegen, bei beiden Auswahlfeldern nur die jeweiligen Zahlwerte einzutragen. Der gesamte Code zur Berechnung des Endpreises wäre dann sehr viel kompakter:

     

    let myMotive := number(text('Anzahl Motive'));
    let myLaufzeit := number(text('Laufzeit Monate'));
    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myMotive * myLaufzeit

     

    Oder sogar mit einer Zeile möglich:

     

    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + number(text('Anzahl Motive')) * number(text('Laufzeit Monate'))

     

    Nur so als Idee.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ups, da war ich wieder mal zu spät ...

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das "void" erscheint, weil in dem Berechnungsfeld zwar die Variablen 'myErgebnis' und 'myMultiplikator' ermittelt werden, mit den Werten aber nichts passiert. Es fehlt noch die Formel für das Endergebnis, das in diesem Berechnungsfeld angezeigt werden soll.

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    HAllo,

     

    wahrscheinlich weiß ich vor lauter ninoxing selbst nicht mehr was ich eigentlich erreichen will!

    Jedenfalls hat mir

    'Preis A' + 'Preis B' + 'Preis C' + 'Preis D' + myPreis * myLaufzeit

     

    geholfen.

    Nach umstellen/umbenennen der Felder war myPreis * myLaufzeit genau das , was ich ereichen wollte.

    Die Sache ist die, dass ich noch ziemlich am Anfang stehe, sowohl bei Ninox, als auch mit meiner kleinen Firma.

    Nun habe ich diverse NinoxAbläufe im Kopf, stelle jedoch fest, dass im eigentlichen Ablauf diese nicht ganz praktikabel sind. Daher auch noch die vielen Änderungen.

    Wirklich sorry, wenn ich mich da ewtas unverständlcih ausdrücke.

     

    Vielen DAnk und beste Grüße

    Kruna

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Kein Problem. Noch mal kurz zum Verständnis des "void": Ein Berechnungsfeld hat den Zweck, einen Wert zu ermitteln und anzuzeigen. Mit Betonung auf "anzeigen". Eine korrekt Formel wäre bspw.

     

    10 + 20

     

    Als Ergebnis würde im Feld nun der Ergebniswert '30' angezeigt. Schriebe man aber

     

    let Zahl1 := 10;
    let Zahl2 := 20

     

    würde gar nichts passieren, weil es nichts anzuzeigen gäbe, denn man hätte ja nur Variablen befüllt. Und Ninox würde der Form halber "void" darunter setzen, was in diesem Kontext so viel heißt wie "Mach nix". Man müsste also noch angeben, was angezeigt werden soll, nämlich das Ergebnis der Addition von Zahl1 und Zahl2:

     

    let Zahl1 := 10;
    let Zahl2 := 20
    Zahl1 + Zahl2

     

    Nun wäre der Code vollständig und im Berechnungsfeld würde auch wieder '30' angezeigt.

    • Kruna
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ach so! Ja vielen Dank für die Erklärung. Man lernt jeden Tag etwas neues dazu. Beim nächsten 'void', weiß ich nun worauf ich achten muss.

    Ich bewundere Euch ja immer wieder, wie ihr die Formeln 'zusammenpackt'.

    Jetzt, wo ich diese Lösung vor Augen habe, klingt alles logisch und nachvollziehbar, aber selbst darauf kommen? Da tue ich mich echt noch sehr schwer.

    Aber wie heißt es doch so schön...learning by doing!

    Dank nochmals udn beste Grüße

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ja, aus eigener Erfahrung weiß ich: Wenn Ninox von sich aus irgendwo ein "void" einsetzt, hat man in der Regel irgendwas falsch gemacht. Man sollte dann genau schauen, was man an der Stelle eigentlich bewirken wollte. ;)