Domino 9 und frühere Versionen > Entwicklung
Formelsprache und dynamische Feldnamen
florianh78:
Hallo zusammen,
ich knoble hier an einem Problem für das ich einfach keine Lösung finde. Kern des Problems ist, daß ich keinen Weg finde die Formelsprache dazu zu bringen mir einen String als Feldnamen zu interpretieren.
Das Skript sieht folgendermaßen aus:
feldname := "KEYWORDS_" + @Implode( @ReplaceSubstring( @V3UserName; " " : "/" : "-" : "ß"; "_" : "__" : "___" : "ss" ) );
inhalt := feldname;
ausgabe := @If( @Length( inhalt ) = 0; "(keine)"; inhalt );
@Implode( ausgabe; "; " )
Der Riesenausdruck bei feldname erzeugt einfach nur den Feldnamen, der dann z.B. heißt "KEYWORDS_Florian_Holeczek__bla__blubb" (wenn der Username Florian Holeczek/bla/blubb lautet).
Solange ich diesen "String" ohne Anführungszeichen hinter "feldname :=" schreibe funktioniert alles wie es soll (Trivialfall). Das bringt mir jedoch nichts, da der Feldname dynamisch ist.
Ich weiß, daß LotusScript sowas unterstützt, bin jedoch aufgrund der Verwendung in einem Berechneten Text wohl oder übel auf die Formelsprache angewiesen.
Falls also jemand weiß wie man a) die Formelsprache zu der gewünschten Funktionalität überreden kann oder b) mittels LotusScript einen Berechneten Text "simulieren" kann, der möge sich doch bitte äußern!
Vielen Dank + beste Grüße,
Florian
Driri:
Hi,
vielleicht habe ich das falsch verstanden, aber wenn ich deine Formel mal ausprobiere, kommt bei mir auch der gewünschte String raus, sprich je nach User enthält "feldname" einen "personalisierten" String.
Allerdings vermute ich mal, daß das nicht alles ist, was Du an Code hast, wo hakt es denn ?
klaussal:
... sollte es so sein, dass ein feldname dynamisch erzeugt werden soll, je nachdem was in einem string drinne steht. also: inhalt string = "uschi" ergibt ein feld namens uschi ? dann frage ich mich, wie deine maske aussieht mit diesem dynamischem feld ??? ??? ???
ata:
... du könntest dir entweder ein normal berechnetes Feld nehmen und im Initialize des Feldes den Wert in dieses Feld schreiben lassen, oder du machst es per @GetDocField( ... ) => hier wird der Feldname als String übergeben...
ata
PS: Konzeptionell ist das mit den dynamischen Feldnamen aber nicht ganz unkritisch, da Notes-Datenbanken nicht ubegrenzt Felder enthalten können...
ata
florianh78:
Hallo zusammen,
danke erstmal, mit so einer "Masse" an Antworten hab ich nicht gerechnet. Werde am Donnerstag weiterprobieren und poste eine eventuelle Lösung dann natürlich hier rein.
Nur mal ein paar Zeilen an die bisherigen Tip-Geber:
driri:
Ja Du hast das falsch verstanden, es soll eben nicht der Feldname, sondern der Inhalt eben dieses Feldes erscheinen!
klaussal:
Richtig erkannt! Das ganze ist Teil einer Konstruktion mit folgenden Beteiligten: 1 Schaltfläche "ändern", 1 durch Code hinter der Schaltfläche angelegtes (und deshalb nicht sichtbares) Feld, und 1 Berechneter Text, der den Inhalt des versteckten Feldes enthalten soll. Zweck/Vorteile: a) Benutzer dürfen nur aus einer im Profildokument festgelegten Menge von Keywords auswählen und b) jeder Benutzer sieht nur seinen eigenen Eintrag, kann jedoch mittels der Suche auch auf die Felder der anderen Benutzer zugreifen.
ata:
- Danke einstweilen für den Tip, hab in der Richtung jedoch schon rumgeforscht... erster Teil des Tips hört sich vielversprechend an, ist jedoch in diesem Fall nicht verwendbar, da die Felder ja von einem LotusScript angelegt werden und außerdem immer nur genau eins sichtbar sein soll.
- Mittels @GetDocField() kommt im Berechneten Text eine Fehlermeldung, daß ich dazu in diesem Kontext keine Berechtigung habe. Vielleicht ein Tip parat, wie man das umgehen kann?
- Daß es nicht unkritisch ist weiß ich, aber ich hoffe (!?), daß Notes doch genügend Felder für ein paar Dutzend Benutzer bereitstellen wird. Weißt Du die genaue Grenze?
Grüße,
Florian
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln