Domino 9 und frühere Versionen > Entwicklung
GetDocumentByUNID
Grabby:
Hallo zusammen.
Ich brauche dringend etwas Hilfe bezüglich Script.
Folgendes Problem habe ich:
Der Benutzer soll in der Ansicht von Datenbank A ein/mehrere Dokument(e) markieren und mit Hilfe einer Schaltfläche in eine andere Datenbank B kopieren. Anschließend soll das/die Dokument(e) in Datenbank A gelöscht werden.
Das klappt soweit auch ganz gut. Jetzt möchte ich aber vor dem Löschen des Dokumentes in Datenbank A erst prüfen, ob das Dokument auch in Datenbank B angekommen ist. Hier liegt nun mein Problem. Ich habe versucht, dieses mit dem folgenden Script zu machen (aber bitte Nachsicht, ich bin Anfänger darin!!).
Ich erhalte immer die Fehlermeldung (Invalid universal ID). ??? ::)
Vielleicht hat ja einer einen Rat, warum das nicht klappt.
Besten Dank im voraus.
Grabby
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archivdb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim archivcollection As NotesDocumentCollection
Dim doc As NotesDocument
Dim archivdoc As NotesDocument
Dim user As String
Dim String1 As String
Dim String2 As String
Dim UnidID As String
Set db = session.CurrentDatabase
Set archivdb = New NotesDatabase("SDEBGMS0010","APPL\\P\\PICVDArchiv.nsf")
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
String1 = session.UserName
String2 = Strleft(String1,"/OU=DEBGM/O=Schott")
User = Strright(String2,"CN=")
While Not(doc Is Nothing)
UnidID = doc.UniversalID
Messagebox ("Dies ist die ID des Dokumentes:" & UnidID)
Call doc.ReplaceItemValue("PP_ArchivDate",Date$)
Call doc.ReplaceItemValue("PP_ArchivName",User)
Call doc.save(True,True)
Call doc.CopyToDatabase(archivdb)
Set archivdoc = archivdb.GetDocumentByUNID(UnidID)
'****************************************************
' Hier erhalte ich dann die Fehlermeldung !!!!
'****************************************************
If archivdoc Is Nothing Then
Goto Fehler
End If
Set doc = collection.GetNextDocument(doc)
Wend
Call collection.RemoveAll(False)
Fehler:
Messagebox "Das verschieben des Dokumentes ist leider fehlgeschlagen. Bitte kontrollieren Sie den Vorgang."
Exit Sub
End Sub
ata:
... ich denke du hast für das archivierte Dokument eine neue UNID erhalten, daher die Meldung...
ata
Rob Green:
oh..dazu sollte man wissen, dass die UNID eines Docs immer nur zu Repliken einer DB passt, nicht aber zu Kopien. Sobald Du ein Doc in eine andere DB schaufelst, bekommt es eine neue UNID. (ata, ich fasel Dir immer nach wie Du siehst ;D)
Dazu:
The UNID is a totally unique 16-byte identifier for a document. The UNID binds together the replicas of a given document. Each instance of the document has the same UNID -- regardless of how many replicas the document appears in. The UNID consists of 8 bytes of time/date-created information, and a 32-bit sequence that is a unique number indicating the document's position in the database.
Lass Dir also einen anderen Key einfallen.
Grabby:
Vielen Dank ihr beiden. Da hätte ich ja vielleicht auch schon mal schauen können....! Naja, man lernt nie aus. Mal sehen, vielleicht lege ich mir die Original-UNID in irgendein Feld, um später das Dokument wiederzufinden.
Lieben Dank
Grabby
Rob Green:
;D bingo
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln