Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 24.05.05 - 14:49:36
-
Hallo Forum,
ich habe eine „Knobelei“, bei der ich beim besten Willen nicht weiter komme. Wäre schön, wenn jemand mir auf die Sprünge hilft.
Problem: Gegeben ist ein Feld mit Mehrfachwerten, das für Filterfunktionen der Dokumente einer View verwendet wird. Werte darin sind z.B.: TAxxxx, BRxxx, TCxx (x sind willkürliche Zeichen). Bisher war die Selektion einfach durch @Contains(Feldname;“TA“) realisiert worden.
Nun kommt neuerdings hinzu, dass das Feld auch den Wert Txxx beinhalten kann und die Selektion von Dokumenten sowohl TAxxxx als auch Txxx – gekennzeichnete Dokumente beinhalten soll, die demgemäß einer gemeinsamen Kategorie angehören.
Anm.: Die Funktion @Contains(Feldname;“T“) scheitert natürlich, weil TCxx ausgeschlossen werden soll.
Habt Ihr eine Idee, wie man vorgehen kann?
Alexis
-
Hallo Alexis,
vielleicht klapp es ja damit:
( @Contains(Feldname;“T“) & !@Contains(Feldname;"TC") )
Grüsse
Holger
-
ich finde es gefährlich mit @Contains zu arbeiten, weil ein BRxTA auch ein True bei @Contains(Feldname; "TA") gibt.
wahrscheinlich mal es geht um die Ansichtsauswahl, dann probiers mal damit:
SELECT @Left(Feldname;2) != "TC" & @Left(Feldname;1) = "T"
-
Hallo Dirk, hallo Holger,
Danke für eure Mühe, leider klappt es auch so nicht.
Grund ist (vielleicht war meine Beschreibung zu kurz), dass auch bei Auftreten von TCxxx und Txxxx gemeinsam im Mehrfachfeld eines Dokumentes dieses bei der Selektion enthalten sein soll.
Alexis
-
Dann musst Du Einträge zählen und die Anzahl vergleichen.
Select @Member( "TC" ; @Left(Feldname;2)) < @Member( "T" ; @Left(Feldname;1));
-
Pack die Formel von Antwort #2 in ein @Transform.
Die Ergebnisliste erhält dann "True" und "False" Elemente;
Wenn ein "True" in der Liste dabei ist, gehört das Dokument in die View-Selektion.
Gruß,
Uwe
-
Hallo Uwe,
dickes Kompliment: mit der @Transform-Funktion klappt's :D.
Vielen Dank für Deine Hilfe. Da wäre ich nie drauf gekommen.
Alexis
-
Hi,
wie sieht denn deine Select-Formel nun aus. Ich kann mir das mit dem @Transform noch nicht so richtig vorstellen.
Ist bestimt auch für die Allgemeinheit von Interesse.
Danke.
Axel
-
Hallo Axel,
Du hast natürlich Recht mit Deinem Hinweis.
Hier also die Funktion, wie sie in meiner Applikation läuft:
SELECT (@Transform(Bereich;"Var";@Left(Var;3) = "BRG" | @Left(Var;2)="TD" | (@Left(Var;1) = "T" &! @Left(Var;2) = "TL"))
Die Selektion lässt Dokumente zu mit: "BRG", "TD" und "T" nicht jedoch Dokumente mit "TL" am Anfang der Werte im Feld "Bereich".
Offen gestanden, durchschaue ich den Algorithmus der Funktion (noch) nicht , in der praktischen Anwendung klappt es jedoch.
Alexis
-
@Transform geht einfach JEDES ELEMENT der Ausgangsliste EINZELN durch
und wendet darauf die angegebene @Formel an.
Für jedes Einzelement gibt die Formel in diesem Fall @True oder @False zurück,
so dass am Ende von @Transform eine Ergebnis-Liste analog der Ausgangsliste herauskommt, in diesem Fall mit @True oder @False Elementen.
Select selber kann mit Listen umgehen,
das heißt wenn mindestens einmal @True in der Ergebnisliste vorkommt, gibt Select @True zurück und das Dokument kommt somit in die View-Selektion.
Das entscheidende an @Transform ist also das EINZELNE Durchgehen der Listenelemente.
Gruß,
Uwe