Autor Thema: GetDocumentByUNID  (Gelesen 2950 mal)

Offline Grabby

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Weiblich
  • In der Ruhe liegt die Kraft!
GetDocumentByUNID
« am: 22.10.02 - 16:06:21 »
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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:GetDocumentByUNID
« Antwort #1 am: 22.10.02 - 16:23:09 »
... ich denke du hast für das archivierte Dokument eine neue UNID erhalten, daher die Meldung...

ata
Grüßle Toni :)

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:GetDocumentByUNID
« Antwort #2 am: 22.10.02 - 16:31:02 »
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.
« Letzte Änderung: 22.10.02 - 16:46:11 von Rob Green »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Grabby

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Weiblich
  • In der Ruhe liegt die Kraft!
Re:GetDocumentByUNID
« Antwort #3 am: 22.10.02 - 16:41:03 »
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

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:GetDocumentByUNID
« Antwort #4 am: 22.10.02 - 16:43:56 »
 ;D bingo
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:GetDocumentByUNID
« Antwort #5 am: 22.10.02 - 18:27:47 »
Hallole, bin wieder an Bord...

Ein Kollege von mir hat mir neulich erzählt, daß er genau bei der gleichen Vorgehensweise die DocUNID des Dokumentes in der neuen Datenbank beibehalten konnte. Ich war der Auffasung, daß die DocUNID in einer anderen Datenbank bei CopyToDatabase neu vergeben wird. Mein Kollege ist der Ansicht, daß die DocUNID nur dann neu vergeben wird, wenn diese UNID in der neuen Datenbank bereits vorhanden ist. Das warf meinen Stand der Dinge über den Haufen. In diesem Beispiel hier sehe ich meine Position wieder bestärkt. Ich denke ich werde die Vorgehensweise meines Kollegen nochmals unter die Lupe nehmen. Wenn ich was dazu erfahre werde ich es hier einbringen...

ata
Grüßle Toni :)

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:GetDocumentByUNID
« Antwort #6 am: 23.10.02 - 00:33:13 »
aha,

heißt:

mache ich manuelles Kopie => alte UNID in ??
mache ich copytodatabase => alte UNID in ??
mache ich xxx fällt mir nix mehr ein => was dann???

werde ich auch mal antesten, denn eigentlich bin ich der festen Überzeugung, daß sich die UNID unbedingt ändern muß, egal wie man ein Doc von DB_A nach DB_X schaufelt:
" 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." Da die Creation Time und die Position in der neuen DB des Docs doch auf jeden Fall anders sind, müßte ergo die UNID sich ändern.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:GetDocumentByUNID
« Antwort #7 am: 23.10.02 - 00:39:51 »
... das sehe ich auch so, nur mein Kollege sieht das anders...

ata
Grüßle Toni :)

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:GetDocumentByUNID
« Antwort #8 am: 23.10.02 - 00:44:13 »
ist Dein Notes Timer Task abgeschmiert oder warum noch wach um diese Zeit?  ;D ;D
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz