Beiträge von Diali

    1. DB im Notes-Client öffnen
    2. Menü <Ansicht> Eintrag "Agenten" wählen, dann solte sich der Designer öffnen und Du alle Agenten sehen.
    3. Schaltfläche "Neuer Agent" verwenden


    bei Notes 5.x
    4. Name eintragen, so erscheint das Teil dann unter Aktionen (z.B. "Gruppen aus Kategorie berechnen")
    5. "Gemeinsam genutzter Agent" anhaken
    6. Eintrag bei "Wann soll der Agent gestartet werden?" - "Manuell aus dem Menü 'Aktionen'"
    7. Eintrag bei: "Für welche Dokumente soll er gelten?" - "Alle Dokumente in der Datenbank"
    8. im Feld Starten den Eintrag "Einfache Aktion(en)" durch "LotusScript" ersetzen
    9. bei den Objekten "Initialize" auswählen
    10. jetzt sollte

    Code
    Sub InitializeEnd Sub

    auf der rechten Seite stehen. Dazwischen den Code

    Code
    Dim session As New NotesSession  Dim db As NotesDatabase  Dim view_Personen As NotesView  Dim view_Gruppen As NotesView  Dim doc_Personen As NotesDocument  Dim doc_Gruppen As NotesDocument  Set db = session.CurrentDatabase  Set view_Personen = db.GetView("People")  Set view_Gruppen = db.GetView("Groups")  Set doc_Personen = view_Personen.GetFirstDocument  Dim Array() As String  Dim Kategorie As String  While Not doc_Personen Is Nothing    If Trim(doc_Personen.FullName(0)) <> "" Then      For i = 0 To Ubound(doc_Personen.Categories)        If Trim(doc_Personen.Categories(i)) <> "" Then          Kategorie = Sonderzeichen_ersetzen(doc_Personen.Categories(i))          Set doc_Gruppen = view_Gruppen.GetDocumentByKey(Kategorie, True)          If doc_Gruppen Is Nothing Then            Set doc_Gruppen = New NotesDocument(db)            doc_Gruppen.Form = "Group"            doc_Gruppen.Type= "Group"            Set item_Members = New NotesItem(doc_Gruppen, "Members", Trim(doc_Personen.FullName(i)), NAMES)            Set item_DocumentAccess = New NotesItem(doc_Gruppen, "DocumentAccess", "[GroupModifier]", AUTHORS)            doc_Gruppen.GroupType = "0"            doc_Gruppen.AvailableForDirSync = "1"            doc_Gruppen.ListName = Kategorie            flag = doc_Gruppen.ComputeWithForm(True, True)            doc_Gruppen.Save True, True, True            Call view_Gruppen.Refresh          Else            Redim Array(0)            vorhanden = False            For i_Array = 0 To Ubound(doc_Gruppen.Members)              If Trim(doc_Gruppen.Members(i_Array)) = Trim(doc_Personen.FullName(0)) Then                i_Array = Ubound(doc_Gruppen.Members)                vorhanden = True              Else                If Array(0) <> "" Then                  Redim Preserve Array(Ubound(Array) +1)                End If                Array(Ubound(Array)) = Trim(doc_Gruppen.Members(i_Array))              End If            Next            If Not vorhanden Then              Redim Preserve Array(Ubound(Array) +1)              Array(Ubound(Array)) = Trim(doc_Personen.FullName(0))              doc_Gruppen.Members = Array              doc_Gruppen.Save True, True, True            End If          End If        End If      Next    End If    Set doc_Personen = view_Personen.GetNextDocument(doc_Personen)  Wend

    einfügen.
    11. Nach "End Sub" im Script den Code

    einfügen.
    12. Speichern und das Teil testen



    Gestern ist mir noch der Gedanke gekommen, dass beim Speichern einer Person dies auch in die Kategorie-Gruppen einsortiert werden kann - bedeutet ein Script beim Speichern.


    Gruß
    Dirk

    Anbei das versprochene Script - ging etwas schnelle. Mit meinem lokalem Adressbuch ist es getestet.


    - Es werden keine Gruppen und auch keine schon eingetragenen Member gelöscht, d.h. alle manuell hinzugefügten Member bleiben in der Liste.
    - Fliegt eine Kategorie aus der DB, dann bleibt die Liste erhalten.
    - Wird der Fullname eine Person geändert, erscheint die Person mit dem alten und dem neuen FullName in der Liste.
    - Personen ohne Fullname erscheinen nicht in der Gruppe.
    Falls es noch Probleme gibt, einfach hier posten.


    Danke für die Hilfe,


    aber jetzt habe ich gleich 2 hausgemachte Probleme.
    Die Datei dasetup.exe existiert auf dem SystemDrive nicht.
    Und dann kann ich keine Software installieren und deinstallieren - keine Rechte auf dem Client :(.


    Jetzt muss ich erst mal zu den Client-Admins und betteln.


    Melde mich wieder, wenn unsere Verwaltungsmühlen ausgemahlen haben.


    Gruß
    Dirk

    Ich habe zwar keine Lösung, aber vielleicht grenzen meine Beobachtung die Sache etwas ein.


    - Win NT und Notes 4.5.x, 4.6.x und 5.0.x keine Probleme
    - Win XP und Notes 5.0.x auf einigen wenigen Rechneren Probleme
    - Win XP und Notes 6.x kein Kennwortsyncronisation mehr, selbst wenn die Kennwörter von Hand identisch eingetragen werden, muss man sich anmelden.


    Alle Rechner haben eine einheitliche Win NT / XP-Installation.


    Wir haben nach langem Suchen die Funktion dann abgeschaltet.


    Gruß
    Dirk

    Mit einem Script-Agent sollte es funktionieren.
    - Schleife über alle Personen
    - prüfen ob Gruppe schon existiert (nein... neu anlegen)
    - prüfen ob Person schon Member (nein... Person hinzufügen)


    Habe ich noch nicht benötigt, deshalb habe ich auch keinen fertigen Code zur Hand. Die Idee finde ich gut - ist eine Überlegung wert, es den Usern anzubieten.


    Gruß
    Dirk

    Ein kleiner Zappler bringt villeicht die Lösung:
    Das Dokument im Ui öffnen und drucken.


    Code
    set uidoc = ws.EditDocument(True, doc)
    call uidoc.Print(...)
    call uidoc.Save
    call uidoc.Close


    Mit Notes 4.6.x muss das Back-End-Dokument vorher gespeichert werden. Unter Notes 5.x geht es ohne das Speichern des Back-End-Dokumentes.


    Gruß
    Dirk

    kommt zwar spät, bin aber eben erst über die Anfrage gestolpert.


    Wenn wenigstens das Dokument in einer NotesAnsicht markiert ist, kann es mit dem Print vom NotesUIView gedruckt werden.

    Zitat

    Call notesUIView.Print( numCopies% [, fromPage% ] [, toPage% ] [, draft ] [, pageSeparator% ] [, formOverride$ ] [, printview ] [, dateRangeBegin ] [, dateRangeEnd ] )


    Gruß
    Dirk

    Dies geht nur über die API.
    Den Code verwende ich mit Notes 5.x unter Win32.


    Habe auf dem Notes 6 Poster etwas gefunden, ausprobiert und geht.

    Code
    view.SelectionFormula = "..."

    Dann muss ich wohl mal von meinem Notes 5 lassen und Notes 6 verwenden.


    Trotzdem vielen Dank für Deine Mühe.


    Gruß
    Dirk

    ein kleines Script soll die Select-Formel einer Ansicht ändern. Tut es auch, aber die Select-Formel wirkt erst, wenn ich die View einmal im Designer abgespeichert habe. Gibt es einen Trick, wie es ohne dieses Speichern klappt?

    Code
    ' view ... Ansicht, die geändert werden soll
    ' db ... Datenbank in der sich die Ansicht befindet
    dim doc as NotesDocument
    set doc = db.GetDocumentByUnID(view.UniversalID)
    Call doc.ReplaceItemValue("$Formula","Form='Test'")
    Call doc.save(True,True)


    So sollte man zwar nicht vorgehen, aber ich würde mir das Editieren von ca 400 Ansichten ersparen.


    Gruß
    Dirk

    Wenn Du wirklich ne echte Kopie und keine Replik willst, dann habe ich sowas schon mal gemacht.


    Prinzip:
    1. leere Kopie mit db.CreateCopy erstellen
    2. Dokument für Dokument kopieren und im Kopie-Dokument in ein Feld (ich nenne es mal "OriginalUID") die UniversalID des Original-Dokumentes schreiben
    3. alle Ansichten durchgehen und prüfen ob es sich um Ordner handelt (view.IsFolder)
    4. ist es ein Ordner, dann alle Documente im Ordner durchgehen, die Dokumente anhand des Feldes "OriginalUID" und der UniversalID des Original-Dokumentes suchen und finden und dem Ordner hinzufügen.


    Achtung Code-Schnipsel ist aus einem vorhanden Script und so nicht getestet.