Autor Thema: call doc.MakeResponse(doc2)  (Gelesen 2295 mal)

Offline dasRalph

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
  • hmmm ...
call doc.MakeResponse(doc2)
« am: 13.11.03 - 12:19:56 »
Hallo!


Ich hab mal wieder ein Problem, das
Code
"Call doc.MakeResponse(doc2)"

geht nicht :(

Folgende Situation:
Mit
Code
Dim agent As NotesAgent
Set agent = db.GetAgent("DatenÜbertragen")
agent.RunOnServer(pdoc.NoteID)
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) 

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

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:call doc.MakeResponse(doc2)
« Antwort #1 am: 13.11.03 - 12:29:56 »
Weil das Dokument nur im Memory existiert und noch nicht abgespeichert ist. MakeResponse geht nur mit gespeicherten Dokumenten (macht irgendwie auch Sinn)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:call doc.MakeResponse(doc2)
« Antwort #2 am: 13.11.03 - 12:35:17 »
@Semeaphoros

Zitat

Wenn ich selben Aufruf mit "Call doc.MakeResponse(db.GetDocumentByID(agent.ParameterDocID))" ausführe dann geht's.


Warum dann das? Kann ja irgendwie nicht sein, oder?   ??? ???


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:call doc.MakeResponse(doc2)
« Antwort #3 am: 13.11.03 - 12:58:22 »
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.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:call doc.MakeResponse(doc2)
« Antwort #4 am: 13.11.03 - 13:07:06 »
@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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline dasRalph

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
  • hmmm ...
Re:call doc.MakeResponse(doc2)
« Antwort #5 am: 13.11.03 - 21:45:49 »
Set agent = session.CurrentAgent

Ich hatte die Zeile vergessen :(

Was passiert den wenn du den Agenten lokal aufrufst ?

Dann kommt das selbe bei raus. Das Dokument ist beim Aufruf des Agenten gespeichert, der Agent wird per Script im QueryClose des Dokumentes aufgerufen. Der Agent kann ja auf das "cdoc" zugreifen (Daten in eine AccessDB schreiben und so) nur er kann mit dem "cdoc" kein Antwortdokument erstellen. Wenn ich aber  "Call doc.MakeResponse(db.GetDocumentByID(agent.ParameterDocID))" mache dann gehts was doch eigentlich das selbe wie "Call doc.MakeResponse(cdoc)" ist


Ralph

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz