Beiträge von bhort

    Wenn die Person keine Änderungen zurückschreiben soll, würde ich ein Kopie über den Notes Client erzeugen und dann die Zugriffsrechte ändern. So können die geänderten Zugriffsrechte nicht aus Versehen zurück repliziert werden.


    Des weiteren sollte man darauf achten, dass keine lokale Verschlüsselung eingstellt ist.


    Der Vollständigkeit halber der Hinweis, dass man beim Weitergeben von Datenbanken natürlich erst einmal klären sollte, ob die Datenbank bzw. deren Inhalte überhaupt weitergegeben werden dürfen. ;)

    Es spricht ja nichts dagegen, mehrere HTML-Signaturen pro User in einer Datenbank zu hinterlegen oder aber sogar automatisch erzeugen zu lassen.


    Spannender ist die Frage mit iNotes. Da muss ich ehrlich gesagt passen. Es in dem Fall ja kein Notes-Client vorhanden, der ein HTML-Dokument per Import in Richtext umwandelt.

    Wie wäre es, ein HTML-Dokument als Signature zu importieren? So arbeite ich mit meinen Signaturen.


    Code
    Call uidocMemo.Import("HTML File", sFilepath)


    Wobei sFilepath die Stelle im Datei-System angibt, wo die Signature liegt. Es hängt ein wenig von der Infrastruktur ab, wie die HTML-Datei mit der individuellen Signature für den Anwender dort hingelangt.

    Bei jeder internen Mail wird ein Feld "Logo" mitgesendet. Der Inhalt des Feldes bezeichnet den Alias-Namen einer passenden Image-Ressource.


    Wenn nun also ein Firmen-Logo oder ähnliches verwendet werden soll, muss in jeder Mail-Datenbank auf der Empfängerseite die entsprechende Image-Ressource vorhanden sein.


    In der Maske "CalendarProfile" in der Mail-Datenbank sind alle Namen der vorhandenen Image-Ressourcen aufgelistet. Dort müsste die neue Image-Ressource mit aufgenommen werden.


    Es sei an dieser Stelle noch einmal deutlich gesagt. Der Briefkopf funktioniert nur intern und die Änderungen greifen erst dann, wenn alle Empfänger-Mail-Datenbank das neue Design haben.

    Wichtigste Voraussetzung ist, dass alle Ansichts-Indexe aktuell sind. Also vor dem Brennen <SHIFT>+<STRG>+<F9>.


    Ich habe es ehrlich gesagt, lange nicht mehr ausprobiert. Aber in früheren Versionen war dass alles, was man beachten musste.

    Der Fehler liegt daran, dass Du die Variable view doppelt verwendest. Sobald Du die Zeile
    Set view = db.GetView("Lager")
    erreichst, wird die Variable doc zurückgesetzt.


    Hintergrund ist, dass sobald der Garbage Collector von LotusScript merkt, dass eine Variable frei wird (in diesem Fall die Variable "view"), werden alle Objecte, deren Zugriff über diese Variable erfolgte ebenfalls gelöscht.


    Du musst einfach in Deinem Script eine zweite Variabe für die Ansicht "Lager" einfügen. Dann sollte der Fehler nicht mehr passieren.


    Aber abgesehen von dem Problem mit der Fehlermeldung, macht Dein Agent so überhaupt nicht, was er soll.


    Dieser Agent sollte eigentlich funktionieren:


    Eventuell musst Du die Feldnamen noch einmal überprüfen.


    Allgemein solltest Du Dir angewöhnen, sprechende Variablennamen zu verwenden, sobald Du mehr als zwei Dokumentarten und/oder Ansichten usw. hast.


    So, jetzt habe ich doch wieder wesentlich mehr geschrieben als ich eigentlich wollte. ;)

    Es gibt zwei Möglichkeiten XML in LotusScript zu parsen. Entweder per SAX oder per DOM.


    SAX steht für "Simple API for XML" und liest den kompletten XML-Baum in einem Rutsch und erzeugt für jedes Öffnen und jedes Schließen eines Tags ein Event. SAX ist sehr schnell, aber man muss sich selber darum kümmern, wo im Baum man sich gerade befindet.


    DOM (Document Object Model) ist eine allgemeine API zum durchwandern eines Documentes in Baum-Form.



    Das folgende Beispiel zeigt die Feldinhalte an.


    In einer produktiven Umgebung würde man es sicherlich anders programmieren. Aber für den ersten Eindruck sollte es genügen.


    Ansonsten würde ich raten, einfach den Debugger einzuschalten und sich den Ablauf anzusehen. In der Hilfe gibt es bei den Methoden und Eigenschaften der «Class» NotesDOMNode einige Beispiele.

    Spontan sehe ich zwei Lösungsmöglichkeiten.
    1.) Per LotusScript in WebQueryOpen-Agent.
    2.) Per JavaScript direkt im Browser.


    WebQueryOpen-Agent können sich bei einer hohen Anzahl von Zugriffen zu einem Performance-Bottleneck entwickeln.


    JavaScript im Browser funktioniert halt nur dann, wenn der User es aktiviert hat.


    Es hängt also ein wenig von der Anwendung und der Infrastruktur ab.


    Zu der 1. Lösung findest Du in der Domino Designer Hilfe unter dem Stichwort "Using XML with LotusScript". (Notes 6)
    Ansonsten auf gibt es entsprechende Artikel auf den IBM DeveloperWorks Lotus-Seiten. Einfach nach XML suchen.


    Die zweite Lösung ist von Domino eigentlich unabhängig. Also einfach mal nach JavaScript und XML googlen.

    Du versuchst in Deinem Script, die Backend-Variante der Datenbank zu schließen. Richtiger wäre es die Frontend-Datenbank zu schließen. Beispiel aus der Designer-Hilfe:


    Code
    Sub Click(Source As Button)    
      Dim ws As New NotesUIWorkspace  
      Dim uidb As NotesUIDatabase  
      Set uidb = ws.CurrentDatabase  
      Call uidb.Close  
    End Sub

    Irgendwie verstehe ich die letzten beiden Kommentare nicht.


    Zitat


    Diali schrieb:
    mein Problem sind jetzt nur noch die Ansichten ohne Kategorie :D


    Meine Lösung funktioniert nur mit Ansichten ohne Kategorie.


    An dem Outline/Gliederung muss gar nichts geändert werden. Es muss lediglich eine neue Page/Seite erstellt werden mit einer Reihe von Buttons.

    Zitat

    Button A: @Command([OpenView]; @ViewTitle; "A")
    Button B: @Command([OpenView]; @ViewTitle; "B")
    Button C: @Command([OpenView]; @ViewTitle; "C")
    ...


    Das ist alles. Es wird kein Script benötigt und auch kein Profile-Dokument bzw. kein Eintrag in die NOTES.INI.


    Ciao
    Bernd

    Es hängt ein wenig davon ab, was Du genau mit dem Feld "AccountantEMail" vorhast. Das einfachste wäre sicherlich ein berechnetes Feld mit der Formel.


    Code
    @Name([CN]; "<Namensfeld>") + "/Naomi"


    Wobei <Namensfeld> der Name des Feldes mit dem Adressdialog ist. @Name([CN]) sorgt dafür, dass von dem Namen nur der "Common Name", sprich der Vor- und Nachname, übernommen wird.


    Wenn das Feld "AccountEMail" auch angezeigt werden soll, gibt es noch die Schwierigkeit, dass die Berechnung nicht dynamisch erfolgt, sondern erst beim Aktualisieren [F9] bzw. Speichern.
    Für dieses Problem kann man in das Exiting-Event des Feldes mit dem Adressdialog das folgende Script einsetzen.

    Code
    Sub Exiting(Source As Field)
      Dim ws As New NotesUIWorkspace
      Call ws.CurrentDocument.Refresh()
    End Sub

    Also mit dem folgenden Befehl geht es in meiner Testdatenbank. Einfach auf der Page in einen Button.

    Code
    @Command([OpenView]; @ViewTitle; "B")


    Es flackert einmal ganz kurz und der Cursor steht auf dem ersten Dokument mit einem "B".


    Die Testdatenbank ist eine einfache Dokument-Bibliothek. Es funktioniert natürlich nur mit Ansichten, die in der ersten Spalte keine Kategorie haben. ;)


    Wenn Du willst, kann ich Dir gerne die Datenbank zippen.

    Ich dachte erst, dass ich die Lösung gefunden hätte.
    In eine Page habe ich einen Button mit
    @Prompt([Ok];"ViewName";@ViewTitle)
    integriert. Dieser liefert mir dann auch wie erwartet, die aktuell in dem Frame geöffnete Ansicht.


    Aber mein Versuch, per Evaluate-Anweisung das in Script zu nutzen, scheiterte völlig. :(


    Die einzige Idee, die ich noch hätte, wäre in dem "AddressPicker" in den Buttons erst per Formelsprache den Wert von @ViewTitle in die NOTES.INI zu schreiben und dann einen Agenten zu starten, der das Dokument in der Ansicht markiert. Vielleicht geht auch ein @Command([OpenView]) statt des Agenten. Ich bin mir nur nicht sicher, ob der Anfangsbuchstabe als Key für @Command([OpenView]) ausreicht.


    Falls Du eine Lösung finden solltest, wäre ich interessiert. ;)

    Wenn ich es richtig verstanden habe, gibt es mehrere gleich aufgebaute Anwendungen, die jeweils nur lokal existieren.


    Die erste Frage ist, ob es für diese Anwendungen eine gemeinsame Schablone gibt. Wenn ja, können an der Schablone die gewünschten Änderungen vorgenommen werden.


    Ein Schablonenupdate ändert erst einmal nichts an bestehenden Dokumenten. Erst wenn ein Dokument mit einer Maske mit geänderter Funktionalität geöffnet und gespeichert wird, wird auch das Dokument geändert.


    Wenn es von Anwendungen wirklich keine Replik auf einem Server gibt, wirst Du nicht umhinkommen, die geänderte Schablone irgendwie auf den lokalen Rechner in das Notes Datenverzeichnis zu bringen.


    Anschließend muss nur noch die Anwendung geöffnet werden und im Menü "Datenbank\Gestaltung aktualisieren" betätigt werden. Mit dem Befehl werden die neuen Gestaltungselemente in die Datenbank integriert.


    Ob das aber alles so DAU geeignet ist, wage ich zu bezweifeln. Eventuell könnte man eine Mail mit der Schablone als Dateianhang und einem Button für das Detachen und das anschließende Schablonenupdate basteln. Aber wenn Ihr keinen Domino-Server habt, scheidet diese Möglichkeit auch aus.

    Wenn es nur um die Auswahl von Namen aus dem Domino Directory geht, ist sicherlich der einfachste Weg ein Namensfeld einzufügen und unter den Option "Auswahl aus dem Adreßbuch" zu aktivieren.


    Stehen die Namen nicht im Domino Directory sondern in einem anderen bzw. in mehreren Notes Dokumenten könnte eventuell ein Feld von Typ "Dialogliste", "Radio button", "Checkbox", "Listbox" und "Combobox" Dir weiterhelfen. In den Optionen für das Feld kannst Du neben einer statischen Auswahl auch eine Formel hinterlegen. Mit @DBColumn oder @DBLookup kannst Du dann auf die Werte aus anderen Notes Dokumenten bzw. aus einer Ansicht zugreifen.


    Für alles was über diese einfachen Dinge hinaus geht, hat pascal_x Recht, sind Picklist / DialogBox die richtigen Stichworte.

    Meine Idee war, statt einem "Named Element" eine "Action" zu verwenden. Allerdings hatte ich nicht an die Ordner gedacht. Drag & Drop würde dann nicht mehr funktionieren. :(


    Was willst Du eigentlich genau mit dem Ansichtsnamen machen?


    Ciao
    Bernd

    Mit dem ViewNavigator müsste es eigentlich richtig schnell gehen. Du hast ja schon eine kategorisierte Ansicht, die Du für die Maske verwendest. Mit CreateViewNavFromCategory erhälst die einen ViewNavigator, der genau die Dokumente für das aktuelle Dokument enthält.



    Dim vw as NotesView
    Dim vwn As NotesViewNavigator
    Dim vwe As NotesViewEntry



    Set vwn = vw.CreateViewNavFromCategory("<Kategorie>")
    Set vwe = vwn.GetFirstDocument


    Do Until vwe Is Nothing

    Set doc = vwe.Document


    '//Hier kommt Dein Code hinein

    Set vwe = vwn.GetNextDocument(vwe)
    Loop

    Eigentlich ist das relativ einfach. Am sinnvollsten ist es, die bisherige Schablone der Datenbank zu kopieren. Wie bei jeder Kopie sollte man sich vorher die ACL anschauen, damit man nachher auch noch die nötigen Rechte hat.


    Anschließend in der Kopie der Schablone den Schablonennamen ändern. Damit ist der Template Name auf dem vierten Reiter gemeint.
     [Blockierte Grafik: http://www.hort-net.de/misc/TemplateName.gif]


    Ein aussagekräftiger Datenbank-Titel für die Schablone wäre auch nicht schlecht.


    Jetzt kannst Du anfangen, die Schablone Deinen Wünschen anzupassen.


    Wenn die Schablone soweit fertig ist, muss nur noch in der Datenbank über "Datei\Datenbank\Gestaltung wechseln" die neue Schablone eingezogen werden. Dabei werden dann alle alten Design-Elemente gelöscht und die aus der neue Schablone
    eingesetzt.


    Ansonsten ist noch zu beachten, dass Du vielleicht vorher in der Datenbank einmal nachschaust, bei welchen Design-Elemente die Eigenschaft "Keine Aktualisierung" eingeschaltet ist. Diese werden dann nämlich nicht aktualisiert. ;)


    Falls Du dir nicht ganz sicher bist, würde ich vorschlagen zum Testen auch noch eine Kopie der eigentlichen Datenbank zu machen. Sprich nicht gleich in Produktion Änderungen vornehmen.
    Sollte eigentlich selbstverständlich sein, aber es ist schon so mancher im Eifer des Gefechtes über das Ziel hinausgeschossen.

    Ich hatte es erst so verstanden, dass es um die von Notes eingefügten Grafiken und Links für "Alle Expandieren" usw. geht.


    Für das Ausblenden der "Twisties" gibt es einen Trick, per CSS die Grafik auszublenden. Dabei kann man sich zunutze machen, dass die "Expand"-Grafiken sich in einer Tabelle, in einer Zeile, in einer Zelle befinden.


    Mit dem Befehl

    table tr td img{
    display: none;
    }

    werden genau diese Images ausgeblendet.


    Wenn es vom Layout her notwendig ist, eigene Grafiken innerhalb einer Tabelle zu definieren, müssen diese mit einer eigenen Class versehen werden, damit sie angezeigt werden.