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
-
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) endAber 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')).Bezeichnungnun 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
