Autor Thema: Wertabfrage in neuem Dokument in dem per Agent etwas geändert wurde  (Gelesen 1859 mal)

Offline Schnubbel

  • Junior Mitglied
  • **
  • Beiträge: 88
Hallo liebe Gemeinde,
ich habe nachfolgendes Problem:

Ein neues Dokument wird erzeugt und gespeichert. Im Hintergrund (RunOnServer) wird ein Agent angeschmissen, der mit der NoteID gefüttert wird. Dieser Agent ändert einen Wert in dem Dokument (er prüft, ob gleiche Dokumente vorhanden sind, an denen der Ersteller keine Berechtigung hat). Natürlich nicht mit der NoteID, sondern anhand anderer Kriterien.

Noch im Script des Erstellungsbuttons möchte ich diesen Wert abfangen. Ich komm aber nicht dran. Er ist immer leer. Wenn ich dann das neue Dokument öffne, ist der Wert gefüllt.


       Call perdoc.CopyAllItems(NewMaDoc,True) ' Das Dokument wird aus einer Vorlage kopiert
   NewMaDoc.Form="(TM)MAOrga"
   Uid = newMadoc.UniversalID
   
   Call newMaDoc.Save(1,1)
   
   Dim agent As notesagent

   Set agent = db.GetAgent("(TM)Doppelt")

   If agent.RunOnServer(newMaDoc.NoteID) = 0 Then

      Set Uebdoc = db.Search({FORM="(TM)MAOrga" & @Text(@DocumentUniqueID)="} & Uid & {"},Nothing,0).getfirstdocument
      Print Uebdoc.LastModified
      Msgbox UebDoc.Nachname(0) <-- der Wert wurde über eine EIngabe erzeugt, und es gibt eine MSgbox mit Inhalt
      Msgbox UebDoc.neuerWert(0) <-- der Wert wurde mit dem Agenten erzeugt, die MSgbox ist leer


Egal wie ich das Dokument hier nochmal hole (also ich hab es mit der NoteID versucht und über eine Suche mit der UniversalID. Beides male ist der durch den Agenten geänderte Wert leer.

Jemand ne Idee oder nen Zaunpfahl für mich?

Lieben Gruß
Thorsten
« Letzte Änderung: 31.07.19 - 08:20:17 von Schnubbel »
Client -> Notesclient 8.5.3
Betriebssystem ->Windows 7
User-> Thorsten :)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Das Problem ist: So lange Du eine Variable (newMaDoc) hast, die auf das "alte" Dokument verweist, wirst Du im Code IMMER diese Instanz des Dokuments bekommen, und das ist das unveränderte.

Am einfachsten ist es, wenn Du einfach ein

Delete newMaDoc

oder

Set newMaDoc = Nothing

einfügst, nachdem Du Dir die NoteID in eine Variable weggeschrieben hast. Dann bekommst Du später auch tatsächlich das "Neue" Dokument, und nicht das aus dem Scriptcache.

Nebenbemerkung: Diese Sache wird ganz besonders geil, wenn newMaDoc nicht in der selben Prozedur sondern an einer ganz anderen Stelle gesetzt wird (als globale variable in einer Script- Lib zum Beispiel, dann gilt das nämlich auch, und dann rauszufinden, woher das kommt ist echt besch...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Schnubbel

  • Junior Mitglied
  • **
  • Beiträge: 88
Vielen Dank für die Erklärung und die Lösung.
Die Sache in der Nebenbemerkung trifft bei mir glückerweise nicht zu.
Client -> Notesclient 8.5.3
Betriebssystem ->Windows 7
User-> Thorsten :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz