Tabelle mit dynamischen Mehrfachauswahlfeld vergleichen
Hallo,
ich habe eine Tabelle Artikel und eine Tabelle Eigenschaften. In den Artikeln gibt es ein dynamisches Mehrfachauswahlfeld das alle Eigenschaften aus der Tabelle Eigenschaften anzeigt.
Wenn jetzt ein Artikel die Eigenschaft „grün“ hat, würde ich gern in einer Ansicht in dem Artikel alle andere Artikel die auch „grün“ als Eigenschaft haben anzeigen. Aber es sollen auch Artikel angezeigt werden die neben grün auch gelb etc. haben.
habe es mit Contains und einer Schleife versucht. Entweder ich bekomme keine Ergebnisse oder es klappt nur mit einem Attribut.
Ich hoffe es kann mir jemand helfen.
2 Antworten
-
Hallo,
eine Frage noch vorweg, ich nehme an, wenn dem Artikel gelb und grün, etc. zugewiesen sind sollen alle Artikel angezeigt werden, welche unter Anderem gelb oder grün zugewiesen haben?
Ich persönlich verwende die dyn. Mehrfachauswahlfelder (DMFA) gerne als schöne Auswahloption, die aber bei Änderung tatsächlich n:m Verknüpfungen zwischen, in diesem Fall Artikel und Eigenschaften herstellen. Damit kannst du in weiterer Folge wesentlich leichter und schneller auf die Daten zugreifen.
Es geht aber auch so und mit contains() bist du schon auf der richtigen Spur. Wichtig ist nur, dass du die ausgewählten Optionen durch einen Seperator trennst, bsp.: #. Du bekommst mit numbers(DMFA) eine Lister der Record Nr. von Eigenschaften. Wenn du einfach so mit contains(list, 1) suchst, bekommst du evtl. sonst auch die Datensätze, die 11, 14,16,... usw. zugewiesen haben.
Sieht dann so aus:
let me := this; let myProps := numbers(me.Eigenschaften); select Artikel where max(for p in myProps do contains("#" + replace(concat(numbers(Eigenschaften)), ", ", "#") + "#", "#" + p + "#") end) and Nr != me.Nr
Die max() Funktion wertet Boolean Arrays genauso aus und gibt true zurück, wenn mindestens ein true im Array enthalten ist. Mit and Nr != me.Nr schließe ich dann noch den eigenen Record aus.
-
Genial! Vielen Dank. Da wär ich im Leben nicht drauf gekommen.
Content aside
- Status Answered
- vor 2 JahrenZuletzt aktiv
- 2Antworten
- 102Ansichten
-
3
Folge bereits