0

Loop für Zuteilung

Hallo Zusammen!

Ich würde ganz gerne eine Zuteilung für ein Auswahlfeld treffen anhand eines Verknüpfungsfeldes für alle Datensätze in der Tabelle. Die Zuteilung klappt immer nur für einen Datensatz, daher meine Frage: wie bekomme ich das für alle Datensätze hin? Das Skript ist auf einem Button hinterlegt.

let myText := 'Trainings-Typ'.Text;
let myTrainings := (select Trainings where Trainingstyp = null);
for i in myTrainings do
    switch myText do
    case "aaa":
        Trainingstyp := 2
    case "bbb":
        Trainingstyp := 1
    case "ccc":
        Trainingstyp := 3
    case "ddd":
        Trainingstyp := 4
    case "eee":
        Trainingstyp := 5
    case "fff":
        Trainingstyp := 6
    end
end

Freue mich über jegliche Ideen und Anregungen! :)

Viele Grüße

Jonas

6 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    let myText := 'Trainings-Typ'.Text;
    let myTrainings := (select Trainings where Trainingstyp = null);
    for i in myTrainings do
        switch myText do
        case "aaa":
            i.Trainingstyp := 2
        case "bbb":
            i.Trainingstyp := 1
        case "ccc":
            i.Trainingstyp := 3
        case "ddd":
            i.Trainingstyp := 4
        case "eee":
            i.Trainingstyp := 5
        case "fff":
            i.Trainingstyp := 6
        end
    end
     

    Da ein bestimmtes Auswahlfeld in jedem Record den gleichen Wert erhält, würde ich den switch-case  Vergleich außerhalb des Loops laufen lassen und im Loop nur die ermittelte Zahl zuordnen. So muss switch-case nur einmal ausgeführt werden und nicht x-Mal.
    Wenn sehr viele Records geändert werden müssen kann man in der Ninox-Cloud mit do as server - end die Änderungen beschleunigen

    do as server
        let vNumber := null;
        let myText := 'Trainings-Typ'.Text;
        let myTrainings := (select Trainings where Trainingstyp = null);
        switch myText do
            case "aaa":
                vNumber := 2
            case "bbb":
                vNumber := 1
            case "ccc":
                vNumber := 3
            case "ddd":
                vNumber := 4
            case "eee":
               vNumber := 5
            case "fff":
                vNumber := 6
            end;
        for i in myTrainings do
            i.Trainingstyp := vNumber
        end
    end

      • Jonas_Zander
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Klappt einwandfrei! Danke dir, Uwe! Ich habe direkt auch dein Tipp mit dem "do as server" übernommen.

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin Jonas Zander ,

    auf die Schnelle würde ich sagen, es müsste so funktionieren:
     

    for i in select Trainings where Trainingstyp = null do
        switch i.'Trainings-Typ'.Text do
        case "aaa":
            i.Trainingstyp := 2
        case "bbb":
            i.Trainingstyp := 1
        case "ccc":
            i.Trainingstyp := 3
        case "ddd":
            i.Trainingstyp := 4
        case "eee":
            i.Trainingstyp := 5
        case "fff":
            i.Trainingstyp := 6
        end
    end
    

     

    VG Ronald

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Ah, Uwe war schneller und ausfühlicher 🙂

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      DIGITOOL Schlafstörungen?

      • Jonas_Zander
      • vor 2 Jahren
      • Gemeldet - anzeigen

      DIGITOOL Danke dir für deine Unterstützung, Ronald! :)

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 6Antworten
  • 36Ansichten
  • 3 Folge bereits