n:m Verbindung (Mehrfachauswahl aus Zeile)
Hallo zusammen
Ich habe mich beireits früher schon Mal zu meinem Problem an euch gewendet. Leider konnte ich die Sache nicht lösen...
Ich habe ein Tabelle "Kurs" erstellt und dann eine Untertabelle "Teilnahme" dort kann ich jetzt die Teilnehmer aus einer anderen Tabelle holen und mit Anwesend oder Abwesend markieren.
Nun kann ich aber nur immer einen Teilnehmer nach dem Anderen auswählen. Ich möchte, dass ich mehrer Teilnehmer mittels Mehrfachauswahlfeld auswählen. Ich habe rund 10 Teilnehmer, die alle Kurse absolvieren müssen. Ich möchte, dass ich alle Personen die da waren mittels Hacken anwählen kann und welche nicht angehackt wurden, automatishc als abwesend gelten.
Dank der Teilnehmer Tabelle kann ich Ende Jahr geunau schauen wer bei welchem Kurs anwesend war.
Ich kriege jedoch diese Verbindungen und das Mehrfachauswahlfeld so nicht hin...
Danke für eure Hilfe
Grüsse Florian
7 Antworten
-
Hallo Florian, Auswahlfelder lassen sich leider nicht direkt mit Tabellen verbinden, falls du das im Sinn hattest. Heißt: Entweder machst du es wie bisher mit einer Verknüpfung zu den Teilnehmern - oder mit einem Mehrfachauswahlfeld, in das du die zehn festen Teilnehmern einträgst. Dann bräuchtest du auch keine Verknüpfung von 'Teilnahme' zu 'Teilnehmer' und hättest nur einen Datensatz pro Tag statt zehn.
Beim Eintragen der Teilnehmer müsste man allerdings darauf achten, dass die Namen exakt so geschrieben sind wie in der Tabelle Teilnehmer. Oder man stellt eine eindeutige Teilnehmernummer voran, falls es sowas gibt. Jedenfalls braucht man ein Kriterium, über das sich die Einträge des Auswahlfeldes später mit der Tabelle 'Teilnehmer' abgleichen lässt.
In der Tabelle 'Teilnehmer' könnte man eine Ansicht erstellen, welche auf die Kurse-Untertabelle 'Teilnahme' zugreift, und die Anwesenheitstage anzeigen lassen:
let myName := Name;
select Teilnahme where contains(text(Anwesend), myName)
Oder umgekehrt die Fehltage:
let myName := Name;
select Teilnahme where not contains(text(Anwesend), myName)
Es gibt natürlich noch andere Möglichkeiten, aber wenn es speziell darum geht, mit einem Auswahlfeld schnell Anwesenheiten zu erfassen und zu speichern, ist das wahrscheinlich die einfachste.
-
Besten Dank für deine Antwort. Leider krieg ichs nicht hin.
Ich habe eine Tabelle mit dem Kurs gemacht. dabei konnte ich das Mehrfachauswahlfeld mit den Teilnehmern erstellen. (siehe Bild)
Leider konnte ich den Kurs bei den Teilnehmern nicht verknüpfen dass es mir den besuchten Kurs unter der Person Anzeigt. Ich habe es mit einer Rückverbindung versucht, was für mich am Besten wäre..
Besten Dank für die Hilfe
-
Ich war davon ausgegangen, dass jeder Kurs aus mehreren Zeiteinheiten besteht (z. B. Tagen), für die in der Untertabelle 'Teilnahme' jeweils die Anwesenheit erfasst werden soll. Aber wenn die Teilnahme nur ein mal für den gesamten Kurs erfasst wird, ist es im Grund ja noch einfacher. Man braucht dann nicht mal eine Verknüpfung zwischen 'Kurs' und 'Teilnehmer' (obwohl die natürlich aus anderen Gründen sinnvoll sein kann).
Da sich das Mehrfachauswahlfeld ja nun direkt in der Tabelle 'Kurse' befindet, muss man in o. g. genannter Formel eigentlich nur die Tabellennamen austauschen. Also:
Im Formular 'Teilnehmer' den Administratormodus aktivieren, unten in der Werkzeugleiste auf "Gestaltungselemente" und dort auf "Ansicht" klicken. Im Formular findet sich dann eine leere Tabelle mit der Überschrift "Ansicht". Dort jetzt über den Schraubenschlüssel in die Optionen gehen und bei "Funktion" besagte Formel eintragen:
let myName := Name;
select Kurse where contains(text(Anwesend), myName)
In der Ansicht werden dann alle Kurse angezeigt, bei denen die betreffende Person anwesend war. Man kann sich auch noch eine zweite Ansicht mit "not" vor dem "contains" (siehe oben) einrichten für die Kurse, an denen nicht teilgenommen wurde. Die Namen bzw. Überschriften der Ansichten kann man selbst festlegen.
Das ist wie gesagt eine sehr einfache Lösung, die darauf beruht, dass es nicht zig verschiedene Kurse gibt, die Teilnehmer weitgehend unverändert bleiben und eine überschaubare Anzahl haben. Für alles weitere wäre wohl tatsächlich eine Verknüpfung sinnvoller. Den Aufwand für das manuelle Aktivieren der Anwesenheit für jeden einzelnen Teilnehmer könnte man dadurch verringern, indem man als Voreinstellung immer alle auf "anwesend" setzt und nur die deaktiviert, die tatsächlich fehlen.
-
Habe dies nach deiner Anleitung gemacht. Leider bleibt die Ansicht leer und es zeigt mir keine Kurse an....
Grüsse
-
Super, hat funktioniert, musste (Anwesend) durch Teilnhame ersetzen.
-
Ach so, ja, hatte dieselbe Feldbezeichnung aus dem ersten Posting benutzt. Nur zur Sicherheit: Hier geht es jetzt um die direkte Abfrage des Mehrfachauswahlfeldes zur Erfassung der Anwesenheiten in der Tabelle 'Kurse'. In deinem Screenshot heißt dieses Feld 'Teilnehmer'. Wenn du das nicht umbenannt hast, dann gehört diese Bezeichnung in die Abfrage (statt "Anwesend").
Die Untertabelle 'Teilnahme' wird bei dieser Lösung jetzt eigentlich nicht mehr benötigt.
-
Bis jetzt funktioniert es einwandfrei...
Leider habe ich nun entdeckt, dass diese Ansicht im Drucklayout nicht eingefügt werden kann. Ich habe bis anhin auch keine Lösung gefunden. Vielleicht kennt jemand eine Funktion (Bedingung).
Danke und Gruss
Content aside
- vor 4 JahrenZuletzt aktiv
- 7Antworten
- 742Ansichten