Eine Teilmaske in eine Maske einbinden, die sich durch einen User verändern läßt?

  • 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?

  • 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

    • Offizieller Beitrag

    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

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • 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?

    • Offizieller Beitrag

    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.

    • Offizieller Beitrag

    also hier einige Code-Schnipsel - bitte erst testen!

    Code
    ' 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)


    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?

    • Offizieller Beitrag

    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

    • Offizieller Beitrag

    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?

    • Offizieller Beitrag

    Im ersten Script ist keine Schleife drin.


    Code
    ' 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,

    Code
    On Error resume next

    damit das nichtvorhandene Profildokument mir keinen Fehler bringt.


    Gruß
    Dirk

    • Offizieller Beitrag

    aktiviere bitte die Zeile ' doc.Save ... und probier es nochmal.


    Gruß
    Dirk