Domino 9 und frühere Versionen > Entwicklung

GetDocumentByUNID

(1/2) > >>

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