Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: lio78 am 24.07.03 - 21:07:43
-
Hallo,
in einem Feld einer Maske der names.nsf (glaub ich) gibt es ein Kombinationsfeld, in dem die Einträge durch pipes (|) getrennt sind:
Deutsch|Englisch
Dr.|Dr.
Herr|Mr.
Frau|Mrs.
wenn ich ein Dokument auf Basis dieser Maske öffne, zeigt das Kombinationsfeld nur die deutschen Ausdrücke an!
Mein Problem: Ich exportiere dieses Feld per lotus script in eine Textdatei und es werden die englischen Ausdrücke exportiert. Ich möchte aber die deutschen Ausdrücke haben.
Gibt es ein Befehl der sozusagen die linke Seite vom pipe (|) separiert?
-
Oops, da müsstest Du Dich jetzt mal beschäftigen mit LS im Front- und im Backend ;-)
Hintergrund: In einem Schlüsselwortfeld (egal, welchen Typs) stehen als Vorgabewerte beispielsweise
Ja | 1
Nein | 0
Wenn Du in LS die Werte auswertest, siehst Du im Frontend (NotesUIDocument)
"Ja" oder "Nein",
aber im backend den Alias
"1" oder "0"
Einen "Befehl", im Front- oder Backend entweder / oder anzuzeigen, gibt es nicht.
In Ansichten passiert Dir das gleiche: Es wird der Alias angezogen, und der müsste dann umgesetzt werden.
Die Umsetzung muß also programmatisch erfolgen.
HTH,
Bernhard
PS: "in einem Feld der Maske der names.nsf (glaub ich)" find ich wieder sowas von "cool" ... Mensch, was soll denn das nur ? Bitte Grundsatz beachten: "Vor Schreiben einer eMail Hirn einschalten !"
-
Hi,
die Pipes sind die Aliasnamen der Schlüsselwörter - analog zu Masken und Ansichten.
Wenn Du das Dokument öffnest, zeigt er Dir den Wert links davon an. Im Dokument selbst ist aber nur der Alias gespeichert! Darum wird bspw. in einer Ansicht auch nur der Alias angezeigt.
Das erklärt das Verhalten Deines Scripts.
Wenn Du nicht den Alias, sondern den Anzeigetext haben willst, musst Du das wieder "zurückübersetzen".
Das widerspricht aber eigentlich dem Sinn der Aliasverwendet. Aber nun Gut.
Wenn es nicht zuviele und keine dynamischen Aliasnamen sind (dann weißt Du u.U. ja gar nicht den Anzeigetext), kannst Du das wie folgt in Deinem Script machen:
... fleißig programmier....
dim anrede as string
Select case doc.Title(0)
case "Mr.":
anrede = "Herr"
case "Mrs.":
anrede = "Frau"
end select
Andreas
-
Ich stimm' Glombi zu:
Besonders nachvollziehbar ist es nicht, was Iris da mit den Alias-Werten gemacht hat. Aber wir müssen damit leben ;-(
Ciao,
Bernhard
-
Hi,
mit diesem Problem habe ich auch schon des öfteren gekämpft. Da bei herausgekommen ist folgender Workaround:
Ich nehme für jedes in Frage kommende Feld ein weiteres Text-Feld(versteckt) in die Maske auf und schreibe im Querysave-Event mit Frontend-Methoden den Wert vom KombiFeld in das Text-Feld.
Beisp:
Kombifeld -> Anrede
Textfeld -> UIAnrede
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Source.Document.UIAnrede = Source.FieldGetText("Anrede")
End Sub
Immer wenn ich dann die Werte brauche, die der User in der Maske sieht, z.B. ansicht oder Export, greife ich dann auf das Textfeld zu.
Zugegeben nicht schön, aber es funktioniert.
Axel
-
Hi Axel,
guter Tip, aber in diesem aktuellen Fall müsste man ja das NAB ändern und alle Dokumente anpassen.
Generell würde ich beim Erstellen eigener Anwendung immer empfehlen, nicht mit hardcodierten Schlüsselwörtern zu arbeiten, sondern diese per Konfigurationdokument zu setzen.
Dann kann man per Script z.B. beim Export zur Laufzeit das User-Interface (links vom |) lesen.
Es bleibt das Problem mit der View. Da sollte man dann Deinen Tip noch beherzigen.
Andreas