Bestimmte Dokumente einer Ansicht löschen.

  • Hallo zusammen,


    irgendwie steht ich auf dem Schlauch ..
    Per Script/Schleife sollen aus den Arbeitsumgebungen 3 bestimmte Dokumente gelöscht werden.


    Sub Click(Source As Button)
    Dim s As New NotesSession
    Dim db As New NotesDatabase( "", "" )
    Dim view As NotesView
    Dim doc1 As NotesDocument
    Dim doc2 As NotesDocument
    Call db.Open( "", "names.nsf" )
    Set view = db.Getview("Locations")
    Dim col As NotesDocumentCollection
    Set col = view.getAllDocumentsByKey("Zuhause (Netzwerkeinwahl)", False)
    'Set col = db.AllDocuments
    Set doc1 = col.getfirstdocument

    Do Until (doc1 Is Nothing)
    '...Do Something to doc1...
    Set doc2 = col.getnextdocument(doc1)
    Call doc1.remove(True)
    Set doc1 = doc2
    Loop

    End Sub


    So wird aber natürlich nur ein Dokuemt gelöscht, eigentlich müßte ich jetzt auf "view.getAllDocumentsByKey("Nächste Arbeitsumgebung)", False" gehen, wie gesagt der Schlauch ;)


    Ein anderer Lösungsvorschlag ist herzlich Willkommen.


    gruß
    rubbeldidup

  • Möchtest du 3 x das gleiche dokument löschen, oder 3 verschiedene ?


    Wenn 3 verschiedene dann nimm getfirstdocument, und teste mittels case statement das feld welches du kontrollieren möchtest. Wenn einer der 3 dann zum loschen MARKIEREN, dann zuerst getnextdocument (bestehendesDoc) aufrufen mit ZWEITE variabele, und dann erst das dokument löschen.
    Ach ja, vorher vielleicht view.autoupdate auf false setzen, und am ende wieder auf true.

  • Hallo Ronka,


    vielen Dank für Deine Hilfe:)
    Das ganze sieht jetzt so aus:


    Do Until (doc1 Is Nothing)
    Aname = doc1.getItemValue("Name") (0)
    Select Case Aname
    Case Is = "Insel (ohne Verbindung)"
    Set doc2 = view.getnextdocument(doc1)
    Call doc1.remove(True)
    Set doc1 = doc2
    Set doc1 = view.GetPrevDocument(doc1)
    Case Is = "Internet"
    Set doc2 = view.getnextdocument(doc1)
    Call doc1.remove(True)
    Set doc1 = doc2
    Set doc1 = view.getnextdocument(doc1)
    Case Is = "Zuhause (Netzwerkeinwahl)"
    Set doc2 = view.getnextdocument(doc1)
    Call doc1.remove(True)
    Set doc1 = doc2
    Set doc1 = view.GetPrevDocument(doc1)
    End Select
    Set doc1 = view.GetNextDocument(doc1)
    Loop


    Allerdings hatte ich das Problem das er z.B. bei 'Insel'durch "getnextdocument" auf das Dokument 'Internet' springt und dieses Dokument durch "getnextdocument" am Ende der Schleife übergeht und auf das nächste springt. Sprich, das Dokument "nach dem zu löschenden" wird immer übersprungen. Deshalb habe ich noch das "GetPrevDocument" gesetzt.


    Gibt es eine Möglichkeit, dies etwas eleganter zu lösen?


    gruß
    rubbeldidup

  • Versuche es mal mit diesem...


    view.autoupdate = false
    Do Until (doc1 Is Nothing)
    Select Case doc1.getItemValue("Name")(0)
    Case Is = "Insel (ohne Verbindung)"
    Case Is = "Internet"
    Case Is = "Zuhause (Netzwerkeinwahl)"
    Set doc2 = view.getnextdocument(doc1)
    Call doc1.remove(True)
    delete doc1
    Set doc1 = doc2
    End Select
    Set doc1 = view.GetNextDocument(doc1)
    Loop
    view.autoupdate = True


    (warnung nicht getestet, einfach so geschrieben...)

  • Hallo, das hat leider nicht funktioniert weil:


    a) (Ich weiß jetzt nicht ob das beabsichtigt ist) nur im
    dritten Case-Fall die Bearbeitungsschritte stehen, wird auch nur dieses Dokument gelöscht.


    b) Das Script bei 'delete doc1' die Fehlermeldung "Objekt variable not set" auswirft.


    Da die andere Version aber funktioniert werde ich diese ertmal nehmen.


    Nochmal vielen Dank


    rubbeldidup