Dokument in View löschen

  • Hallo zusammen!


    Ich habe folgendes Problem:


    Ich benutze Lotus Notes 6 und bearbeite einen View im Designer. Dieser View hat eine Aktionsleiste mit Aktionen. Eine dieser Aktionen soll mir das aktuelle Dokument löschen. Das versuche ich mit folgendem LotusScript:


    1 Dim ws As New NotesUIWorkspace
    2 Dim uidoc As NotesUIDocument
    3 Dim doc As NotesDocument

    4 Set uidoc = ws.CurrentDocument
    5 Set doc = uidoc.Document
    6 Call doc.Remove(True)

    Leider klappt das nicht. Wenn ich das Script ausführe, erscheint bei Zeile 5 die Meldung "Object variable not set". Ich vermute, daß es damit zusammenhängt, daß es kein CurrentDocument gibt, bzw. daß das aktuelle Dokument erst geöffnet werden muß oder so ähnlich.


    Hat jemand eine Idee, wie ich da weiter kommen kann?


    Vielen Dank!
    Michael Bayerl

  • Schreibe Dir einen Agenten, der ueber alle gewaehlten Dokumente laeuft und rufe diesen Agenten mit Deiner Aktion auf.

  • ....in einer Ansicht bekommst Du den Verweis auf die aktuell ausgewählten Dokumente mit "uiview.documents" daraus ergibt sich dann eine DocumentCollection in der Du die Dokumente löschen kannst.

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

  • Das mit der DocumentCollection, die ich über uiview.documents bekomme, habe ich auch schon rausgefunden. Aber wie erkenne ich in dieser Collection das Dakument, auf dem der Cursor steht?

  • ...wenn Du nur ein Dokument markiert hast (z.B.) das aktuell gewählte dann enthält die Collection auch nur ein Dokument.

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

  • Kommando zurück! Leider klappt es doch nicht.


    LotusScript:
    Dim ws As New NotesUIWorkspace
    Dim doc As NotesDocument
    Dim collection As NotesDocumentCollection
    Dim view As NotesView

    Set collection = ws.CurrentView.Documents
    Set doc = collection.GetFirstDocument
    If not (doc Is Nothing) Then
    Call collection.RemoveAll(False)
    End If


    Ich bekomme die Meldung "Cannot remove NotesDocument when instantiated by NotesUIDocument". Ich benutze NotesUIDocument doch gar nicht. collection.DeleteDocument geht genauso wenig.


    Ich habe es auch mit einer NotesSession probiert:


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim view As NotesView

    Set db = session.CurrentDatabase
    Set view = db.GetView("Contacts")
    Set collection = ?????
    If collection.Count > 0 Then
    Call collection.RemoveAll(False)
    End If


    Aber wie soll ich da die collection füllen? view.documents gibt es da nicht.

  • Code
    1. Dim ws As New notesuiworkspace
    2. Dim uv As notesuiview
    3. Set uv = ws.currentview
    4. Dim coll As notesdocumentcollection
    5. Set coll = uv.documents


    Du musst ueber die Notesuiview Klasse gehen

  • [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

  • Code
    1. Dim ws As New notesuiworkspace Dim uv As notesuiview Set uv = ws.currentview Dim coll As notesdocumentcollection Set coll = uv.documents Call coll.RemoveAll(False)


    Dieser Code loescht wunderbar. Du brauchst ja auch kein Dokumentenobjekt, wenn Du eh die gesamte Collection removen willst.
    Aber auch das funktioniert bei mir

    Code
    1. Dim ws As New notesuiworkspace
    2. Dim uv As notesuiview
    3. Set uv = ws.currentview
    4. Dim coll As notesdocumentcollection
    5. Set coll = uv.documents
    6. Set doc = coll.GetFirstDocument
    7. If Not (doc Is Nothing) Then
    8. Call coll.RemoveAll(False)
    9. End If
  • Leider immer noch kein Erfolg...


    Wenn ich in dem View eins oder mehrere Dokument auswähle, das heißt, in der ersten Spalte des Views setze ich einen Haken und führe das Skript aus, dann kommt immer die Meldung: "Möchten Sie 0 Dokumente löschen?"

  • Dann hast Du aber nicht meinen Code verwendet. Im Code von Pascal solltest Du in einer Viewaktion auch keine Collection aufbauen koennen. Er benutzt Database.documents, das funktiobniert meines Wissens nach nur in Datanbankevents. Du musst hier uiview.documents benutzen. Aber das hatten wir schon ganz am Anfang mal.

  • Sorry, mir kam bei der Antwort Deine Replik dazwischen.


    pascal_x


    Wenn ich den Code von pascal_x ausführe, heißt es immer "Möchten Sie 0 Dokumente löschen?", egal wieviele Dokumente ich ausgewählt habe.


    dnotes


    Wenn ich den Code von dnotes ausführe, dann bekomme ich die Meldung "Cannot remove Document when instatiated by NotesUIDocument"

  • ....ooh sorry habe die Datenbank version gepostet... Richtig ist natürlich


    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

  • pascal_x


    Jetzt bekomme ich die Meldung: "Wollen Sie 1 Dokumente löschen?" und wenn ich bestätige, dann leider wieder meine Lieblingsmeldung "Cannot remove NotesDocument when instantiated by NotesUIDocument".

  • ...poste doch bitte mal Deinen Code ...irgendetwas muss da faul sein... hast Du das Dokument noch irgendwo geöffnet?

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]