Domino 9 und frühere Versionen > ND7: Entwicklung
Problem mit Universal ID nach Datenänderung mit @ReplaceSubstring
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