Daten aus dynamischem Auswahlfeld übernehmen funktioniert nicht mehr nach update 3.14
Hallo Ninox-Team,
nach dem update haben wir Probleme mit unserer Datenbank.
Die Daten aus den dynamischen Auswahlfeldern werden falsch, manchmal richtig oder als leerer Datensatz übernommen.
Ich denke, dass das irgendwas mit den Datensatznummern und „first“ zu tun hat
Hier der Code der auslösenden Buttons.
Netz ausgeben :
if Netzauswahl = null then
alert("Bitte wähle ein Netz aus.")
else
let myFahrer := number(first(select Dashboard).Moppfahrer);
let myFaRec := first(select Moppfahrer where Nr = myFahrer);
let myObject := number(first(select Dashboard).Objekt);
let myObRec := first(select Objekte where Nr = myObject);
let myNetz := number(Netzauswahl);
let myDate := today();
let myBemerkung := Bemerkung;
let myWaeRec := first(select Objekte where contains(Objektname, "Wäsche"));
let myNetzRec := first(select Netze where Nr = myNetz);
let myMax := max(myNetzRec.Netzhistorie['aktueller Standort' = true].Eingangsdatum);
let myCheck := first(myNetzRec.Netzhistorie[Eingangsdatum = myMax and 'aktueller Standort' = true]);
if not contains(myNetzRec.Netznummer, "Sack") and
not contains(myCheck.Objekt.Objektname, "Wäsche") then
alert("Dieses Netz befindet sich nicht in der Wäscherei. Bitte wähle ein anderes Netz aus.")
else
let myUpdate := first(myNetzRec.Netzhistorie['aktueller Standort' = true and Objekt = myWaeRec]);
if myUpdate != null then
let myIst := myUpdate.Bemerkung;
if myUpdate.Bemerkung != null then
myUpdate.(Bemerkung := myIst +
"
" +
myBemerkung)
else
myUpdate.(Bemerkung := myBemerkung)
end;
myUpdate.(Ausgangsdatum := myDate);
myUpdate.('aus Objekt ausgegeben' := myFaRec);
myUpdate.('aktueller Standort' := false)
else
let newWae := (create Netzhistorie);
newWae.('welches (Netz)' := myNetzRec);
newWae.(Objekt := myWaeRec);
newWae.(Bemerkung := myBemerkung);
newWae.(Ausgangsdatum := myDate);
newWae.('aus Objekt ausgegeben' := myFaRec);
newWae.('aktueller Standort' := false)
end;
let newHis := (create Netzhistorie);
newHis.('welches (Netz)' := myNetzRec);
newHis.(Objekt := myObRec);
newHis.('an Objekt geliefert' := myFaRec);
newHis.(Eingangsdatum := myDate);
newHis.(Bemerkung := myBemerkung);
newHis.('aktueller Standort' := true);
Netzauswahl := null;
Bemerkung := null;
'Zeig mir alle Netze' := false;
let myDialog := dialog("Das Netz wurde an den Moppfahrer ausgegeben.", "Was möchtest Du jetzt tun?", ["Weiteres Netz ausgeben", "Zum Hauptmenü zurückkehren"]);
if myDialog = "Zum Hauptmenü zurückkehren" then
first(select Dashboard).(Objekt := null);
closeRecord()
end
end
end
Netz annehmen
if Netzauswahl = null then
alert("Bitte wähle ein Netz aus.")
else
let myFahrer := number(first(select Dashboard).Moppfahrer);
let myFaRec := first(select Moppfahrer where Nr = myFahrer);
let myObject := number(first(select Dashboard).Objekt);
let myObRec := first(select Objekte where Nr = myObject);
let myNetz := number(Netzauswahl);
let myDate := today();
let myBemerkung := Bemerkung;
let myWaeRec := first(select Objekte where contains(Objektname, "Wäsche"));
let myNetzRec := first(select Netze where Nr = myNetz);
let myMax := max(myNetzRec.Netzhistorie['aktueller Standort' = true].Eingangsdatum);
let myCheck := first(myNetzRec.Netzhistorie[Eingangsdatum = myMax and 'aktueller Standort' = true]);
if not contains(myNetzRec.Netznummer, "Sack") and
contains(myCheck.Objekt.Objektname, "Wäsche") then
alert("Dieses Netz befindet sich schon in der Wäscherei. Bitte wähle ein anderes Netz aus.")
else
let myUpdate := first(myNetzRec.Netzhistorie[Eingangsdatum = myMax and 'aktueller Standort' = true and Objekt = myObRec]);
if myUpdate != null then
let myIst := myUpdate.Bemerkung;
if myUpdate.Bemerkung != null then
myUpdate.(Bemerkung := myIst +
"
" +
myBemerkung)
else
myUpdate.(Bemerkung := myBemerkung)
end;
myUpdate.(Ausgangsdatum := myDate);
myUpdate.('aus Objekt ausgegeben' := myFaRec);
myUpdate.('aktueller Standort' := false)
else
let newHis := (create Netzhistorie);
newHis.('welches (Netz)' := myNetzRec);
newHis.(Objekt := myObRec);
newHis.(Ausgangsdatum := myDate);
newHis.('aus Objekt ausgegeben' := myFaRec);
newHis.(Bemerkung := myBemerkung);
newHis.('aktueller Standort' := false)
end;
let newWae := (create Netzhistorie);
newWae.('welches (Netz)' := myNetzRec);
newWae.(Objekt := myWaeRec);
newWae.('an Objekt geliefert' := myFaRec);
newWae.(Eingangsdatum := myDate);
newWae.(Bemerkung := myBemerkung);
newWae.('aktueller Standort' := true);
Netzauswahl := null;
Bemerkung := null;
'Zeig mir alle Netze' := false;
let myDialog := dialog("Das Netz wurde von der Wäscherei angenommen.", "Was möchtest Du jetzt tun?", ["Weiteres Netz annehmen", "Zum Hauptmenü zurückkehren"]);
if myDialog = "Zum Hauptmenü zurückkehren" then
first(select Dashboard).(Objekt := null);
closeRecord()
end
end
end
2 Antworten
-
Sorry, aber ich habe weder Zeit noch Lust, mich durch die vielen Zeilen deines Scriptes zu wühlen, um herauszufinden, woran es hapern könnte.
Deshalb nur grundsätzlich: Da Dynamische Auswahlfelder immer auf eine Tabelle zurückgreifen, kann man sich per number() die Datensatz-Nummer des gewählten Eintrags zurückgeben lassen:
record(TABELLE, number(DYNAUSWAHLFELD))
Will man sich nun die Werte von Datenfeldern aus diesem Datensatz zurückgeben lassen, könnte man das bspw. so tun:
let myRec := record(TABELLE, number(DYNAUSWAHLFELD)); DATENFELD1 := myRec.DATENFELD1; DATENFELD2 := myRec.DATENFELD2; ...
Vielleicht hilft das ein bisschen weiter.
-
Hi Planox,
ich weiß, das ist viel, bin aber auch nicht wirklich fit in Ninox . Das hat ja auch alles bis zum 18.11. funktioniert ab 19.11. nicht mehr. Ich versuche das mal umzuschreiben. Danke für die Rückmeldung
Content aside
- vor 1 MonatZuletzt aktiv
- 2Antworten
- 75Ansichten
-
3
Folge bereits