0

Einschränkung der Auswahl aus verknüpften Tabellen

Hallo Zusammen,
ich habe folgende Frage: Ich möchte ganz gerne die Auswahl in einem Verknüpfungsfeld einschränken. Zunächst zur tabellenstruktur: Ich habe drei Tabellen: "Manager", "Personen" und Teilnahmen". Jeder Eintrag im "Manager" legt ein Team an, dem ich Personen zuweise. Da eine Person in verschiedenen Teams sein kann, nutze ich dafür die Tabelle "Teilnahmen" um die "Personen" mit dem "Manager" zu verknüpfen. Ich möchte nun die Auswahl einschränken, denn ich möchte nur Personen auswählen können, die bisher noch nicht in dem Team sind. Ich habe bisher versucht (wobei a(Teilnahmen) und b(Personen) ist):

a.Manager.Teilnahmen.Personen != b
oder
a.Manager.Teilnahmen.Personen.Nr != b.Nr

Das klappt aber, wie ihr euch schon denkt, leider nicht. Ich habe auch drum herum schon vieles versucht, komme aber einfach zu keinem Ziel. Ich komme hier einfach gedanklich nicht weiter...

Was z.B. gut klappt ist :

a.Manager.Geschlecht = b.Geschlecht

Danke schon mal für eure Hilfe!

LG

Stephan

9 Antworten

null
    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Keine Ideen? 🤷🏼‍♂️

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hm,

     

    wenn Du Dir aus der Tabelle "Manager" ein Feld für den Vergleich rausgreifst, könnte evtl. das hier klappen:

     

    not contains(concat(b.Teilnahmen.Manager.Feld1),a.Manager.Feld1)

     

    lg, Torsten

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    👍 Stimmt, das müsste gehen. Ich hatte auch überlegt, bin aber nicht so schnell drauf gekommen.

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke euch!

    Die Idee hatte ich tatsächlich auch schon, jedoch sagt Ninox, "Die Funktion ist nicht definiert contains(String,nid) 🤷🏼‍♂️

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    stopp, gelöst: "nid" heißt ja, dass die beiden Teile nicht gleich sind, oder? Habe auf jeden fall jetzt

    not contains(concat(b.Teilnahmen.Manager.Feld1),concat(a.Manager.Feld1))

    geschrieben und es klappt!
    Mal wieder: Herzlichen Dank euch beiden und Dir Torsten für die Lösung!!!

    Liebe Grüße
    Stephan

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    "nid" steht m. W. für einen Wert vom Typ ID. "concat" erzeugt aber einen String, weshalb auch contains() einen String als Vergleichswert erwartet. "Feld1" könnte deshalb z. B. der eindeutige Name des Managers o. ä. sein.

     

    Um auch wenigstens ein bisschen was beizutragen ... ;)

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    warum irgendein Feld als "nid" interpretiert wird, erschließt sich mir nicht. Ich bin offengestanden davon ausgegangen, dass "Feld1" vielleicht tatsächlich der Name des Managers wäre (also ein Feld des Typs "Text"), so dass

    not contains(concat(b.Teilnahmen.Manager.Name),a.Manager.Name)

    eigentlich schon zum Erfolg geführt hätte.

     

    lg, Torsten

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Na ja, vermutlich hat Stephan es ohne "Feld1" versucht, also nur IDs eingelesen. Dann kommt es zu genau der Fehlermeldung. Deshalb war deine Idee goldrichtig.

    • Stephan_Haumann
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,
    Ja, so war es! Danke für die Aufklärung @Copytexter!!!

    Liebe Grüße