nur neueste Dokumente in Ansicht

  • folgender Hintergrund:


    ein Agent sammelt alle Woche die Größe aller Mailfiles und schreibt diese in eine eigens angelegte DB.


    Die erstellten Dokumente haben folgende Felder


    Size Username Datum Servername



    da ich die Daten über einen gewissen Zeitraum behalten will habe ich nach mehrmaligem Lauf des Agents für jeden User Dokumente mit verschiedenem Datum.



    Nun möchte ich in einer Ansicht nach der Größe der Mailfiles sortieren. Ich möchte aber pro User nur das aktuellste Dokument anzeigen lassen.


    Wie mache ich das. (Die Ansicht habe ich schon erstellt)

    • Offizieller Beitrag

    entweder ein Flag setzen bei den aktuellen Dokumenten und in der Ansicht das Flag auswerten oder ...
    in der Ansicht die Select-Formel anpassen (notesView.SelectionFormula = ...) oder ...
    mit SetViewInfo arbeiten oder ...
    mit @TextToTime("Heute") und @Adjust in der Select-Formel ...


    [color=CC0000]Niemals @Now oder @Today in einer Ansicht (Select-Formel oder Spalten-Formel) verwenden ! ! ! ![/color]


    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

  • Danke für dein schnelle Antwort.


    doch leider bin ich nicht gerade die beste Notes Programmierin.


    Könntest du mir das bitte etwas genauer Beschreiben.


    Die Abfrage mit HEUTE funktioniert nicht, weil die Dokumente auch älter sein können.


    Ich will einfach nur das neueste Dokument von jedem User anzeigen lassen.


    lys.

    • Offizieller Beitrag

    mit @Adjust kannst Du das Datum verschieben.


    also z.B.
    CutDate := @Adjust(@TextToTime("Heute");0;0;-7;0;0;0)
    entspricht heute vor einer Woche
    SELECT Datum > CutDate


    Gruß
    Dirk

    • Offizieller Beitrag

    im engl. Client muss anstelle von "Heute" "Today" stehen.


    Gruß
    Dirk

  • lysienne


    Das wird so nicht ganz funktionieren.


    Entweder musst du beim Speichern eines neuen Dokumentes die alten als abgelaufen bzw nicht mehr aktuell markieren und dann eine Selektionsformel anhand dieses Flags aufbauen.


    Oder das ganze periodisch über einen Agenten machen.


    Auf jeden Fall brauchst du ein Unterscheidungsmerkmal welches Dokument das aktuellste jedes Users ist

    • Offizieller Beitrag

    aber da läuft doch ein periodische Agent einmal pro Woche - oder habe ich dies hier falsch verstanden?

    Zitat

    ein Agent sammelt alle Woche die Größe aller Mailfiles und schreibt diese in eine eigens angelegte DB.


    Gruß
    Dirk

  • Man könnte das Problem mit Lotus Script lösen.


    Dafür muss in der Ziel-DB eine Ansicht A existieren, die nach User sortiert ist.


    Den Agenten soweit umbauen, dass er zuerst prüft, ob in der Ansicht A ein Dokument zum User existiert.


    Wenn ja, wird das gefundene Dokument mit dem Flag versehen und wird in der Ansicht B (deine vorhandene)
    Size Username Datum Servername
    nicht angezeigt.


    Erst dann schiebt der Agent die neue Dokumente in die Ziel-DB.


    Wie schlimm ist es denn mit...


    Zitat

    lysienne schrieb:
    doch leider bin ich nicht gerade die beste Notes Programmierin.


    ?

    • Offizieller Beitrag

    wir sind auch frustriert, aber am Freitag gab es einen PlattenCrash (siehe auch hier). Vor kurzem hat unser Admin einen zusätzliches BackUp 12:00 Uhr jeden Tag eingerichtet, sonst wäre dieser Freitag komplett ausgelöscht.


    Sorry, dass Du jetzt doppelt Arbeit hast.


    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

  • Oje, das tut mir aber leid...
    Ist ja typisch Murphy: "Alles, was kaputt gehen kann, geht kaputt".


    Wie gut, dass ich das Script bei mir als Agenten gespeichert habe...


    Also, noch ein Versuch.
    Lys, erweitere einfach deinen vorhandenen Agenten um folgenden Teil.



    Dim ns As New notessession 'notessession ist bestimmt schon deklariert
    Dim doc As notesdocument 'das ist das neue Dokument, das noch NICHT in der Ziel-DB gespeichert ist, ist bestimmt auch schon deklariert

    'Ein Paar Deklarationen zusätzlich
    Dim Ziel_db As notesdatabase
    Dim nitem As NotesItem
    Dim suchview As NotesView
    Dim dc As NotesDocumentCollection
    Dim suchdoc As notesdocument
    Dim xKey As String

    Set Ziel_db = ns.GetDatabase( "SERVER", "DBNAME mit Pfad", False )

    If Not Ziel_db.IsOpen Then
    Messagebox "DB ist zu!"

    Else 'Not Ziel_db.IsOpen

    Set suchview = Ziel_db.GetView("(Ansicht A)")
    'Versteckte Ansicht A in der Ziel-DB, erste Spalte sortiert nach UserName, Auswahlformel: Flag != "ALT"

    If Not suchview Is Nothing Then
    Call suchview.refresh

    'Dieses Teil vor dem doc.Save in die Schleife einbauen, in der neue docs erstellt werden

    'Prüfen, ob in der Ziel-Ansicht schon ein (oder mehrere) Doc zu diesem User existiert, wenn ja, als "ALT" kennzeichnen
    xKey = UserName 'Das Schlüsselwort soll sich in der Schleife ändern!

    Set dc = suchview.GetAllDocumentsByKey(xKey,True)
    Set suchdoc = dc.GetFirstDocument

    While Not ( suchdoc Is Nothing )
    Set nitem = suchdoc.ReplaceItemValue("Flag", "ALT")
    Call suchdoc.save (True,False, False)
    Set suchdoc = dc.GetNextDocument (suchdoc)
    Wend 'Not ( suchdoc Is Nothing )

    'ENDE >> Prüfen, ob in der Ziel-Ansicht schon ein (oder mehrere) Doc zu diesem User existiert, wenn ja, als "ALT" kennzeichnen

    doc.Flag = "NEU"

    Call doc.save (True,False, False) 'gibt's bestimmt schon in deinem Script

    End If 'Not suchview Is Nothing

    End If 'Not Ziel_db.IsOpen



    Ist ungetestet, bei Risiken und Nebenwirkungen... du weißt schon.


    Viel Erfolg!