Domino 9 und frühere Versionen > ND7: Entwicklung

Problem mit Universal ID nach Datenänderung mit @ReplaceSubstring

(1/4) > >>

watschn:
Hallo,

ich habe einen Agent erstellt, der über die @ReplaceSubstring Funktion bestimmte Feldwerte sucht und ersetzt.
Nun habe ich den Agenten auf meine DB losgelassen um eben einige Feldwerte abzuändern. Hat soweit geklappt!

Jetzt zum eigentlichen Problem.
Auf der DB läuft nachts ein weiterer Agent und dieser funktioniert nun nicht mehr. Er kommt bis zum Code
Set maindoc = db.getDocumentByUNID(doc.DocID(0))
dann erscheint die Meldung "Invalid Universal ID" und er bricht ab.

Das Problem tritt eben erst seit Änderung der Feldwerte über die @ReplaceSubstring Funktion auf.
Haben die Änderungen Einfluss auf die Universal ID oder was ist da los? Irgendjemand einen Lösungsvorschlag?

Ich bin leider noch ziemlich neu in Sachen Notes Programmierung. Kann auch gern ausführlicher den Code posten, wenn´s was helfen sollte.

Axel:

--- Zitat von: watschn am 25.03.08 - 17:27:12 ---Haben die Änderungen Einfluss auf die Universal ID...

--- Ende Zitat ---

Nein. Die ID wird beim Anlegen des Dokumentes vergeben und bleibt immer gleich.

Hast du unter Umständen das Feld DocID geändert? Poste doch mal den gesamten Code des Agenten.


Axel

ata:
... oder

- werden die Dokumente irgend wohin kopiert und laufen dann mit einer falschen DocID ins leere
- ist das Feld DocID tatsächlich richtig besetzt worden => @Text(@DocumentUniqueID)
- gibt es das Dokument mit der verwendeten UniversalID in deiner Datenbank überhaupt

Toni

watschn:
Danke schonmal für die Hilfsbereitschaft :-)

Ich ändere mit diesem Agenten die Feldinhalte in meinen Dokumenten.

FIELD VKenntnis := @ReplaceSubstring(VKenntnis;"Peter Muster";"Lieschen Müller");
FIELD VErledigung := @ReplaceSubstring(VErledigung;"Peter Muster";"Lieschen Müller");
FIELD VZuarbeit := @ReplaceSubstring(VZuarbeit;"Peter Muster";"Lieschen Müller");
FIELD VBerechtigt:= @ReplaceSubstring(VBerechtigt;"Peter Muster";"Lieschen Müller");
FIELD hVKennzeichen := ("Vorgangskennzeichen123");
SELECT @All

Zweck des ganzen, ich möchte Zugriffsrechte steuern. Der Eintrag „Peter Müller“ soll durch „Lieschen Müller“ ersetzt werden. Das „Vorgangskennzeichen123“ wird gesetzt und löst somit nachts den weiteren Agenten aus, der die Benutzernamen in die betreffenden Autoren und Leserfelder schreibt. Und bei diesem Agenten hakt es jetzt.

Da der Agent sehr umfangreich ist, poste ich mal hier mal den Anfang

   Dim i As Integer
   Dim m As Integer
   Dim n As Integer
   Dim p As Integer
   Dim z As Integer
   Dim s As Integer
   Dim c As Integer
   
   Dim db As NotesDatabase
   
   
   Dim newVals( ) As String
   Dim newVals2( 1 To 200 ) As String
   Dim newVals3( ) As String
   Dim newVals_main() As String   
   Dim item As NotesItem
   Dim item2 As NotesItem
   Dim doc As NotesDocument
   Dim rdoc As NotesDocument
   Dim awdoc As NotesDocument
   Dim maindoc As NotesDocument
   Dim session As New NotesSession
   Dim collection As NotesDocumentCollection
   Dim collectionRechte As NotesDocumentCollection
   Dim collectionTermin As NotesDocumentCollection
   Set db = session.CurrentDatabase   
   '
   Call db.UpdateFTIndex(True) ' aktualisieren des Indexes
'   On Error Goto ErrHandler
   
' Alle neuen bzw. geänderten Vorgänge haben das Zeichen "Vorgangskennzeichen123"   
   Set collectionRechte = db.FTSearch ( "Vorgangskennzeichen123", 0 )
   
   
   Set doc = collectionRechte.GetFirstDocument
   While Not doc Is Nothing
      Redim newVals(200)
      Redim newVals3(10)
      Redim newVals_main(200)
      
      If doc.IsValid = True Then
         
      'Kennzeichen für geändertes Dokument austragen
         doc.hVKennzeichen = ""
         Call doc.Save( False, True )
         
      '############################################### Rechtevergabe für Vorgangsdokument bei Erlediger   #####################################
         doc.hVAutor=""
         doc.hVLeser1=""
         i = 0
         p = 0
         z = 1

HIER STEIGT DER AGENT DANN AUS Set maindoc = db.getDocumentByUNID(doc.DocID(0))
         If maindoc.IsValid = True Then
         'Für Autor:
            
            Forall x In    doc.VErledigung
               i = i+1
            End Forall
            If i = 0 Then
         'Exit Sub
            Else
               Set item = doc.GetFirstItem( "hVAutor" )
               
               newVals( z ) = "[V_Ersteller]"
               z = z +1
               For p = 0 To i -1
                  newVals( z ) =  doc.VErledigung(p)
                  z = z +1
               Next p
               Call item.AppendToTextList( newVals )
               
               Call doc.Save( False, True )
            End If


Wie gesagt vor der Änderung meiner Feldinhalte ist dieser Agent gelaufen. Also was ist passiert?

ata:
.. kann es sein, daß du nicht mehr berechtigt bist - du änderst ja Leser und Autorenfelder...?

Du solltest auf jeden Fall in einem Autorenfeld mit deiner Admin-Rolle eingetragen sein...

Toni

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln