[START]   [BLOG]   [PROJEKTE]   [PRIVAT [LINKS

Ich habe verschieden Ansichten mit unterschiedlichen Dokumenten die als Vorlage dienen. Alle Vorlagen haben das gleiche Format, sprich die gleichen Felder und sollen deswegen auch die gleiche Maske benutzen. Nun benötige ich aber für die unterschiedlichen Ansichten ein Feld zu Unterscheidung und wollte das beim Anlegen des Dokumentes setzen.

 In jeder Ansicht existiert ein Aktionsknopf mit folgender Formel:

@SetTargetFrame(“Main”);
@Command([Compose];”Vorlage”)

Nun wollte ich beim Anlegen ein Feld setzen um die Dokumente trotz gleicher Maske auseinander halten zu können. Also schnell äquivalenter Code in Lotus-Skript erzeugt:

Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument

Call uiws.SetTargetFrame(“Main”)
Set uidoc = uiws.ComposeDocument(“”,”",”Vorlage”)
Call uidoc.FieldSetText(“Typ”,”Kuvert”)

Notes grüßte mit “Zielrahmen ist Vorläufer des Script-Objekts” (Target is ancestor of script), grrr… Eine Möglichkeit wäre bei ComposeDocument das ReturnUIDocument auf False zu setzen aber leider gibt es dann keine Möglichkeit mehr auf das UIDocument zuzugreifen.

Setzen des Zielrahmens in der Aktion wie in der Maske blieben erfolglos. Nach langem Suchen und rumprobieren bin ich dann auf eine anderen Lösung gekommen.
Folgende Zeilen innerhalb der Maske “Vorlage” in Postopen erfüllen den Wunsch:

 Dim uiws As New NotesUIWorkspace
 Dim uiview As NotesUIView
 Set uiview = uiws.CurrentView

Call Source.FieldSetText(“Typ”,uiview.ViewName)

Falls man andere Werte benutzen möchte als den ViewName lässt sich das natürlich leicht mit IF … THEN realisieren.

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben

Du musst angemeldet sein, um einen Kommentar zu schreiben.