0

Switch Problem! oder doch IF verwenden?

Hallo es ist bestimmt wieder etwas kleines, warum es bei mir wieder hackt. Ich habe mir folgende Anweisung gebastelt. Vieles klappt gut, aber die switch Anweisung nicht. 

for i in unique('PV-String'.Kabel) do
    let a := first(select Produkte where Produktname = i.Produktname);
    let CA := sum('PV-String'.'PV-Strings');
    let BB := switch CA >= 0 do
        case CA > 1 and CA < 2:
            1
        case CA < 4:
            2
        case CA > 5:
            3
        end;
    let newP := (create Produktauswahl);
    newP.(Produkte := a);
    newP.(Projekt := me);
    newP.('Stück' := BB)
end

Ich möchte gerne das die Summe der PV-Strings   // let CA := sum('PV-String'.'PV-Strings'); //  

In der Switch geprüft wird und

Wenn sum: 1 bis 2 PV-Strings dann Stück 1 anlegen

Wenn sum: 3 bis 4 PV-Strings dann Stück 2 anlegen

Wenn sum: 5 bis 6 PV-Strings dann Stück 3 anlegen

Wenn sum: 7 bis 8 PV-Strings dann Stück 4 anlegen

neuer Datensatz in der Tabelle "Produktauswahl".

vielen Dank für die Hilfe

2 Antworten

null
    • chalvi // WERBEAGENTUR GbR
    • VS2021
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wenn es jemanden weiter hilft! Ich habe das Problem jetzt so gelöst.

    for i in unique('PV-String'.Kabel) do
        let a := first(select Produkte where Produktname = i.Produktname);
        let CA := sum('PV-String'.'PV-Strings');
        let BB := switch CA > 0 do
            case CA = 1:
                1
            case CA = 2:
                1
            case CA = 3:
                2
            case CA = 4:
                2
            case CA = 5:
                3
            case CA = 6:
                3
            case CA = 7:
                4
            case CA = 8:
                4
            end;
        let newP := (create Produktauswahl);
        newP.(Produkte := a);
        newP.(Projekt := me);
        newP.('Stück' := BB)
    end

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen
    VS2021 said:
    case CA > 1 and CA < 2:

     Größer 1 UND kleiner 2? Die Bedingung ist mit Ganzzahlen schwer zu erfüllen ...

    Da die case-Struktur nach der ersten Übereinstimmung verlassen wird, denke ich, dass es so funktioniert hätte:

    let BB := switch CA > 0 do
       case CA < 3: 1
       case CA < 5: 2
       case CA < 7: 3
       case CA < 9: 4
    end