Autor Thema: Papierkorb (Skript)  (Gelesen 2033 mal)

Offline heidiweber

  • Aktives Mitglied
  • ***
  • Beiträge: 162
Papierkorb (Skript)
« am: 24.05.06 - 19:20:42 »
Hallo

folgende Ausgangslage:
Die Standard-Papierkorbfunktion von Notes ist an.
Ich habe eine Maske mit dazugehörigen "Antwort"-Dokumenten. Diese Antwortdokumente sind aber als normale Dokumente angelegt und werden per UnID mit dem Mutterdokument verbunden.

Wird nun das Mutterdokument gelöscht (d.h. in den Papierkorb verschoben) bleiben die Kinder-Dokumente logischerweise erhalten.


Da die Dokumente im Papierkorb auch wieder hergestellt werden können, ist das nicht ganz so tragisch, dass die Kinder-Dokumente noch vorhanden sind, wenn das Mutter-Dokument sich im Papierkorb befindet.
Wird aber das Mutter-Dokument aus dem Papierkorb entgültig gelöscht, so sollen natürlich auch die Kinder-Dokumente entgültig gelöscht werden.

Deswegen habe ich einen Agenten erstellt, der z.B. nacht einmal läuft und schaut, ob zu einem Kind-Dokument noch Mutter-Dokumente vorhanden sind.  Mein Problem ist nur, wie man die ID der Dokumente bekommt, die sich schon im Papierkorb befinden?
Ich habe das (wie im anderen Posting...) so probiert:
Dim collection As NotesDocumentCollection
Set collection = db.Search(|Form = "projektPerson"|,dateTime,0)
Set doc = collection.GetFirstDocument

Aber da werden die Dokumente im Papierkorb nicht berücksichtigt.

Oder wie könnte man das sonst noch machen? Irgendwelche Vorschläge?


Werden die Kinderdokumente als Antwort-Dokumente angelegt, werden die dann auch automatisch mit in den Papierkorb verschoben, wenn das Mutter-Dokument gelöscht wird (befindet sich dann im Papierkorb)? --> Denke nicht??

Vielen Dank
cu
Heidi


Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Papierkorb (Skript)
« Antwort #1 am: 25.05.06 - 17:09:27 »
Hallo Heidi!

Vielleicht sollte man den Ansatz einfach umdrehen.

Alle Dokumente, dessen Mutterdokument nicht mehr in der Datenbank vorhanden sind zu löschen?!

Hinweis:
Gelöschte Dokument sind logisch gar nicht mehr in der Datenbank... Der Papierkorb zeigt nur alle Dokumente an die logisch gelöscht worden sind. (Stichwort: SoftDeletion)

Tip:
Den Search verwende ich eigentlich nie (es gibt ganz selten ausnahmen)! Verwende lieber den GetDocumentByKey und ggf. eine entsprechend passende View! Hier bist du sicher das du alles wirklich findest und schneller ist es auch.

Gruss
Chris

Offline heidiweber

  • Aktives Mitglied
  • ***
  • Beiträge: 162
Re: Papierkorb (Skript)
« Antwort #2 am: 25.05.06 - 19:42:09 »
Hallo Smoki,

vielen DanK erstmal für deine Hilfe.

aber genau das möchte ich machen:
Zitat
Alle Dokumente, dessen Mutterdokument nicht mehr in der Datenbank vorhanden sind zu löschen?!

Wenn sich die Mutterdokumente nicht mehr im Papierkorb befinden, sollen  auch die dazugehörigen Kind-Dokumente gelöscht werden.

Hat man sonst Keine Möglichkeit Dokumente zu finden, die sich im Papierkorb befinden?

Vielen Dank
cu
Heidi

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Papierkorb (Skript)
« Antwort #3 am: 26.05.06 - 07:40:50 »
Du willst also erst die Kind-Dokumente (soft-)löschen, wenn das Mutterdokument (hard-)gelöscht ist?

Das würde auch heißen, dass die Kind-Dokumente erst in den Papierkorb kommen, wenn das Elterndokument wirklich gelöscht ist, d. h. auch nicht mehr im Papierkorb ist.

Ich verstehe nicht ganz den Sinn dahinter?

In der Regel kann man die Kinddokumente gleich mit löschen?! (Und diese landen ja dann auch im Papierkorb)

Übrigens werden in der Regel nach 48 Stunden alle Dokumente, die sich im Papierkorb befinden gelöscht!

Gruss
Chris

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Papierkorb (Skript)
« Antwort #4 am: 28.05.06 - 22:55:58 »
Zitat: "Diese Antwortdokumente sind aber als normale Dokumente angelegt und werden per UnID mit dem Mutterdokument verbunden".

Wenn du die Kinderdokumente durchläufst, findest du UNIDS von Eltern. Ein GetDocumentbyUNID liefert dir normalerweise erst NOTHING zurück, wenn das Elterndokument HARDDELETED ist. Wenn es SOFTDELETED ist, bekommst du ein Dokument, von dem du allerdings nur wenige Rumpfeigenschaften einsehen kannst.

Eine andere Methode ist: Wenn du ein neues Dokument anlegst (bitte nicht speichern, nur anlegen) und dessen UniversalID auf den Wert des Elterndokuments setzst, läufst du auf einen Fehler, wenn das Elterndokument noch in der Datenbank vorhanden ist (auch als Soft-Deletion). Wenn kein Fehler auftaucht, kannst du das völlig verwaiste Kind löschen.

So viel zur Technik, wie man das machen kann. Aber Smokis Ansatz ist natürlich deutlich logischer (und besser), hilft dir aber nicht für die "letzten Waisen", die jetzt ja noch aufzuspüren sind.
Situs vilate in isse tabernit.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz