0

Dynamische Mehrfachauswahl Hilfe

Hallo

Ich möchte mich etwas ins arbeiten mit dynamischen Mehrfachauswahlen einarbeiten da sich dies für meine Musikdatenbank super anbieten würde.

Ich habe die Haupttabelle als BAND betitelt

In einer 2ten Tabelle sammle ich die MUSIKER

und in der 3ten Tabelle dann das GENRE

 

Nun habe ich in der Tabelle Band eine Dynamische Mehrfachauswahl erstellt, die mich bequem, sämtlich in der Tabelle MUSIKER eingetragenen Namen, auswählen und zuordnen lässt.

Soweit so gut und das passt auch.

 

ABER:

Wenn ich jetzt die Tabelle MUSIKER öffne, dann hätte ich gerne, wenn ich zb. auf MusikerB klicke, ich auch gleich sehe, welcher BAND er zugeordnet ist.

Das will bei meinen Versuchen nicht wirklich klappen und ich denke ich mache da nur einen Überlegungsfehler.

 

Wie kann ich es anstellen, dass ich beim anklicken der MUSIKER oder der GENRES gleich sehe welchen Bands sie zugeordnet sind?

 

Oder ist das per dynamischen Mehrfachauswahl nicht möglich?

 

Danke und Gruss

8 Antworten

null
    • Ninox Solution-Partner
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Roger J,

    meines Wissens nach meldet ein dynamisches Mehrfachauswahlfeld nicht zur selectierten Tabelle zurück wo es wie gewählt wurde.

    Deine gewünschte Info bei Musiker anzuzeigen geht aber mit Hilfe eines F(x)-Feldes.
    Mit diesem Skript sollte das funktionieren:

    let me := this;
    concat((select Bands where contains(text(Musiker), me.'Musiker Nachname')).Bandnamen)
    

    In der Annahme, dass

    • dein dynMFAWF in der Tabelle Bands "Musiker" heißt,
    • das Feld in der Tabelle Bands für den Namen der Band "Bandnamen" heißt,
    • das Namensfeld in der Tabelle Musiker "Musiker Nachname" heißt

    wenn nicht, deine Feldnamen im Skript eintragen. 😉

    Viel Erfolg
    Ronald

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi, Ronalds Vorschlag müsste funktionieren, kann(!) bei neuen Einträgen aber zu Problemen führen, da der interne Rückgabewert eines dynMFAF eigentlich die Record-Nr. ist. Deshalb würde ich empfehlen, diese auch für Abfragen und Auswertungen heranzuziehen:

    let myNr := this.number(Nr);
    concat((select Bands where chosen(Musiker, myNr)).Bandname)

    Oder die Tabellen gleich verknüpfen (N:M), denn bei vielen Musikern dürfte die Auswahl aus der Combobox schwierig werden. Außerdem könnte auf Dauer die Performance unter den diversen Formel-Feldern leiden, insbesondere in den Tabellenansichten. Last not least: Die Verknüpfung lässt sich von beiden Seiten aus herstellen.
     

      • roger_j
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro aus reiner Neugier: ab wie vielen Einträgen merkt mal eine Performance-Einbusse? Natürlich nur ungefähr :)

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Roger J Das kann ich so nicht sagen. Grundsätzlich ist die Performance der Ninox-Cloud schon sehr gut (weshalb ich auch fast ausschließlich im Browser arbeite). Trigger, Formeln und Scripte sind natürlich sozusagen das Salz in der Suppe. Ob und wie sie sich auf die Performance auswirken, hängt u. a. von der Menge und natürlich von den Formeln selbst ab. Eine einfache Berechnung à la "Menge * Preis" wird sich wohl auch bei zigtausend Datensätzen nicht spürbar negativ auswirken. Mehrere Spalten mit komplexen select-Anweisungen hingegen könnten schon bei wesentlich weniger Datensätzen zu Einbußen führen.

      Man muss sich halt bewusst sein, dass in Tabellenansichten jedes Formelfeld für jeden Datensatz immer wieder neu berechnet werden muss, um das jeweilige Ergebnis anzeigen zu können. Das kann sich läppern, auch wenn die einzelne Berechnung nur Millisekunden dauert.

      Man sollte also von Anfang an sensibel sein und sich bei jedem Formelfeld überlegen, ob man es wirklich braucht oder ob ein anderer Weg vielleicht effizienter ist (Verknüpfung; Übernahme in ein Datenfeld). Optimieren lassen sich oft aber auch die Formeln selbst. Bei mehreren Bedingungen einer select-Abfrage bspw. kann schon die Reihenfolge eine Rolle spielen: Wenn der erste Filter nur noch 100 von 10.000 Datensätzen zurückgibt, muss der zweite auch nur noch auf diese 100 angewendet werden, nicht auf die anderen 9.900.

      Das ist natürlich alles erst mal nur graue Theorie. Und sie betrifft nicht nur Ninox, sondern alle Entwicklungsplattformen. Man muss sich da also nicht verrückt machen, aber es schadet ja auch nicht, wenn man solche Dinge im Hinterkopf behält. Denn sollte die Performance bei stetig wachsender Datenmenge doch irgendwann mal leiden, dann ist i. d. R. schnelles Handeln gefordert.
       

      • roger_j
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro ich danke dir für die ausführliche Antwort. lg

    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Danke Euch beiden für die Inputs.

    werde ich morgen mal versuchen 

    lg Roger

    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Guten Morgen

     

    Das Ganze funktioniert und wird angezeigt.

    Aber es funktioniert nur dann, wenn ich nach neuen Einträgen bei den Bands, die DB erst schliesse und neu öffne. Dann wird es korrekt angezeigt. 

    Wenn ich Einträge mache und dann bei den Musikern schaue welchen Bands sie zugeordnet sind, dann sehe ich die neuen Einträge nicht. Wenn ich Ninox schliesse oder die DB schliesse und dann neu öffne, dann sind alle Einträge da

     

    Gruss

    Roger

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Roger J Genau das sollte mit der chosen(!)-Formel auf Basis der Record-Nr eigentlich(!) nicht passieren. Insofern stellt sich die Frage, ob du die auch schon ausprobiert hast.

Content aside

  • vor 1 JahrZuletzt aktiv
  • 8Antworten
  • 151Ansichten
  • 3 Folge bereits