0

Kann man "Nebenrechnungen" innerhalb einer Berechnung beilegen?

Ich würde gerne einen Array anlegen welcher aus mehreren "Funktionsteilen" besteht, etwa so:

 

'Funktion 1' +" "+ 'Funktion 2' +" "+ 'Funktion 3' (sollte in der Ausgabe erscheinen)

 

nun soll separat eine Berechnung für Funktion 1, 2 und 3 abgelegt werden

 

Jedoch bin ich mir nicht sicher wie man das anstellt?

Ich hätte es konkret so gemacht.

 

'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3';

let Funktion1 = if X=Y then = "Z" else "abc";

let Funktion2 = if X=Y then = "Z" else "abc";

let Funktion3 = if X=Y then = "Z" else "abc";

 

Es scheint jedoch nicht ganz zu funktionieren. Wie kann ich diese "Nebenfunktionen" verbinden? bzw. wie genau lautet die Syntax hierfür. 

14 Antworten

null
    • Owner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ohne "=" Zeichen natürlich. Aber der Rest sollte doch stimmen? 

    'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3';

    let Funktion1 = if X=Y then "Z" else "abc";

    let Funktion2 = if X=Y then "Z" else "abc";

    let Funktion3 = if X=Y then "Z" else "abc";

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

    Ich weiß nicht, was genau das Ziel ist, aber Wertzuweisungen erfolgen immer mit Doppelpunkt und Gleichheitszeichen, also "let Funktion1 := if ...".

    • Owner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Es geht darum die eigentliche Berechnung: 'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3'; von der Nebenberechnung:

    let Funktion1 = if X=Y then = "Z" else "abc"; let Funktion2 = if X=Y then = "Z" else "abc"; let Funktion3 = if X=Y then = "Z" else "abc"; 

    zu trennen

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

    Die Wertzuweisung muss trotzdem mit ":=" erfolgen. Und "if" sollte immer "end" abgeschlossen werden:

     

    let Funktion1 := if X=Y then "Z" else "abc" end;
    let Funktion2 := if X=Y then "Z" else "abc" end;
    let Funktion3 := if X=Y then "Z" else "abc" end;

    • Owner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das ist leider nicht möglich. Einfache If else abfragen funktionieren, sobald z.B. eine weitere bedingung hinzukommt:

    let Funktion1 := if X=Y then "Z" else if X=1 tehn "123" else "abc" end;

    dan verschießt Ninox die gesamte Berechnung -.- 

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

    Was ist nicht möglich? Du müsstest mal mehr Kontext liefern. Die letzte Beispiel-Formel ist ja wieder anders als die vorherige. Ungeachtet anderer Überlegungen zum genauen Ziel der Aktion: Zwei mal "if" erfordert auch zwei mal "end", nur das "else" ist optional. Also

     

    if ... then ... [else ... ] end

     

    Zur Verdeutlichung an deinem Beispiel:

     

    let Funktion1 := if X = Y then
          "Z"
       else
          if X = 1 then
             "123"
          else
             "abc"
          end
       end;

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ...und/oder: if X ein Textfeld und Y ein String then

    *

    let Funktion1 := if X = "Y" then

    ...

    *

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

    Wobei - wenn X ein Feld bzw. eine Variable vom Typ Text wäre, müsste es weiter unten aber auch heißen if X = "1".

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    So sehe ich es auch. Ninox ist wohl nicht so typsicher und "wandelt" den Integer selbst in Text um. In meiner Nachstellung geht es auch ohne "1", aber ich weiß natürlich nicht über die Beschaffenheit von X und Y (Variable, Text, numerisch) Bescheid. Ganz korrekt ist es dann aber so wie Du es schreibst und auch, dass etwas mehr Kontext dem Rätselraten ein Ende machen könnte, aber ich dachte, dass ich nichts verderben kann mit meinem Einwurf. ;-)

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

    Ja, Ninox ist recht tolerant und interpretiert auch manche Ungenauigkeit richtig. Aber eben nur manche ... Verlassen sollte man sich nicht darauf. ;)

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

    PS: Und hier im Userforum versuche ich immer, besonders korrekt zu sein. (Was natürlich nicht immer gelingt.) 

    • Owner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Jetzt verstehe ich das Problem.

     

    für einfache if else abfragen genügt am ende: end; für jede weitere Abfrage innerhalb der if/ else Abfrage muss jeweils ein eigenes "end" angegeben werden. Das bedeutet das wenn innerhalb einer If else abfrage 5 Möglichkeiten bestehen, dann muss die Zeile mit: end end end end end; beendet werden. Eben so viele "end" angaben wie Möglichkeiten. 

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

    Genau, if und end treten ausnahmslos immer paarweise auf. Auch, wenn man sie verschachtelt. An den Einrückungen, die Ninox vornimmt, lässt sich gut erkennen, welches end zu welchem if gehört.

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ninox ist doch aber so schlau und setzt sie selber.. die end Zeichen oder weist darauf hin