Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sja am 03.12.03 - 18:08:16
-
Hallo.
Agenten habe ich noch nie programmiert und werde für jede Hilfe sehr dankbar.
Folgender Agent muss ich erstellen:
- eine Datenbank enthält Hauptdokumente mit Anhängen
- ein Hauptdokument enthält ein Feld "ArchivDatum"
- ein periodischer Agent muss alle Hauptdokumente mit dazu gehörigen Anhängen in eine Archiv-Datenbank kopieren und in aus der Datenbank löschen, wenn ArchivDatum=@Today ist.
Wäre interessant wie Formula Language, als auch LotusScript.
Ich habe domino 6.0.2.
Vielen Dank im Voraus
sjn
-
Ebenfalls hallo !
Wenn Du solch eine Aufgabe erfüllen willst, wirst Du mit Notes-Bordmitteln nichts erreichen, und Formelsprache nützt Dir auch nichts - dafür sind @functions nicht gemacht. Mit LS geht es (okay, entgegen vielen oberflächlichen Aussagen kann man damit ja notfalls auch Kaffee kochen ;-)
Wir haben daher eine Applikation entwickelt, die genau so etwas erledigt wie Du willst, und das Setup (was soll wann archiviert werden) pro zu archivierender DB kannst Du wiederum per @functions erledigen (und / oder Dir von uns dabei helfen lassen). Die ganze Applikation liegt in der 1.000 Euro-Klasse ;-)
Bernhard
-
Hi,
Agenten habe ich noch nie programmiert und werde für jede Hilfe sehr dankbar.
Ich denke Bernhard's Tipp war in diesem Fall genau richtig, wenn Du schnell eine Lösung brauchst (also externen DL einschalten und/oder DB kaufen).
Wenn Du das selbst machen willst:
- Bücher lesen
- Schulung(en) besuchen
- mit einfachen Dingen anfangen (Masken, Views, etwas Formelsprache)
- einfache Scripts schreiben
etc.
Man könnte jetzt zwar ein LotusScript hier posten, aber ich denke das würde ganz einfach überfordern, schließlich wäre das niemals nicht per "Copy & Paste" übernehmbar.
Viel Erfolg,
TMC
-
Lieber Bernhard, TMC,
vielen Dank für eure reiche Hilfe.
Jetzt weiss ich, dass mit Formelsprache soll ich keine Zeit verschwinden und fange an mit LotusScript.
Leider habe ich für den Agent keine 1.000 EURO und glaube nicht, dass es Wert ist. Was betrifft Schulungen, die habe ich schon gemacht, und habe schon etwas Erfahrung in Formelsprache und LotusScript, die Gestaltungselemente kann ich auch nicht schlecht. Ich habe nur periodische Agenten noch nie gemacht. Die Bücher habe ich auch, leider nicht für v. 6, aber ich kaufe welche und versuche selbst das zu erledigen. Ich denke es wird billiger als 1000 EURO.
Noch mal vielen Dank für Hilfe.
Mit freundlichem Gruss
sja
-
Vielleicht so viel als Hinweis:
Ich würde eine Ansicht bauen, welche die Dokumente nach dem folgenden Kriterium selektiert: "SELECT ArchivDatum = @Today"; dabei solltest Du darauf achten, daß diese beiden Informationen kompatibel sind; soll heißen "ArchivDatum" sollte vom Datentyp Datum sein, ansonsten mußt Du "@Date(ArchivDatum)" verwenden.
Der Agent hätte dann folgende Grobstruktur:
---
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim achivDoc As NotesDocument
Dim helpDoc as NotesDocument
Set db = ses.CurrentDatabase
Set view = db.GetView("heuteArchivieren")
Set archivDoc = view.GetFirstDocument
While Not (archivDoc is Nothing)
<Schritte, welche zur Archivierung notwendig sind>
Set helpDoc = archivDoc
Set archivDoc = view.GetNextDocument(archivDoc)
Call helpDoc.Remove
Wend
---
Viele Grüße
Harry
-
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
-
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
-
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
-
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