Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tuxie am 28.04.04 - 11:23:49
-
Hallo,
ich habe eine Frage, ich habe eíne Datenbank mit einer Dokomentenstruktur
Hauptdokument
Antwortdokument
Rückantwortdokument
Wie kann ich am besten, diese Struktur löschen gibt es da eine Funktion, kann man das mit Formeln machen oder nur mit LN Script.
Und gibt es eine möglichkeit das hertkömmliche Löschen zu Sperren.
TSchau Ingo
-
Zu Frage 1: Das müsstest Du etwas genauer erklären. Willst Du ausgehend von einem Haupt-Dokumente alle Responses löschen ? Oder von einem bestimmten Dokument aus alle Responses ? Oder wie ?
Zu Frage 2: Entweder, Du entziehst Deinen Usern das Löschrecht, oder Du klinkst Dich in das DatabaseScript/QueryDocumentDelete ein.
Bernhard
-
Hallo,
also ich möchte das Hauptdokument mit allen Antwortdokumenten löschen.
Das löschen soll quasie nur über die Löschfunktion die ich versuche zu implementieren machbar sein. So das nicht das Hauptdokument ohne die Antwortdokumente gelöscht werden.
Tschau Ingo
-
Dann ist QueryDocumentDelete die richtige Stelle. Das ganze ist selbstverständlich nur mit LS zu realisieren und muss rekursiv verlaufen:
- Ist es ein Dokument mit Responses (das braucht ja kein Hautpdokument sein - Responses können wiederum Responses haben)
- Wenn nein - keine Aktion erforderlich
- Wenn ja, bilde Collection aller Responses
- Doc für Doc in der Collection untersuchen: Hat dieses wiederum Responses ?
- Wenn ja: Wiederum Collection aller Responses bilden und weiter wie oben beschrieben
- Wenn nein: Dokument löschen.
HTH,
Bernhard
-
Hi,
ich hab mal so was gebaut.
Im PostDocumentDelete - Event des Datenbank-Scriptes steht folgender Code:
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim i As Integer
Set collection = Source.Documents
If collection.Count = 0 Then
Exit Sub
Else
For i = 1 To collection.Count
Set doc = collection.GetNthDocument(i)
Call DeleteResponseDocs(doc)
Call doc.Remove(True)
Next 'For i = 1 To collection.Count
End If 'If collection.Count = 0 Then
Unter dem (Options) -Abschnitt ist eingetragen (da die Routine DeleteResponseDocs in der Bibliothek Tools enthalten ist):
Use "Tools"
Die Routine selbst sieht so aus:
Sub DeleteResponseDocs (doc As NotesDocument)
Dim responses As NotesDocumentCollection
Dim tmpdoc As NotesDocument
Dim dummy As NotesDocument
Set responses = doc.Responses
Set dummy = responses.GetFirstDocument
While Not (dummy Is Nothing)
Set tmpdoc = responses.GetNextDocument(dummy)
Call DeleteResponseDocs(dummy)
Call dummy.Remove(True)
Set dummy = tmpDoc
Wend 'While Not (dummy Is Nothing)
End Sub
Axel
-
Hallo,
wo finde ich das PostDocumentDelete?
TSchau Ingo
-
Hast Du schon mal unter den Tisch geguggt? Vielleicht ist es runtergefallen ... ;D
Unter Resources / ...... Other / DatabaseScript
-
Hähhä hast recht, es lag im Papierkorb ;D ;D ;D
Tschau Ingo
-
Zum Glück hast Du es vor der Putzfrau gefunden .... ;D
-
Irgendwie findet er DeleteResponseDocs nicht obwohl ich sie in den Scriptbibliothek als mit dem Name Tools angelegt habe.
versteh ich irgendwie nicht in den Optionen des Datenbankscriptes habe ich auch USE "Tools" eingetragen. WOran könnte es liegen.
Tschau Ingo
-
Kopiere die Routine doch einfach in das Datenbankscript hinein, im Moment besteht für Dich kein zwingender Grund, eine ScriptLib zu verwenden.
-
Notes Beenden und wieder Starten und schon Stimmt alles.
Dankeschön