Hallo,
ich habe eine Maske, in der eine Teilmaske eingefügt ist. Ich möchte den Editoren die Möglichkeit geben, per Knopfdruck die Daten der Teilmaske zu ändern. Wie bekommt man das hin bzw. gibts da vielleicht noch andere Möglichkeiten?
Hallo,
ich habe eine Maske, in der eine Teilmaske eingefügt ist. Ich möchte den Editoren die Möglichkeit geben, per Knopfdruck die Daten der Teilmaske zu ändern. Wie bekommt man das hin bzw. gibts da vielleicht noch andere Möglichkeiten?
Was meinst du mit per Knopfdruck die Daten der Teilmaske ändern ?
Kannst du das noch etwas genauer beschreiben ?
Ja genau. Also in der Maske befinden sich Daten die wöchentlich aktualisiert werden. Die Teilmaske enthält nur Text, der z.Bsp nur halbjährlich geändert wird. Bisher war es so, dass wenn Änderungen gemacht werden mußten, nur der Entwickler diese vornehmen konnte. Ich möchte aber das die Autoren diese Änderungen selbst durchführen können. Deswegen möchte ich ihnen die Möglichkeit geben per Knopfdruck in den Bearbeitungsmodus der Teilmaske zu gelangen und den Text zu ändern. Leichter wäre sicher, wenn man keine Teilmaske verwenden würde sondern noch eine zweite Maske, die man mit einem Knopf aufruft, ändert und abspeichert verwenden würde. Die geänderte Maske würde dann automatisch beim nächsten Aufruf bzw. beim nächsten Anlegen neuer Dokumente in der eigentlichen Maske erscheinen.
Du willst also dass der Nutzer einen bestimmten Teil des Dokumentes auf Knopfdruck bearbeiten kann den Rest aber nicht.
Hab ich das richtig verstanden ?
Wenn ja kannst du doch mit zwei Masken arbeiten, bei denen nur die Teilmaske zu bearbeiten ist
So wie ich es verstehe, handelt es sich um einen statischen Text, der gelegentlich inhaltlichangepasst werden soll.
Wenn dies der Fall ist, würde ich mir ein Profildokument anlegen, in dem der Text hinterlegt wird. In Deinen eigentlichen Dokumenten würde ich dann ein Feld anlegen (berechnet zur Anzeige), welches sich den Text aus dem Profildokument holt.
Gruß
Dirk
Das mit dem Profildokument werde ich mir mal genauer ansehen.Ersteinmal Danke für den Tipp.
Das mit dem Profildokument hat geklappt. Allerdings hat er nicht die Formatierungen (Schriftart) mitgeliefert obwohl beide Felder RichText-Felder sind. Gibts da noch einen Trick?
Ups - RT-Felder sind nicht so einfach wie Text-Felder zu behandeln.
RT-Felder kannst Du im UI schlecht kopieren. Da gibt es nur 2 Möglichkeiten.
1. ein Kopieren über die Zwischenablage - macht aber wenig Sinn, da dann das RT-Feld bearbeitbar sein muss oder
2. kopieren im Backend, Felder im Backend füllen und dann als UI-Dokument aufrufen (funktioniert ohne speichern des Backend-Dokumentes erst ab Version 5.x).
Nachteil das RT-Feld wird im Dokument gespeichert und es müssten die RT-Felder (in allen Dokumenten), bei Änderung des Profil-Dokumentes, nachberechnet werden.
Gruß
Dirk
... und da verließen sie ihn... ohje, das bedeutet im Klartext eine LotusScript Programmierung oder? Könnten Sie da vielleicht etwas kontreter werden. Mein Scriptkenntnisse sind etwas unterbelichtet.
also hier einige Code-Schnipsel - bitte erst testen!
' Script zum Erstellen eines neuen Dokumentesdim ws as New NotesUIWorkSpacedim session as New NotesSessiondim db as NotesDatabasedim doc_Profil as NotesDocumentdim doc as NotesDocumentdim item_Profil as NotesItemdim item as NotesItemdim uidoc as NotesUIDocumentset db = session.CurrentDatabaseset doc_Profil = db.GetProfileDocument("NameProfilDokument")set item_Profil = doc_Profil.GetFirstItem("NameDesRichTextFeldes")set doc = New NotesDocument(db)doc.Form = "MaskenName neues Dokument"Set item = item_Profil.CopyItemToDocument( doc, "NameDesRichTextFeldes im Dokument")' doc.Save true, true, true 'Evebtuell muss das Dokument noch gespeichert werden, falls die RT-Felder nicht angezeigt werdenset uidoc = ws.EditDocument(true, doc)
' Update der Dokumente, reicht wahrscheinlich einmal pro Nacht
dim session as New NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim doc_Profil as NotesDocument
dim item_Profil as NotesItem
dim item as NotesItem
set db = session.CurrentDatabase
set doc_Profil = db.GetProfileDocument("NameProfilDokument")
set item_Profil = doc_Profil.GetFirstItem("NameDesRichTextFeldes")
set dc = db.AllDocuments
set doc = dc.GetFirstDocument
While not doc is Nothing
Set item = item_Profil.CopyItemToDocument( doc, "NameDesRichTextFeldes im Dokument")
doc.Save true, true, true
set doc = dc.GetNextDocument(doc)
Wend
Alles anzeigen
Die Namen in Hochkommas müssen durch die entsprechenden Einträge ersetzt werden.
Gruß
Dirk
Erstmal vielen Dank ich eiere zwar hier schon ein bisschen mit Script rum aber das ich das Profildokument auch irgendwo angeben muss, hab ich natürlich total verpaßt :-). Ich probiers gleich mal aus!
Ich hab das Script jetzt einmal bearbeitet. Allerdings hatte ich als Maskenereignis der bearbeitbaren Maske QueryOpen gewählt, weil die Daten ja bereits vor dem Anlegen eines neuen Dokuments enthalten sein sollen. Da erscheint eine Fehlermeldung, klar weil Edit Dokument... welches Ereignis wäre denn passend für das Script?
Teil 1 sollte in einer Schaltfläche eingefügt werden. Mit diesem Script wird ein neues Dokument geöffnet.
Das 2. Script kommt in einen periodischen Agent, der über alle Dokumente läuft. Dieses Script führt ein Update des RT-Feldes durch.
Gruß
Dirk
Habs in eine Schaltfläche gepackt aber leider werden 20 neue Dokumente angelegt und es kommt die Fehlermeldung Überlauf des Script-Stapels und als nächstes User Defined error
baue erst mal nur das Script zum Erstellen eines Dokumentes ein. Dies kommt in eine Aktionsschaltfläche in einer Ansicht.
Gruß
Dirk
Genau das habe ich gemacht. Den Agenten habe ich noch gar nicht erstellt. Jedesmal wenn das Script durchläuft erstellt es exakt 16 Dokumente. Ich habe versucht den Fehler mit Hilfe einer MsgBox zu finden aber nix, das Script läuft durch! Ist das vielleicht irgendwie eine Endlosschleife?
Im ersten Script ist keine Schleife drin.
' Script zum Erstellen eines neuen Dokumentesdim ws as New NotesUIWorkSpacedim session as New NotesSessiondim db as NotesDatabasedim doc_Profil as NotesDocumentdim doc as NotesDocumentdim item_Profil as NotesItemdim item as NotesItemdim uidoc as NotesUIDocumentset db = session.CurrentDatabaseset doc_Profil = db.GetProfileDocument("NameProfilDokument")set item_Profil = doc_Profil.GetFirstItem("NameDesRichTextFeldes")set doc = New NotesDocument(db)doc.Form = "MaskenName neues Dokument"Set item = item_Profil.CopyItemToDocument( doc, "NameDesRichTextFeldes im Dokument")' doc.Save true, true, true 'Eventuell muss das Dokument noch gespeichert werden, falls die RT-Felder nicht angezeigt werdenset uidoc = ws.EditDocument(true, doc)
Habe das Script bei mir getestet und es erstellt mir ein neues Dokument. Ich habe bei mir eine Zeile am Anfang eingefügt,
damit das nichtvorhandene Profildokument mir keinen Fehler bringt.
Gruß
Dirk
Es wird zwar nur noch ein Dokument angelegt aber das RTF wird nicht mehr angelegt, bedeutet es werden keine Werte mehr übergeben.
aktiviere bitte die Zeile ' doc.Save ... und probier es nochmal.
Gruß
Dirk
Jetzt hat es geklappt. Allerdings hat es nicht an der Zeile gelegen sondern an der Position, wo der Befehl zur Fehler Ignorierung anzubringen ist. Danke!