Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: gere am 29.10.05 - 23:09:08
-
Hallo zusammen,
Ich möchte gerne mit einem Agenten Dokumente aus einer Datenbank in mehrere andere Datenbanken verschieben. Das Dumme ist nur, dass die Dokumente in Abhängigkeit des ersten Buchstabens des Erstellers in eine andere Datenbank verschoben werden sollen. Ich habe dafür 6 weitere identische Datenbanken erstellt (A-D, E-H, I-L, M-P, Q-T, U-Z), wenn z.B in der Quelldatenbank ein Dokument von Carsten Müller/OU1/OU2/O erstellt wurde, dann soll das Dokument auf Knopfdruck in die Datenbank "M-P" (Müller = M) verschoben werden.
Ist sowas möglich, wenn ja wie? Hat jemand für sowas zufällig ein Script?
Vielen Dank für Eure Hilfe,
Gruß Gere
-
Hat jemand für sowas zufällig ein Script?
Das musst Du Dir schon selber schreiben ;)
Den Ersteller eines Dokuments bekommst Du AFAIK nicht über @Formula oder LotusScript.
D.h. es sollte in den Dokumenten ein Feld vorhanden sein, das den Ersteller enthält.
Per @Formula / LS bekommst Du nur das Erstellungs-Datum.
Den Nachnamen aus einem NotesName bekommst Du über NotesName.Surname
Deine Bedingungen würde ich über Select Case durchgehen, also:
Select Left$(strNachname,1)
Case "A" to "D":
docLoop.CopyToDatabase(db_A_to_D)
Case "E" to "H":
docLoop.CopyToDatabase(db_E_to_H)
(usw)
-
Das mußt Du Dir schon selber schreiben
Einfacher gesagt als getan..! ::)
Bis jetzt bin ich soweit, dass ich die Dokumente in EINE andere Datenbank kopiere, wenns dann aber um die Abhängigkeit nach Anfangsbuchstabe des Nachnamens geht wirds für mich schwierig.
Jeder Dokument enthält übrigens ein Feld mit dem Namen des Erstellers (DocInfoCreatedBy). Das wär also kein Problem.
Gruß Gere
-
OK, das ist gut, dass Du das Feld schon hast.
Oben hab ich eigentlich schon fast alles beschrieben.
Setze Dir eine NotesDocumentCollection über NotesDatabase.AllDocuments.
Dann arbeitest Du in einer Schleife alle Dokumente ab nach dem Schema wie oben beschrieben.
Schreib doch mal den LS-Code hierzu und stell ihn hier rein. Wir helfen dann und sagen Dir, was verbessert werden kann bzw. wo es noch hakt.
-
Hallo zusammen,
Also im Moment sieht das Script noch so aus, dass ich testweise Dokumente in eine statisch hinterlegte Datenbank verschiebe (FileContainerAD.nsf). Das funktioniert auch, wenn ich ein Status-Feld habe, das "archiviert" enthält. Das mit dem Namen auslesen bekomme ich aber nicht auf die Reihe, zumal die Dokumente in Abhängigkeit vom ersten Buchstaben des Ersteller-Nachnamens automatisch in verschiedene DB's verschoben werden sollen, und zwar in FileContainerEH, FileContainerIL, FileContainerMP, FileContainerQT, FileContainerUZ
Hier ist der im Moment funktionierende Code, bin leider nicht so erfahren mit LotusScript. Wer kann mir da weiterhelfen?
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archive As New NotesDatabase("Server" , "test\FileContainerAD.nsf")
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim wert As Variant
Dim nextdoc As notesdocument
Print "Archivierung gestartet"
Set db = session.CurrentDatabase
Set dc = db.AllDocuments
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
Set nextdoc = dc.getnextdocument(doc)
wert = doc.GetItemValue("Status")
If wert(0) = "Archiviert" Then
Call doc.CopyToDatabase(archive)
Call Doc.Remove( True )
End If
Set doc = nextdoc
Loop
End Sub
Danke Euch, Gere
-
Also den Benutzernamen bekommst Du über die Notessession.
Davon nimmst Du den CommonName, davon den rechten Teil bis zum _ (=Nachname) und davon wieder nur den ersten Buchstaben von links.
Dann machst Du einen Select:
Select case AB '(=Anfangsbuchstabe)
case"A", "B":
set archDB=....
case "C","D",....
....
end select.