0

Skript versagt durch if-Zweig

Hallo zusammen, ich bitte euch um euer Schwarmwissen bzw. seht ihr ja vielleicht das Problem. Ich scheitere nunmehr seit 4 Tagen. Das Skript

 

            let myID := this;
            let myStatus := Status;
            let load_date := this.Datum;
            let blaueLoadnummer := this.'Blaue Loadnummer';
            "# Team-Daten einmalig laden #";
            let myTeam := record(Teams,number(seatActionId));
            let useTeamTicket := if myTeam.'Team-Ticket verwenden' = true then
                    true
                else
                    false
                end;
            let teamTicket := if useTeamTicket then
                    myTeam.number('Team-Ticket')
                else
                    null
                end;
            let teamTicketRecord := if useTeamTicket then
                    record(Preise,teamTicket)
                else
                    null
                end;
            let myDiscipline := myTeam.number(Disziplin);
            "# Nächste Team-Nummer ermitteln #";
            let maxTeam := number(max('Sprünge'.Team));
            let my_group := if maxTeam = 0 then 1 else maxTeam + 1 end;
            "# Teammitglieder durchgehen #";
            "# Teammitglieder durchgehen #";
            let my_team_members := myTeam.'Team-Mitglieder'.number('Springer auswählen');
            do as server
                for i in my_team_members do
                    if cnt('Sprünge'[number(Springer) = i]) = 0 then
                        "# Kundendaten einmalig laden #";
                        let kunde := record(Kundendaten,i);
                        "# Sprung erzeugen #";
                        let seat := (create 'Sprung buchen');
                        seat.(Sprungtyp := 6);
                        seat.(Loads := myID);
                        seat.(Status := myStatus);
                        seat.('Load-ID vor Verschiebung' := number(myID));
                        seat.(Team := my_group);
                        seat.(Springer := i);
                        seat.(Disziplinen := myDiscipline);
                        "# Sprung und Preis je nach Team-Ticket #";
                        let amount := 0;
                        let jump_description := "";
                        "# Sprung und Preis je nach Team-Ticket #";
                        let amount := 0;
                        let jump_description := "";
                        "# Sprung und Preis je nach Team-Ticket #";
                        let amount := 0;
                        let jump_description := "";
                        if useTeamTicket = true then
                            seat.(Sprung := record(Preise,teamTicket));
                            amount := teamTicketRecord.Einzelpreis;
                            jump_description := teamTicketRecord.Bezeichnung
                        else
                            let standardSprung := kunde.number('Standard-Sprung');
                            let preisRecord := record(Preise,standardSprung);
                            seat.(Sprung := standardSprung);
                            amount := preisRecord.Einzelpreis;
                            jump_description := preisRecord.Bezeichnung
                        end
                    end
                end;
                "# Nach Server-Block: changes_saved für alle Team-Sprünge setzen #";
                'Sprünge'.(changes_saved := true)
            end

liegt im Änderungstrigger eines Ja/Nein-Felds und versagt unter bestimmten Bedingungen komplett den Dienst (auch testweise über einen Button).

Wenn "Team-Ticket verwenden' = true" ist funktioniert das Skript sauber. Wenn Team-Ticket verwenden' != true versagt es. Damit meine ich , dass auch das create nicht ausgeführt wird. Dafür habe ich keine Erklärung.

Ich habe versucht, die Ursache einzugrenzen. Wenn Team-Ticket verwenden' != true ist und ich ersetze

seat.(Sprung := record(Preise,teamTicket));
amount := teamTicketRecord.Einzelpreis;
jump_description := teamTicketRecord.Bezeichnung

durch ein void, funktioniert auch wieder das Anlegen von Datensätzen samt Zuordnung der Team-Mitglieder. 

Es gibt keine Bedingungen zum Ausblenden (Lesbar wenn) von Record.

Vielen Dank für eure Hilfe.

1 Antwort

null
    • Icarus_Ralf_Becker
    • vor 6 Stunden
    • Gemeldet - anzeigen

    Ich habe die drei vorangestellten Variablen useTeamTicket/teamTicket/teamTicketRecord entfernt und das Skript vereinfacht:

                let myID := this;
                let myStatus := Status;
                let load_date := this.Datum;
                let blaueLoadnummer := this.'Blaue Loadnummer';
                "# Team-Daten einmalig laden #";
                let myTeam := record(Teams,number(seatActionId));
                let myDiscipline := myTeam.number(Disziplin);
                "# Nächste Team-Nummer ermitteln #";
                let maxTeam := number(max('Sprünge'.Team));
                let my_group := if maxTeam = 0 then 1 else maxTeam + 1 end;
                "# Teammitglieder durchgehen #";
                let my_team_members := myTeam.'Team-Mitglieder'.number('Springer auswählen');
                do as server
                    for i in my_team_members do
                        if cnt('Sprünge'[number(Springer) = i]) = 0 then
                            "# Kundendaten einmalig laden #";
                            let kunde := record(Kundendaten,i);
                            "# Sprung erzeugen #";
                            let seat := (create 'Sprung buchen');
                            seat.(Sprungtyp := 6);
                            seat.(Loads := myID);
                            seat.(Status := myStatus);
                            seat.('Load-ID vor Verschiebung' := number(myID));
                            seat.(Team := my_group);
                            seat.(Springer := i);
                            seat.(Disziplinen := myDiscipline);
                            "# Sprung und Preis je nach Team-Ticket #";
                            let amount := 0;
                            let jump_description := "";
                            "# Sprung und Preis je nach Team-Ticket #";
                            let amount := 0;
                            let jump_description := "";
                            "# Sprung und Preis je nach Team-Ticket #";
                            let amount := 0;
                            let jump_description := "";
                            if myTeam.'Team-Ticket verwenden' = true then
                                seat.(Sprung := record(Preise,number(myTeam.'Team-Ticket')));
                                amount := record(Preise,number(myTeam.'Team-Ticket')).Einzelpreis;
                                jump_description := record(Preise,number(myTeam.'Team-Ticket')).Bezeichnung
                            else
                                let standardSprung := kunde.number('Standard-Sprung');
                                let preisRecord := record(Preise,standardSprung);
                                seat.(Sprung := standardSprung);
                                amount := preisRecord.Einzelpreis;
                                jump_description := preisRecord.Bezeichnung
                            end
                        end
                    end;
                    "# Nach Server-Block: changes_saved für alle Team-Sprünge setzen #";
                    'Sprünge'.(changes_saved := true)
                end
    

    Aber es bleibt dabei: die drei Zeilen 

    seat.(Sprung := record(Preise,number(myTeam.'Team-Ticket')));
    amount := record(Preise,number(myTeam.'Team-Ticket')).Einzelpreis;
    jump_description := record(Preise,number(myTeam.'Team-Ticket')).Bezeichnung
    

    nun aber auch unabhängig davon, ob myTeam.'Team-Ticket verwenden' true oder false ist.

Content aside

  • vor 6 StundenZuletzt aktiv
  • 1Antworten
  • 19Ansichten
  • 1 Folge bereits