Autor Thema: Protokkolierung der Löschdokumente  (Gelesen 2787 mal)

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Protokkolierung der Löschdokumente
« am: 03.12.03 - 13:55:26 »
Hallo zusammen,

für die Protokkolierung der Löschdokumente habe ich mit foldem Code versucht, klappt es irgent wie nicht. Auch keine Fehlermeldungen, der Agen läuft durch aber ohne Ergebnis.

Was mache ich hier falsch? Kann jemad hier näher diesen Code reinschauen?

Grüß
Nyen

Step 1 : create your new database. For the exemple, I'll name it «FastDeletion». I'll make also a view named «Deleted Documents» categorized on the new field name «FromDatabase».

Step 2 : modify the «QueryDocumentDelete» event

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim Collection As NotesDocumentCollection
Dim Document As NotesDocument
Dim DeletedDoc As NotesDocument

'retreiving all documents that the current NotesUIDatabase event is working on
Set Collection = Source.Documents
Set Document = Collection.GetFirstDocument
Dim DBDeletion As New NotesDatabase ("", "FastDeletion.nsf")
Dim DateTime As New NotesDateTime (Today)
Dim Item As NotesItem
Do While Not (Document Is Nothing)

Set DeletedDoc = Document.CopyToDatabase (DBDeletion)
'Create a flag to tell the view from where that document has been proceed to be destroyed
DeletedDoc.FromDatabase = Document.ParentDatabase.FilePath
DeletedDoc.FromServer = Document.ParentDatabase.Server
Set Item = New NotesItem (DeletedDoc, "WhenDeleted", "")
Set Item.DateTimeValue = DateTime
'dont forget this property if you want to be able to use this item in the search
Item.IsSummary = True
Call DeletedDoc.Save (True, False)
Set Document = Collection.GetNextDocument (Document)

Loop

End Sub

Step 3 : purge and retreive (put them in the «FastDeletion» Database)

The agent for purge should work every day at 4 am to avoid conflic with admin process on server during night

Sub Initialize
Dim Session As New NotesSession
Dim Coll As NotesDocumentCollection
Dim DateTime As New NotesDateTime (Session.CurrentDatabase.Created)


'Adjust date for last 2 weeks
Set Coll = Session.CurrentDatabase.Search ("WhenDeleted < @Adjust (@Today;0; 0; -14; 0; 0; 0)", DateTime, 0)

'if there is at last one or more documents to purge
If Coll.Count > 0 Then Call Coll.RemoveAll (True)

End Sub

The action for retreive should be place in the «Deleted Documents» view

Sub Click(Source As Button)
Dim Session As New NotesSession
Dim Coll As NotesDocumentCollection
Dim DocRestore As NotesDocument
Dim Doc As NotesDocument
Dim DB As NotesDatabase

'Get all documents selected by user
Set Coll = Session.CurrentDatabase.UnprocessedDocuments

'if there is no document selected
If Coll.Count = 0 Then End

Set Doc = Coll.GetFirstDocument
Do While Not (Doc Is Nothing)
'Get the Database property
Set DB = Session.GetDatabase (Doc.FromServer (0), Doc.FromDatabase (0))
'Make the copy and delete the field used for deletion
Set DocRestore = Doc.CopyToDatabase (DB)
Call DocRestore.RemoveItem ("FromServer")
Call DocRestore.RemoveItem ("FromDatabase")
Call DocRestore.RemoveItem ("WhenDeleted")
Call DocRestore.Save (True, False)
Set Doc = Coll.GetNextDocument (Doc)
Loop

Call Coll.RemoveAll (True)
Dim WorkSpace As New NotesUIWorkSpace
Call WorkSpace.ViewRefresh
End Sub


Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Protokkolierung der Löschdokumente
« Antwort #1 am: 04.12.03 - 10:12:50 »
Hallo Nyen,

jeder Agent liefert ein Ergebnis, vielleicht ist die Auswahl auf welchen Dokumenten der Agent laufen soll falsch.

Wenn Du Agenten mit der rechten Maustaste anwählt kann Du "testen"
oder Protokoll anwählen.
Ist der Agent jemals gelaufen ?
Entsprachen überhaupt irgendwelche Kriterien dem des Agenten ?

Existieren die DBs die der Agent anspricht ?


Ciao
Don Pasquale

Glombi

  • Gast
Re:Protokkolierung der Löschdokumente
« Antwort #2 am: 04.12.03 - 10:32:57 »
Du spricht von einem Agenten, es handelt sich aber um Script, welche an diversen Stellen eingetragen müssen.
Der Code ist auf den ersten Blick i.O. Natürlcih sind einige Dinge drin, die geprüft werden müssen.

Der Agent hat nur folgenden Code:
Sub Initialize
Dim Session As New NotesSession
Dim Coll As NotesDocumentCollection
Dim DateTime As New NotesDateTime (Session.CurrentDatabase.Created)


'Adjust date for last 2 weeks
Set Coll = Session.CurrentDatabase.Search ("WhenDeleted < @Adjust (@Today;0; 0; -14; 0; 0; 0)", DateTime, 0)

'if there is at last one or more documents to purge
If Coll.Count > 0 Then Call Coll.RemoveAll (True)

End Sub


Frage: Gibt es ein Dokument, in dem das Feld WhenDeleted da ist?

Andreas

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #3 am: 04.12.03 - 10:35:25 »
Hi Don,

wenn den Agen starte, steht leider nicht viel im Protokoll drin:

Folgendes passiert, wenn dieser Agent gestartet wird:


Agent 'Protokoll_Agent' wurde am 04.12.2003 10:32:38 gestartet
Testen:  LotusScript Code ausgeführt
Agent 'Protokoll_Agent' wurde am 04.12.2003 10:32:38 beendet

Gruß
Nyen

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #4 am: 04.12.03 - 10:55:26 »
Hallo Andreas,

also, ich kann bei kein Dokument mi dem Feld mit WhenDeleted fesstelllen.  Meinst du hängt es möglicheweise damit zusammen?

Gruß
Nyen

 

Glombi

  • Gast
Re:Protokkolierung der Löschdokumente
« Antwort #5 am: 04.12.03 - 11:02:49 »
Genau deshalb!
Wegen

Set Coll = Session.CurrentDatabase.Search ("WhenDeleted < @Adjust (@Today;0; 0; -14; 0; 0; 0)", DateTime, 0)

bearbeitet der Agent nur Dokumente, in denen WhenDeleted vorhanden ist.

Also muss was mit den anderen Scripten nicht stimmen! Hast Du alles so und genau dort eingetragen, wie es beschrieben war?

Poste mal alle Scripts und die Namen der Events, Aktionen bzw. den Standort wo das Script ist.
Dann brauchen wir noch den Namen der Datenbank, in die die gelöschten Dokumente kopiert werden.

Andreas
« Letzte Änderung: 04.12.03 - 11:04:52 von Glombi »

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #6 am: 04.12.03 - 11:08:50 »
Ich habe ein Fehler festgestellt, wenn ich ein Dokument in der Testdatenbank lösche:

"Database FastDeletion.nsf has not been opened yet"

Kann jemand damit anfangen?

Grüße
Nyen

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #7 am: 04.12.03 - 11:28:57 »
 Namen der Datenbanken:

Hi Andreas,

Die DB "FastDeletion.nsf" sollte gelöschte Dokumente kopieren und hat nur ein Feld wie in der Beschreibung "FromDatabase".

Ich habe noch eine Testdatenabnk mit dem Namen: Test_office.nsf, in der die Dokumente gelöscht werden. Wenn ich hier ein Dokument lösche, kommt die Meldung, obwohl die DB FastDeletion.nsf vorhanden ist.

 "Database FastDeletion.nsf has not been opened yet"

Grüß
Nyen

 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Protokkolierung der Löschdokumente
« Antwort #8 am: 04.12.03 - 18:08:49 »
Hallo, nyen,

nimm es mir bitte nicht übel, aber weisst Du überhaupt, was der von Dir besorgte Code eigentlich macht ?
Lt. Code liegt FastDeletion.nsf lokal - was den Einsatz Deines Codes - nun ja, etwas beschränkt. Andererseits soll in dieser Datenbank aber ein periodischer Agent laufen, der dann aber mit dem AdminP nicht kollidieren soll. Merkwürdig ... zumindest, soweit ich das auf den ersten Blick so übersehe.

Bernhard

Glombi

  • Gast
Re:Protokkolierung der Löschdokumente
« Antwort #9 am: 04.12.03 - 20:31:35 »
Hi Bernhard,
der periodische Agent löscht einfach in der Datenbank alles raus, was älter als 14 Tage ist Auf die FastDeletion greift er nicht zu.
Nichts desto trotz (schreibt man das jetzt so  ;D) sollte man den Code besser mal verstehen, bevor man so heikle Dinge macht.
Generell: Bevor man was in einer anderen DB macht, immer mit
db.IsOpen
abfragen, ob das Ding auch offen ist!

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Protokkolierung der Löschdokumente
« Antwort #10 am: 04.12.03 - 20:43:20 »
Hi again, Andreas,

ja, klar, der Purge-Agent knallt alle alten Docs aus "FastDeletion" 'raus - der soll ja genau in dieser DB vorhanden sein. In QueryDocumentDelete wird aber eine "FastDeletions"-DB bedient - und die liegt angeblich lokal lt. dem entsprechenden Statement. Das ist ja das, was mir suspekt vorkommt. Und in der lokalen DB läuft dann periodisch nachts um vier der Purge-Agent ? Wohl eher nicht ...

Das Prüfen instantiierter Objekte vor Verwendung - oder eben auch in NotesDtabase.IsOpen - ist natürlich sowieso ein "must-have" in Codes, wenn man sich über "unerwartete Features" nicht wundern mag.

Ich befürchte, nyen wagt sich hier an Sachen, die er noch nicht übersieht.

Ciao,
Bernhard

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #11 am: 05.12.03 - 10:31:51 »
Hallo zusammen,

der Agent ist nicht das Problem, wann er alle alten Docs aus "FastDeletion" löscht.

Das Problem, ich kann nicht meine Test-DB beibringen, wie sie gelöschte Dokumente in die "FastDeletion.nsf" verschiebt. Dann hätte ich das Hauptproblem gelöst.

Nyen

Glombi

  • Gast
Re:Protokkolierung der Löschdokumente
« Antwort #12 am: 05.12.03 - 10:46:05 »
Liegt die FastDeletion.nsf lokal und direkt im Notes-Datenverzeichnis?

Die Stelle
Dim DBDeletion As New NotesDatabase ("", "FastDeletion.nsf")
hätte ich persönlich so gemacht:

Dim DBDeletion As NotesDatabase
set DBDeletion = New NotesDatabase("","")
call DBDeletion.Open("","FastDeletion.nsf")
If not DBDeletion.IsOpen then
msgbox "Die Fast Deletiondatenbank konnte nicht geöffnet werden!",4+32,"Abbruch"
continue = false
exit sub
end if




Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re:Protokkolierung der Löschdokumente
« Antwort #13 am: 05.12.03 - 11:46:44 »
Sorry, funktioniert nicht:

1. "Dim DBDeletion As NotesDatabase" wahrscheinlich überflüssig

2. Die FastDeletion.nsf wird nicht angelegt

3. Wenn ich sie lokal anlege, werden glöschte Dokumente nicht verschoben

Was mache hier falsch?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz