Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: joan am 02.10.06 - 17:13:03

Titel: Formelsprache: Suche nach Schlüsselwerten in einem Konfigurationsdokument
Beitrag von: joan am 02.10.06 - 17:13:03
Hallo! :)

Ich stehe hier gerade vor einem kleinen Problem und finde keinen sinnvollen Ansatz. Vielleicht hat aber jemand solch ein Problem schon gelöst.

Gegeben ist ein Konfigurationsdokument, darin ein Feld, das eine Textliste enthält. Die Textliste besteht aus Key|Value Paaren der Form "80|NL":"90|FR" usw.

Innerhalb eines Dokuments muß ich nun anhand eines gegebenen Keys den zugehörigen Wert aus der Liste suchen. Wenn das Dokument eine "90" enthält, muß also ein "FR" zurückkommen. Unter R6 ist das kein Problem, da kann man mit einer @For Schleife über die Liste gehen:

@For(n := 1;n <= @Elements(langor) & override = ""; n := n + 1;
@If (@Left(langor[n];"|") = reg; override := @RightBack(langor[n];"|");""));

Da unsere Anwender aber zum Teil noch unter R5 arbeiten, geht das leider nicht. @Keywords scheint dafür nicht geeignet zu sein, aber ich hoffe, daß da jemand noch einen Trick kennt. So unüblich sind solche Konstruktionen ja nicht...
Titel: Re: Formelsprache: Suche nach Schlüsselwerten in einem Konfigurationsdokument
Beitrag von: Axel am 03.10.06 - 13:27:48
So müsste es funktionieren:

pos := @Member("90";@Left(langor; "|"));
override := @Right(@Subset(@Subset(langor; pos); -1);"|");


Axel
Titel: Re: Formelsprache: Suche nach Schlüsselwerten in einem Konfigurationsdokument
Beitrag von: joan am 04.10.06 - 12:49:01
Hallo Axel,

Vielen Dank für den Tipp. Die Idee ist bestechend... :) Ich kam gar nicht darauf, weil mir nicht bewußt war, daß @Left auch mit Listen funktioniert. Das kommt davon, wenn man hauptsächlich in LS programmiert..

Noch ein wenig Fehlerbehandlung dazu (falls pos "" ist) und es klappte einwandfrei. :)
Titel: Re: Formelsprache: Suche nach Schlüsselwerten in einem Konfigurationsdokument
Beitrag von: Tode am 16.10.06 - 07:45:02
genau das ist ja die Stärke an Formelsprache, dass Sie bis R6 OHNE jegliche Schleifen auskam, weil beinahe jeder Befehlö auf Listen einwandfrei funktioniert, und das wesentlich performanter als jede Schleife.

Deine Anforderung wäre im übrigen auch so zu lösen gewesen:

@Trim( @Left( langor ; "|90" ) )

oder variabel:

x := "90";
@Trim( @Left( langor ; "|" + x ) )

Gruß
Tode

P.S.: das kommt davon, wenn man Quereinsteiger Notes- Datenbanken programmieren lässt, ohne ihnen zumindest ne Formel- Grundschulung zu gewähren: Dann programmieren sie immer von hinten durch die Brust ins Auge... (nicht gegen Dich gerichtet @joan, sondern eher gegen Deinen Arbeitgeber)