0

Feld Mehrfachauswahl mit Werten aus anderer Tabelle

Können Sie mir sagen, wie ich Feld-Werte (allenfalls vorgefiltert) aus einer anderen Tabelle in einer Mehrachauswahl (Combobox) anwenden kann: 

Ich habe zwei Tabellen: inder Tabelle "Themen" führe ich Werte "Sicherheit", Backup", "Applikation"; die zweite Tabelle führt Artikel, welche ich mit den Themen verknüpfen möchte - und zwar so, dass ein Artikel sowohl zum Datensatz  "Sicherheit" und "Backup" verknüpft wird. Hoffe, das ist möglich.

Gruss Kaspar Hintermüller 

9 Antworten

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

    'n Abend. Ein der Combobox entsprechendes Steuerelement gibt es bei Ninox nicht. Am nächsten kommen dem die Auswahlfelder, nur eben ohne die Möglichkeit, eigene Eingaben machen zu können. Auswahlfelder, ob ein- oder mehrfach, lassen sich bei Ninox aber leider (noch) nicht aus einer Tabelle befüllen.

    Man müsste also mit einer Verknüpfung arbeiten. Und wenn ich es richtig sehe, dann müsste es in diesem Fall eine n:n-Verknüpfung sein. Also: Jedem Artikel können mehrere (= n) Themen zugeordnet sein, und jedes Thema kann in mehreren (= n) Artikeln vorkommen.

    n:n-Verknüpfungen realisiert man über eine dritte, so genannte Verbindungstabelle. Man verknüpft die Tabellen 'Artikel' und 'Themen' also nicht direkt miteinander, sondern beide jeweils 1:n mit der Verbindungstabelle, die z. B. 'Artikel_Themen' heißen könnte und nur die beiden Verknüpfungsfelder beinhalten könnte. Klingt vielleicht kompliziert, ist aber recht simpel. Das Vorgehen ist auch im Handbuch beschrieben ("n:n" steht ziemlich weit unten auf der Seite):

     

    https://ninoxdb.de/de/manual/tabellen-und-beziehungen/tabellen-verknuepfen

     

    Nachteil: Der Aufwand bei der täglichen Nutzung ist etwas höher, weil man für eine Verknüpfung halt drei mal klicken muss. Sollte die Anzahl der Themen also überschaubar sein und die Tabelle 'Themen' außer der Schlagwort-Zuordnung keine weitere Funktion haben, wäre vielleicht zu überlegen, die Themenbegriffe direkt in ein Auswahlfeld einzutragen (oder auch mehrere). Auf diese Weise kann man auch recht komplexe Strukturen abbilden. Voraussetzung wäre allerdings, dass sich die Themen als solche nicht ständig ändern, weil man jede Anpassung manuell im Auswahlfeld vornehmen müsste.

    Das erst mal so ganz allgemein. Bei weiteren Fragen gerne melden.

    • Nils
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich habe mir genau so etwas erstellt. Ich möchte je Datensatz Tags vergeben. Dazu habe ich eine Verbindungstabelle "Getaggte Artikel" erstellt und diese sowohl mit der neuen Tabelle "Tags" als auch mit der Tabelle "Artikel" verknüpft. Nun erscheint in meinem Formular in der Tabelle "Getaggte Artikel". Wenn ich dort auf die Lupe klicke, wird aber eine leere Liste angezeigt und nicht meine Tags aus der Tabelle "Tags". Wo habe ich einen Fehler gemacht?

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

    Hallo Nils, für jede n:m-Verknüpfung wird in der Verknüpfungstabelle ("Getaggte Artikel") ein neuer Datensatz angelegt. Du musst also auf das Pluszeichen "Neuer Datensatz" klicken, dann kannst du dort einen Eintrag aus der Tabelle "Tags" auswählen.

    • Nils
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Genau, über das "+" im Formularfeld gelange ich zum Formular von "Getaggte Artikel" wo ich dann widerrum auf das + zum erstellen eines neuen Tags und auf die Lupe für das Durchsuchen der vorhandenen Tags klicken kann.

    Ich wollte aber direkt über die Lupe im ersten Step die vorhandenen Tags durchsuchen. Dort erscheint aber ein Dialog mit einer leeren Tabelle (obwohl es Tags gibt) und den Buttons "Neuer Datensatz" und Abbrechen. 

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

    Nein, das funktioniert so leider nicht. Die Tabelle "Artikel" ist ja nicht direkt mit der Tabelle "Tags" verknüpft, sondern mit der Zwischentabelle "Getaggte Artikel". Deshalb können in der Auswahlliste auch keine Tags erscheinen. Man muss immer den Weg über die Zwischentabelle "Getaggte Artikel" gehen und dort einen Tag auswählen. Wie gesagt: Jede n:m-Verknüpfung erfordert einen neuen Datensatz in der Verknüpfungstabelle, welche nur aus den beiden N:1-Verknüpfungen besteht.

     

    Ist die indirekte Verknüpfung hergestellt, kann man sich die Tags im Artikeldatensatz aber anzeigen lassen (Klick in die Titelzeile -> "Spalte einblenden" -> "Tags" -> "Tagbezeichnung").

    • Nils
    • vor 3 Jahren
    • Gemeldet - anzeigen

    OK, das habee ich verstanden. Dann ist das eben so :)

     

    Was mich etwas stört ist

     

    - zur Anlage eines neuen Tags gehen, nichts eingben und zurück gehen = leere Zeile in der Tabelle "Tags"

    - Tags von Artikeln entfernen = leere Teile ohne Zuordnung in der Tabelle "Getaggte Artikel"

     

    Wie kann ich das vermeiden? Evtl. durch ein Skript, das Zeilen löscht, die keine Zuordnung zur Tabelle "Artikel" mehr haben?

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

    Vermeiden lässt sich das nicht. Wenn man auf die Schaltfläche "Neuer Datensatz" klickt, dann tut Ninox halt genau das: Es legt einen neuen Datensatz an. Hat man versehentlich geklickt, dann kann man den neu erstellten Datensatz über das Papierkorb-Symbol sofort löschen. Schließt man das Formular einfach nur, dann bleibt der Datensatz unvollständig erhalten.

     

    Ein Drama ist aber auch das nicht, denn tatsächlich kann man die Tabelle ggf. tatsächlich mit einem Skript bereinigen. Im vorliegenden Szenario könnte das für die Zwischentabelle "Getaggte Artikel" so aussehen:

     

    delete select 'Getaggte Artikel' where not Artikel or not Tags

     

    Dabei werden alle Datensätze gelöscht, bei denen eine der beiden Verknüpfungen "Artikel" oder "Tags" leer ist (weil bei einer Zwischentabelle ja beide Verknüpfungen vorhanden sein müssen). Man kann sich die Code-Zeile bspw. auf einen Button legen und gelegentlich bei Bedarf ausführen.

    • Carsten_Losch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hey, kann man sich da nicht über die Rechtevergabe selber einschränken?  Also zuerst alle Datensätze erstellen die man verlinken möchte, und dann die Rechte so einstellen, dass man selber zwar Datensätze lesen und verlinken kann, aber nicht erstellen..... 

    • Nils
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das würde aber voraussetzen dass nicht ständig neue dazu kommen. Wenn das so wäre könnte ich auch gleich ein Mehrfachauswahlfeld nehmen, ohne den ganzen N:M Hokus Pokus.

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 9Antworten
  • 2580Ansichten