Domino 9 und frühere Versionen > ND8: Entwicklung

DatenbankScript QueryDocumentDelete

<< < (2/2)

magic_halli:

--- Zitat von: Swehn am 15.04.09 - 11:13:47 ---Hallo nochmal!

Im RemoveThisDocument könntest du wahrscheinlich auch deinen Code reinpacken, dieses ist aber kein Standard-Event des Datenbankscriptes.
Hierfür ist das Querydocumentdelete zu 100% die richtige Stelle um das Löschen von Dokumenten abzufangen.

--- Ende Zitat ---
Jo danke... zu dieser Erkenntnis bin ich auch gekommen und implementiere hier auch meine Funktion.

thomson666:
gut, aber bei kalender events kann ich aus mehrjähriger erfahrung sagen das RemoveThisDocument immer funktioniert.
für Deletes von Aufgaben bzw. Mails habt ihr vermutlich recht...

s_Old:

--- Zitat von: thomson666 am 16.04.09 - 08:47:40 ---gut, aber bei kalender events kann ich aus mehrjähriger erfahrung sagen das RemoveThisDocument immer funktioniert.
für Deletes von Aufgaben bzw. Mails habt ihr vermutlich recht...

--- Ende Zitat ---
Das Querydocumentdelete-Event wird immer durchlaufen. Von jedem Dokument unabhängig vom Typ und bei jedem Löschvorgang (egal ob das Dokument über das Kontextmenü, durch Betätigen der Entfernen-Taste oder sonstwie gelöscht wird).

thomson666:
hmm interessant...
und wo fügst du deinen code da ein damit du sicher bist das die Löschung nicht abgebrochen wird?
Das würde alles für mich einfacher machen...

magic_halli:
So, es funzt!

Ich habe eine 'Sub' im Datenbankscript, welche ich im 'Querydocumentdelete' einfach aufrufe. Den Aufruf habe ich im Datenbankscript fast ganz oben hin gesetzt?!
Hier mal der Auszug aus meinem Orginalen DB-Script inkl. meines Aufrufs:

--- Code: ---Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim preRNext, SupressDeleteDialogs As Integer, MtgOwner As Integer,  result As Integer
Dim tmpOwner As String, strFormNm As String, strToDoMessage As String
Dim iCalDocstoDel As NotesDocumentCollection,curDoc As notesdocument 'variables to support ical deletion logic
Dim profileDoc As Notesdocument
Dim e As Variant, v As Variant
Dim versionNumber As Integer


Const INVAL_DOCUMENT =  "Sie müssen einen Wiederholungseintrag wählen, um diese Aktionen durchzuführen."
Const ERR_TITLE = "Fehler"

' On Error Resume Next - return errors to the user - CS

If ws Is Nothing Then
Set ws = New notesuiworkspace
End If

If session Is Nothing Then
Set session = New NotesSession
End If

' #####bis hierher alles orginal und nun mein Code#####
Dim docCollection As NotesDocumentCollection
Set docCollection = Source.Documents
If(docCollection.Count > 0)Then
' Methodenaufruf zum Löschen
Call DeleteFromSql(docCollection,Continue)
End If
' #####ab hier wieder alles orginal belassen#########

'Process ICal Deletes
If Strcompare(strViewName, "iCals")  = 0 Then
...

--- Ende Code ---
Die Methode 'DeleteFromSql' ist natürlich im DB-Script implementiert und macht die eigentlich Arbeit.
Bis jetzt laufen die Test´s erfolgreich!


Was mich nur wundert:
Wenn ich im Designer am DB-Script was ändere, speichere... alles im Designer schließe und den Designer selbst auch schließe...
Danach den NotesClient öffne, Gestaltung aktualisiere und ein Dokument lösche, dann ist die Änderung noch nicht aktiv.
Erst wenn ich den DominoServer neu starte, ist die Änderung aktiv!!! (Wohlgemerkt, ich arbeite auf einem TESTSYSTEM!  ;) )
Warum das... ich schließe doch nun schon alles was geht - somit auch die Datenbank?!?! Wie mache ich denn sonst eine DB komplett zu?

Rico.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln