Domino 9 und frühere Versionen > Entwicklung
call doc.MakeResponse(doc2)
dasRalph:
Hallo!
Ich hab mal wieder ein Problem, das
--- Code: ---"Call doc.MakeResponse(doc2)"
--- Ende Code ---
geht nicht :(
Folgende Situation:
Mit
--- Code: ---Dim agent As NotesAgent
Set agent = db.GetAgent("DatenÜbertragen")
agent.RunOnServer(pdoc.NoteID)
--- Ende Code ---
rufe ich einen Agenten auf, dies geht soweit. Der Agent ist so aufgebaut (unwichtiges weggelassen):
--- Code: ---(Declarations)
Dim session As NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Dim cdoc As NotesDocument
Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set cdoc = db.GetDocumentByID(agent.ParameterDocID)
Call main
main
Dim doc As NotesDocument
Set doc = New NotesDocument(db)
Call doc.MakeResponse(cdoc)
--- Ende Code ---
Wenn nun der "Call doc.MakeResponse(cdoc)"-Aufruf kommt, dann bekomme ich ein "Fehlermeldung von Agent 'DatenÜbertragen': Type mismatch". Wenn ich selben Aufruf mit "Call doc.MakeResponse(db.GetDocumentByID(agent.ParameterDocID))" ausführe dann geht's. Andere Befehle in main kennen aber cdoc, warum kann MakeResponse damit nicht umgehen?
Danke! Ralph
Semeaphoros:
Weil das Dokument nur im Memory existiert und noch nicht abgespeichert ist. MakeResponse geht nur mit gespeicherten Dokumenten (macht irgendwie auch Sinn)
Axel:
@Semeaphoros
--- Zitat ---
Wenn ich selben Aufruf mit "Call doc.MakeResponse(db.GetDocumentByID(agent.ParameterDocID))" ausführe dann geht's.
--- Ende Zitat ---
Warum dann das? Kann ja irgendwie nicht sein, oder? ??? ???
Axel
Semeaphoros:
Ist das mit dem Aufruf übergebene Doc gespeichert oder nicht?
Funktioniert der GetByID mit einem noch nicht gespeicherten Doc?
In älteren Versionen hat man die Doc-UNID (und vermutlich auch die Doc-ID) erst bekommen, wenn man das Doc gespeichert hatte, sonst gabs nen leeren String, und manchmal klappte es trotzdem, sprich es ist nicht soo ganz konsequent.
Axel:
@Semeaphoros
Ach so du meintest das Hauptdokument. Davon bin ich eigentlich ausgegangen, dass es bereits vorhanden ist.
@dasRalph
Ich hab das Ganze mal getestet, allerdings nicht auf dem Server, und es hat funktioniert.
Was passiert denn, wenn du den Code in Main nach Initialize packst. Funktioniert es dann. Und mir fehlt die Zeile
Set agent = session.CurrentAgent
bevor du dir cdos holst. Fehlt die wirklich oder hast du die nur weggelassen?
Was passiert den wenn du den Agenten lokal aufrufst ?
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln