Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: cebolina am 24.07.08 - 09:16:40

Titel: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: cebolina am 24.07.08 - 09:16:40
Hallo @Formel-Spezialisten,

in einem Dokument habe ich folgende Felder:

1. Feld "Parameter" (Berechnet beim Anlegen, Mehrfachwerte zulassen) mit folgenden Werten:
"Standort A#Filiale München"
"Standort B#Filiale Stuttgart:Filiale Frankfurt"
"Standort C#Filiale Berlin:Filiale Hamburg"

2. Feld "Auswahl" (Dialogliste, Mehrfachwerte zulassen) mit folgender Formel für die Auswahl:
@Explode(@Left(Parameter ; "#") ; ";")
Damit kann der User einen oder mehrere Standorte auswählen.

So weit so gut. Jetzt zu meinem Problem.

3. Feld "Ergebnis" (Berechnet, Mehrfachwerte zulassen)
Hier möchte ich erreichen, dass im Ergebnis die zugehörigen Werte rechts von "Parameter#" ausgegeben werden.
Also so:
Auswahl = 'Standort A'; Ergebnis = 'Filiale München'.
Auswahl = 'Standort A' und 'Standort B'; Ergebnis = 'Filiale München', 'Filiale Stuttgart' und 'Filiale Frankfurt'
Mit dieser Formel bekomme ich das gewünschte Ergebnis, allerdings nur bei Auswahl eines einzelnen Wertes:
@Explode(@RightBack(Parameter ; Auswahl + "#") ; ":")

Kann mir jemand sagen, wie die Formel aussehen muss, damit sie auch bei Auswahl von Mehrfachwerten funktioniert?

Ich tippe mal auf irgendwas mit @Transform, komme aber leider nicht weiter.

Danke und Gruß
Stefan
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: dirk_2909 am 24.07.08 - 09:31:31
Hallo

Für Deine Auswahlformel im feld "Auswahl" genügt folgendes:

Code
@Left(Parameter ; "#")

(Dort Eigenschaft "Dokument bei Schlüsselwertänderung neu berechnen" [oder so] aktivieren)

Die Formel des feldes "Ergebnis" sollte so aussehen:

Code
@Explode( @Right( Parameter ; Auswahl + "#" ) ; ":" )



Anstelle des Doppelpunktes würde ich ein anderes Trennzeichen verwenden - z.B.: "~"


Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: cebolina am 24.07.08 - 09:46:08
Hallo Dirk,

Dein Vorschlag für die Ergebnis-Formel
@Explode( @Right( Parameter ; Auswahl + "#" ) ; ":" )
reicht leider nicht.

Es wird nur das Ergebnis für die erste Auswahl berechnet.

Ergebnis:
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: dirk_2909 am 24.07.08 - 09:53:56
Ist das Ergebnisfeld wirklich ein Mehrfachwerte-Feld?
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: cebolina am 24.07.08 - 09:58:39
Ja, alle drei Felder sind Mehrfach-Felder.
'Parameter' Typ = Text, Berechnet beim Anlegen, Mehrfachwerte zulassen
'Auswahl' Typ = Dialogliste, Bearbeitbar, Mehrfachwerte zulassen
'Ergtebnis' Typ = Text, Berechnet, Mehrfachwerte zulassen

Edit:
Datenbank angehängt
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: Axel am 24.07.08 - 11:47:30
Mit dieser Formel funktioniert's erstmal.

result:="";

@Transform(Parameter; "var";
  @For(n:=1; n<=@Elements(Auswahl); n:=n+1;
        tmp:=@Right(var; Auswahl[n] + "#");
        @If(tmp!=""; @Set("result"; result : tmp); ""))
);
@Trim(result)

Das Ganze lässt sich mit Sicherheit noch optimieren, aber dazu fehlt mir im Moment die Zeit.

Axel
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: dirk_2909 am 24.07.08 - 13:22:54
So. Hab mir jetzt mal zeit genommen  ;D

Hier die Formel für das Feld "Ergebnis" :

Code
@Explode( @Transform( Parameter ; "_m" ; @If( @Left( _m ; "#" ) *= Auswahl ; @Right( _m ; "#" ) ; @Nothing ) ) ; ":" )


 ^-^
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: cebolina am 24.07.08 - 13:36:44
Hallo Dirk,

ich versteh' zwar die Formel (noch) nicht ganz, aber sie funktioniert und bringt das gewünschte Ergebnis.

Vielen Dank für Deine Mühe.

Gruß
Stefan
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: dirk_2909 am 24.07.08 - 13:45:43
Ich kann ja mal versuchen die Formel sprechen zu lassen, damit Du sie verstehst:

@Explode( >>> die neue Liste aufteilen (mehrfachwerte)
@Transform(  >>> eine bestehend Liste Transformieren (Designer-Hilfe verwenden!!)
Parameter ;   >>> zu ändernde Liste
"_m" ;  >>> jedes Element der "alten" Liste wird über diese Variable angesprochen
@If( @Left( _m ; "#" ) *= Auswahl  >>> Wenn der Linke-teil des gereade verarbeitenden Elementes in der Auswahlliste vorkommt >>>

; @Right( _m ; "#" ) ;  >>> dann davon den Rechten-teil in die "neue" Liste schreiben (Feld 'Ergebnis')
@Nothing )  >>> Ansonsten nix hinzufügen ....
) ; ":" )  >>> Neu Liste bei ":" aufteilen ....

Hoffe jetzt ist die Formel sprechender
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: Axel am 24.07.08 - 13:53:46
Ich wusste doch, dass es auch einfacher geht.   ;)


Axel
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: cebolina am 24.07.08 - 13:56:29
Ich gebe zu, dass ich mit @Transform so meine Probleme habe - aber man lernt ja gerne dazu.
Nochmals vielen Dank für Deine Mühe und Erklärungen.

Mein Tag ist (zumindest vorübergehend) gerettet  ;)

Gruß
Stefan
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: Maverick am 12.08.08 - 11:10:15
Hi Stef,

seit wann habt ihr Filialen in Berlin, Hamburg und München?

*sfg*

Paul
Titel: Re: Liste berechnen aufgrund Auswahl in Dialogliste
Beitrag von: Fineas am 12.08.08 - 12:45:45
Das Explode ist eigentlich überflüssig, wenn man die Eingabe modifiziert.

Parameter:

"Standort A~Filiale München":
"Standort B~Filiale Stuttgart":
"Standort B~Filiale Frankfurt":
"Standort C~Filiale Berlin":
"Standort C~Filiale Hamburg"

Auswahl mit unique:

@Unique(@Left(Parameter; "~"))

Ergebnis ist ein simples Transform der Basisliste:

@Transform( Parameter ; "_TMP" ; @If( @Left( _TMP ; "~" ) = Auswahl ; @Right( _TMP; "~" ) ; @Nothing ) )

Wenn Du dann noch statt der Dialogbox z.B. Kontrollkästchen nimmst, kannst Du die Eingaben auch wieder vernünftig abwählen.

Gruß, Fineas!