Domino 9 und frühere Versionen > ND6: Entwicklung

Antwortdokumente und Leser und Autorenfelder

<< < (11/11)

DAU-in:
wenn die ID verkehrt ist .....


Set parent = db.GetDocumentByID(Source.Document.ParentDocumentUNID)

wie definierst du die ParentDocumentUNID .
wenn das ein Item ist, muss noch (0) dahinter.

koehlerbv:

--- Zitat von: cash am 16.11.07 - 16:46:07 ---Heute habe ich wirklich etwas gelernt...
--- Ende Zitat ---

Thomas, das wage ich zu bezweifeln. Du weisst nicht, was Du gemacht hast, und Du weisst nicht, warum es jetzt "funktioniert" (wie auch immer).
Wir wissen es auch nicht, da wir Deinen aktuellen Code nicht kennen (und wo er ausgeführt wird).
Die Beteiligung der alten Hasen wurde hier immer geringer, da keiner mehr richtig durchsieht und auch keine Zeit dafür da ist, da jedes Mal nochmal nachzuhaken oder aus Bruchstücken etwas zu rekonstruieren.

Es sieht also noch nicht gut aus, um mit dem jetzigen Zustand kannst Du Dich nicht zufrieden geben.

Bernhard

cash:
hier jetzt nochmal mein Endstand:

Aufgabe: Script soll Felder aus dem Antwortdokument in das Hauptdokument schreiben. Unabhängig davon ob der User im Autorenfeld steht oder nicht.

Um meine Fehler besser zu finden habe ich den Script erstmal im Querclose reingeschrieben (somit konnte ich über den Debugger sehen welche Variablen richtig gefüllt werden und welche nicht)
Der User steht im Antwort- und Hauptdokument im Feld Autoren.

On Error Goto errorHandler
   
   Dim db As NotesDatabase
   Dim respdoc As NotesDocument
   Dim parent As NotesDocument   
   Dim Session As New NotesSession
   
   Set db = session.CurrentDatabase
   Set respdoc = db.GetDocumentByUNid(Source.Document.UniversalID) 
   Set parent = db.GetDocumentByUNid(Source.Document.ParentDocumentUNID)
   
   parent.Status                   = respdoc.Status
   parent.Sachgebiet                   = respdoc.Sachgegiet
   parent.Vorschlag                   = respdoc.Vorschlag
   
   Call parent.Save (True, False, True)
      
   Exit Sub
errorHandler:
   Print {error #} & Cstr(Err()) & { } & Error() & { in line } & { } &  Cstr(Erl())
   Exit Sub    


Das funktioniert mit der oben geschriebenen Einschränkung User muß im Autorenfeld stehen. Wenn er kein Autor ist geht der Code im errorHandler und schreibt unten Sinngemäß "Nicht genug Rechte! So mache ich es nicht"

Das Ziel war das der Script auch funktioniert wenn der User keine Autorenrechte auf das Hauptdokument hat.
Also muß der Code per serversignierten Agenten ausgeführt werden.

Im Queryclose des Antwortdokumentes steht:

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim agent As NotesAgent
   
   Set db = session.CurrentDatabase
   Set doc = Source.Document
   Set agent = db.GetAgent("AgentAnonym")

   Call agent.RunOnServer(doc.NoteID)



Im Agenten steht:

On Error Goto errorHandler
   
   Dim db As NotesDatabase
   Dim agent As NotesAgent
   Dim respdoc As NotesDocument
   Dim parent As NotesDocument   
   Dim Session As New NotesSession
   
   Set db = session.CurrentDatabase
                Set agent = session.CurrentAgent
   Set respdoc = db.GetDocumentByID(agent.ParameterDocID)
   Set parent = db.GetDocumentByUNID(respdoc.ParentDocumentUNID)
      
   parent.Status                   = respdoc.Status
   parent.Sachgebiet                   = respdoc.Sachgegiet
   parent.Vorschlag                   = respdoc.Vorschlag
   
   Call parent.Save (True, False, True)
      
   Exit Sub
errorHandler:
   Print {error #} & Cstr(Err()) & { } & Error() & { in line } & { } &  Cstr(Erl())
   Exit Sub    


Somit funktioniert der Script wie er soll ohne das der User Autoren-Rechte auf das Hauptdokument hat.

Gruß und vielen Dank an allen die mir hierbei geholfen haben...

Thomas

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln