0

unique() und create()

Hallo Zusammen,
ich habe noch einmal eine Frage mit der Bitte um eure Ideen:
Meine Anwesenheitsliste soll - ideal für Corona-Zeiten - nun auch potentielle Infektionswege nachvollziehen können. Daher brauche ich in meiner Anwesenheitsliste nun auch die zugeordneten Trainer.

let me := this;
let myC := (select Aufgaben where Rolle like "Trainer Stützpunkt" and contains(concat(me.'DHB-Kader'), text('Stützpunkt-Kader')) = true and Status like "bis heute");
for i in myC do
let myA := (create 'Anwesenheit Trainer');
myA.(Veranstaltung := me);
myA.(Teilnehmer := i.Personen)
end

Durch meinen contains(concat()) Befehl vergleiche ich ein Mehrfachauswahlfeld mit einem Auswahlfeld und gucke, ob die Kader-Bedingungen stimmen. Die Tabelle "Aufgaben" weist in solch einem Auswahlfeld meinem Trainer immer einen Kader zu. Grundsätzlich kann es aber sein, dass dieser Trainer für mehrere Kader zuständig ist, es also nei Mehrfachauswahl von "DHB-Kader" auch mehrere Treffer in "Stützpunkt-Kader" für die gleiche Person gibt. ich suche nun nach der richtigen Position für den Befehl unique(), denn ich möchte, dass in der Tabelle der Trainer nur einmal erscheint. Ich habe schon versucht das unique() an alle möglichen Stellen zu setzen - bisher ohne Erfolg, denn ich bekomme weiterhin doppelte Einträge, wenn der Trainer für mehrere Kader zuständig ist die bei der Mehrfachauswahl gewählt wurden.
Ich freue mich auf euren Rat!
LG
Stephan

6 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan,

    ---

    let myC := (select Aufgaben where Rolle like "Trainer Stützpunkt" and contains(concat(me.'DHB-Kader'), text('Stützpunkt-Kader')) = true and Status like "bis heute");
    for i in unique(myC.Personen) do
    let myA := (create 'Anwesenheit Trainer');
    myA.(Veranstaltung := me);
    myA.(Teilnehmer := i.)
    end

    ---

    Leo

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo, genial!
    Falls dies hier jemand irgendwann über die Suche findet: der Punkt hinter dem letzten "i" und vor dem "end" muss noch weg, dann funktioniert es perfekt!!!
    LG

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,
    ich habe nun noch eine Stelle, an der mein "unique" nicht klappen will. Ausgangssituation: Ich habe in der Tabelle "Sichtung" eine Verknüpfung zur Tabelle "Trainingseinheiten", die in der Tabelle "Sichtungung" dann "Verknüpfte Einheiten" heißt. In "Trainingseinheiten" bzw. hier "Verknüpfte Einheiten" ist wiederum eine Verknüphung als Anwesenheitsliste mit Spielern aus der "Spielerdatenbank". Für jeden anwesenden Spieler (wenn Ja/Nein-Feld "Anwesend"=ja) gibt es neben der Anwesenheitsliste in "Trainingseinheiten" zudem eine individuelle Bewertung der Trainingseinheit in der Tabelle "Bewertungen". In der Tabelle "Sichtung" will ich nun die anwesenden Spieler alles verknüpften Einheiten in die Untertabelle "Sichtungsteilnehmer" anzeigen lassen, um dann im zweiten Schritt die Bewertungen addieren zu können, die sich aus den teilgenommen Trainingseinheiten ergeben, die zu einer Sichtung gehören. Die Befehlsschaltfläche "Sichtung beenden" sieht für mich bisher folgendermaßen aus, jedoch bekomme ich immernoch doppelte Einträge...

    let me := this;
    for i in 'Verknüpfte Einheiten' do
    for ii in Bewertungen do
    let mySP := ii.Spielerdatenbank;
    for iii in unique(mySP) do
    let x := (create Sichtungsteilnehmer);
    x.(Sichtung := me);
    x.(Spielerdatenbank := mySP)
    end
    end
    end

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan,

    Ich würde es so versuchen:

    ---

    let me := this;
    let myTeilnehmer:= 'Verknüpfte Einheiten'.Anwesenheitsliste[Spielerdatenbank.Anwesend=true].Spielerdatenbank;
    for i in unique(myTeilnehmer) do
    let x := (create Sichtungsteilnehmer);
    x.Sichtung := me;
    x.Spielerdatenbank := i
    end

    ---

    wobei ich mir nicht sicher bin ob ich die Rolle der Tabelle "Anwesenheitsliste" richtig verstanden habe.

    Leo

     

    or ii in Bewertungen do
    let mySP := ii.Spielerdatenbank;
    for iii in unique(mySP) do
    let x := (create Sichtungsteilnehmer);
    x.(Sichtung := me);
    x.(Spielerdatenbank := mySP)
    end
    end
    end

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich weiß nicht, wie diese Kopie nach Leo entstanden ist. Also nur

    let me := this;
    let myTeilnehmer:= 'Verknüpfte Einheiten'.Anwesenheitsliste[Spielerdatenbank.Anwesend=true].Spielerdatenbank;
    for i in unique(myTeilnehmer) do
    let x := (create Sichtungsteilnehmer);
    x.Sichtung := me;
    x.Spielerdatenbank := i
    end

    Leo

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    super, danke Dir! Klappt!