Domino 9 und frühere Versionen > Entwicklung

call doc.MakeResponse(doc2)

(1/2) > >>

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