0

Zuordnung mit if then else

Servus. Kann mir mal jemand sagen, wo mein Denkfehler ist. Ich weiß mir keinen Rat mehr. Ich möchte Spieler des Vereins anhand ihres Geburtstages den jeweiligen Spielklassen zuordnen. Aber ich komme nicht mehr weiter. Das hab ich als Formel so eingetippt:

if age(Geburtstag) < 10 then "Jugend C"
else if age(Geburtstag) >= 10 + (<= 14) then "Jugend B"
else if age(Geburtstag) >= 15 + (<= 18) then "Jugend A"
else if age(Geburtstag) >= 19 + (<= 23) then "Junioren"
else if age(Geburtstag) >= 24 + (<= 49) then "Aktive"
else if age(Geburtstag) >= 50 + (<= 57) then "Senioren A"
else if age(Geburtstag) >= 58 + (<= 64) then "Senioren B"
else if age(Geburtstag) > 64 then "Senioren C" end
end end end end end end end

Letztendlich wird die Jugend C noch zugeordnet, aber dann leider kein anderer mehr.

Danke schon vorab für die Hilfe.

Carlo

10 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Carlo:

    ---

    if Geburtstag then
    switch age(Geburtstag) >= 0 do
    case age(Geburtstag) < 10:
    "Jugend C"
    case age(Geburtstag) >= 10 and age(Geburtstag) <= 14:
    "Jugend B"
    case age(Geburtstag) >= 15 and age(Geburtstag) <= 18:
    "Jugend A"
    case age(Geburtstag) >= 19 and age(Geburtstag) <= 23:
    "Junioren"
    case age(Geburtstag) >= 24 and age(Geburtstag) <= 49:
    "Aktive"
    case age(Geburtstag) >= 50 and age(Geburtstag) <= 57:
    "Senioren A"
    case age(Geburtstag) >= 58 and age(Geburtstag) <= 64:
    "Senioren B"
    case age(Geburtstag) > 64:
    "Senioren C"
    end
    end

    ---

    Leo

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

    Hallo Carlo,

     

    mal eine Frage am Rande: werden die Altersklassen tatsächlich nach Alter eingeteilt - und nicht nach Geburtsjahr?

     

    lg, Torsten

    • Carlo_Luft
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo. Danke für die Hilfe. "Case hatte ich auch versucht, bin aber ebenfalls zu keinem Ergebnis gekommen.

    Torsten:

    Geburtsjahr und Alter sind doch in abhängigkeit zueinander, oder nicht? Jetzt wird es allerdings komplizierter. Es gibt ein "sportliches" Kalenderjahr. Der Stichtag ist der 30.06.. Wer also danach Geburtstag hat, darf also in der "kleineren Klasse" spielen. Wenn ich das jetzt auch noch mit einbinden könnte, dann wäre es grandios. Aber ich gebe mich vorerst mit der jetzigen Lösung zufrieden. So viele Spieler sind es nicht, bei denen ich das dann beachten muss. 

    LG Carlo

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

    Ahoi. Also, dieses  ">= 10 + (<= 14)" wird so nicht funktionieren. Wenn, dann müsste es wohl heißen:

    if age(Geburtstag) >= 10 and age(Geburtstag)  <= 14 then "Jugend B

    Ich würde es allerdings generell anders aufbauen, dann spart man sich die Von-bis-Abfragen:

    let Alter := age(Geburtstag);
    if Alter > 64 then
        "Senioren C"
    else
        if Alter > 57 then
            "Senioren B"
        else
            if Alter > 49 then
                "Senioren A"
            else
                if Alter > 23 then
                    "Aktive"
                else
                    if Alter > 18 then
                        "Junioren"
                    else
                        if Alter > 14 then
                            "Jugend A"
                        else
                            if Alter > 9 then "Jugend B" else "Jugend C" end
                        end
                    end
                end
            end
        end
    end

    Oder als switch-case-Struktur:

    let Alter := age(Geburtstag);
    switch Alter > 0 do
    case Alter < 10:
        "Jugend C"
    case Alter < 15:
        "Jugend B"
    case Alter < 19:
        "Jugend A"
    case Alter < 24:
        "Junioren"
    case Alter < 50:
        "Aktive"
    case Alter < 58:
        "Senioren A"
    case Alter < 65:
        "Senioren B"
    case Alter > 64:
        "Senioren C"
    end

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

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

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

    Die Überprüfung des Stichtags könnte man wie folgt lösen:

     

    let Alter := 0;
    if month(today()) > 6 then
       Alter := age(Geburtstag) - 1
    else
       Alter := age(Geburtstag)
    end;

     

    Rest wie gehabt.

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

    Quatsch. Es muss natürlich heißen: "if month(Geburtstag)". Gut, dass es morgen wieder kühler werden soll ...

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

    So, jetzt noch mal richtig und etwas kompakter:

     

    let Alter := age(Geburtstag);
    if month(Geburtstag) > 6 then
       Alter := Alter - 1
    end;

     

    Ich glaub(!), jetzt hamwers ... ;)

    • Carlo_Luft
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Funktioniert mit der Einteilung wunderbar. Vielen Dank an alle.

    Allerdings sind bei denen, die kein Geburtstag eingetragen haben, automatisch "Jugend C" zugeordnet. Wie kann ich denn jetzt noch die leeren Felder ignorieren.

    Nochmals ganz herzlichen Dank an alle!!!

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Carlo,

    In meiner Formel steht als erstes: if Geburtstag then...

    das solltest du dann auch ansetzen. Ich würde aber die Formel von Copytexter nehmen, sie ist viel eleganter:

    ---

    if Geburtstag then
    let Alter := age(Geburtstag);
    if month(Geburtstag) > 6 then
       Alter := Alter - 1
    end;
    switch Alter >= 0 do
    case Alter < 10:
        "Jugend C"
    case Alter < 15:
        "Jugend B"
    case Alter < 19:
        "Jugend A"
    case Alter < 24:
        "Junioren"
    case Alter < 50:
        "Aktive"
    case Alter < 58:
        "Senioren A"
    case Alter < 65:
        "Senioren B"
    case Alter > 64:
        "Senioren C"
    end

    end

     

    ---

    Leo

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 10Antworten
  • 3282Ansichten