Domino 9 und frühere Versionen > ND6: Entwicklung

Agent für Archivierung

<< < (2/2)

koehlerbv:
Da steckt aber eine ganz, ganz grosse böse Falle drin: Wenn der Agent mal aus einem einen Grunde nicht läuft, dann bleiben eigentlich zu archivierende Dokumente in der Datenbank drin.
Die Selektionsformel müsste also heissen:
SELECT ArchivDatum >= @Today

HTH,
Bernhard

sja:
Hallo Harry, Bernhard,

herzlichen Dank für eure Hilfe.
Die Ansicht hatte ich schon mit folgender Auswahlformel

SELECT (ProjektAktiv = "inaktiv")&(DatumArchiv <= @Today)|@AllChildren

In dieser Ansicht sind alle Hauptdokumente mit den Antwortdokumenten bis zum aktuellen Datum und die alle mussen archiviert werden.

DatumArchiv >= @Today wäre falsch.

Ich versuche jetzt der Agent zu codieren und zu testen und schreibe dann meine Code und Testergebnisse.

Ich hatte einfach Probleme mit User Interface für LS Agent: wuste nicht wie soll man zu den defaulten Abschnitten (Options. Declarations, Initialize und Terminat) weitere Abschnitte (Funktionen und Prozeduren) hinzufügen. Jetzt weiss ich es. Vielleicht für jemanden wird die Information auch hilfreich:
man fügt in einen freien Beriech eines bereits bestehenden Abschnitts einfach einen neuen Funktionskopf od. Prozedurkopf ein und drückt die Enter-Taste. Meiner Meinung nach, man kann nicht intuitiv dazu kommen.

Grüsse
Sofia


 

sja:
also meinen Versuch sieht so aus (ich habe nur copy in Archiv Datenbank ausprobiert, deliete noch nicht ):

Abschnitt (Declarations)

Dim VEC As NotesViewEntryCollection   
Dim ve As NotesViewEntry
Dim view As NotesView
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim doc As NotesDocument

Abschnitt Initialize

Sub Initialize
   
   Dim s As New NotesSession
   
   Set db = s.CurrentDatabase
   Set view =db.getview("archiv")
   Set VEC = view.AllEntries
   Set ve = VEC.GetFirstEntry()
   
   Set db2 = New NotesDatabase( "", "ARCHIV.nsf" )
   
   While Not (ve Is Nothing)
      Set doc = ve.Document
      Call doc.CopyToDatabase(db2)
                          'Call VEC.DeleteEntry(ve)
                          'Set ve = VEC.GetFirstEntry()
      Set ve = VEC.getNextEntry(ve)
   Wend
   
End Sub

Ergebnisse:
der Agent wurde ausgeführt, die Hauptdokumente und entsprechende Antwortdokumente wurden in der Archiv-Datenbank kopiert

Doch funktioniert das richtig. Jetzt probiere ich mit delete.

Sofia

sja:
also meinen Agent sieht so aus:

Dim VEC As NotesViewEntryCollection   
Dim ve As NotesViewEntry
Dim view As NotesView
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim doc As NotesDocument

Sub Initialize   
   Dim s As New NotesSession
   
   Set db = s.CurrentDatabase
   Set view =db.getview("archiv")
   Set VEC = view.AllEntries
   Set ve = VEC.GetFirstEntry()
   
   Set db2 = New NotesDatabase( "", "archiv.nsf" )
   
   While Not (ve Is Nothing)
      Set doc = ve.Document
      Call doc.CopyToDatabase(db2)
      doc.Remove(True)
      Set ve = VEC.getNextEntry(ve)
   Wend   
End Sub

Ich habe ihn getestet und er funktioniert. Die Hauptdokumente mit den entsprechenden Antwortdokumenten mit dem Datum vor und gleich ToDay wurden in die Archiv-Datenbank kopiert und aus der Projekt-Datenbank gelöscht. Jetzt verstehe ich nicht, warum soll solchen Agent 1.000 EURO kosten. Oder das, was ich gemacht habe, ist falsch und man kann das nicht verwenden?
Also, wenn es richtig ist und für jemand kann das auch zur Hilfe sein, werde ich mich freuen.
Wenn es falsch ist, werde ich sehr dankbar, wenn man mich korrigiert (da ich nur Frischling bin).

Vielen Dank für Hilfe
Sofia

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln