Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: aretni am 09.04.08 - 16:06:37

Titel: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 09.04.08 - 16:06:37
Hallo,

ich habe dank eurer Hilfe es soweit gebracht, dass mein Agent einen String aus dem Internet zieht und in einer Variablen ablegt.
Jetzt die simple Frage: Wie kann man einem Dokument beibringen, dass es einen Agent startet und den Wert, welchen der Agent liefert, im Dokument selbst abspeichert?

Falls ihr mich nicht verstanden habt:
1. Dokument startet Agent
2. Agent liefert einen Wert (String)
3. Dokument greift diesen String auf
4. Dokument speichert den Wert

Für einige von Euch bestimmt eine einfach Sache, für mich als ANFÄNGER nicht so trivial!

Vielen Dank im voraus!

Gruß

Aretni
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: Axel am 09.04.08 - 16:12:37
Wie und wo soll der Agent denn gestartet werden?

Ein Agent kann keinen Wert zurückliefern. Das können nur Funktionen. Du kannst aber den String innerhalb des Agenten in das Dokument schreiben und das Dokument dann speichern.


Der Ablauf würde dan so ausehen:

1. Agent wird gestartet
2. Agent ermittelt Wert
3. Agent schreibt Wert in Dokument
4. Agent speichert Dokument



Axel
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: bernino1 am 09.04.08 - 16:21:13
Wenn ich das von Axel aufgreifen darf:

1. Agent wird gestartet
heißt - mit "Set doc = sess.DocumentContext" kommts du auf das geöffnete Dokument

2. Agent ermittelt Wert
hier gibts den von dir genannten String

3. Agent schreibt Wert in Dokument
doc.feldname = string

4. Agent speichert Dokument
call doc.save(true,false)

wenn du den gerade ermittelten Wert nicht gleich im Browser anzeigen willst müsste es das gewesen sein!

   
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 09.04.08 - 16:33:10
Wenn ich das von Axel aufgreifen darf:

1. Agent wird gestartet
heißt - mit "Set doc = sess.DocumentContext" kommts du auf das geöffnete Dokument

2. Agent ermittelt Wert
hier gibts den von dir genannten String

3. Agent schreibt Wert in Dokument
doc.feldname = string

4. Agent speichert Dokument
call doc.save(true,false)

wenn du den gerade ermittelten Wert nicht gleich im Browser anzeigen willst müsste es das gewesen sein!

   

Vielen Dank für die schnelle Hilfe
doc = sess.DocumentContext
-> ist doc eine Variable oder soll ich hier den Namen meines Dokumentes eintragen?
Wenn ich den Agent speichern will sagt Notes mir, sie sei nicht deklariert!
Alles andere hab ich soweit verstanden.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 09.04.08 - 16:37:01
Name des Dokuments? Nennst Du das Hasi oder so?  ;D
doc ist hier ein Objekt vom Typ NotesDocument.

Von mir noch eine Alternative, wenn das Zieldokument nicht direkt im Zugriff steht (zum Beispiel, der Wechselkurs, um den es lt. Deinen anderen Threads ja wohl geht, soll in ein Setup- oder ProfileDocument geschrieben werden): Du startest den Agent mit NotesAgent.Run (NoteID). Die NoteID musst und kannst Du vorher ermitteln. Dann weisst Du auch im Agent, wie Du das NotesDocument instantiieren und dorthin zurückschreiben kannst.

Bernhard
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 10:34:36
Kann mir bitte jemand erklären was genau unter
Set doc = sess.DocumentContext
zu verstehen ist und wie ich auf ein Dokument zugreifen kann  ????

PS: Hab erst vor ca. 3 Wochen mit Lotus angefangen und meine Fragen sind berechtigt  :) (Für euch bestimmt lächerlich)

Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 10:43:44
Aus der Designerhilfe:

Zitat
DocumentContext property 

Beispiel
Read-only. The in-memory document when an agent starts.
Hinweis  This property is not implemented in COM.
Defined in
NotesSession
Data type
NotesDocument
Syntax
To get: Set notesDocument = notesSession.DocumentContext
Usage
For an agent activated in a view through the Notes client UI, the in-memory document is the document highlighted in the view.
For an agent run from a browser with the OpenAgent URL command, the in-memory document is a new document containing an item for each CGI (Common Gateway Interface) variable supported by Domino. Each item has the name and current value of a supported CGI variable. (No design work on your.....


Gerade für Anfänger - was wir alle mal waren- ist die Designerhilfe Goldwert ;-)
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 11:05:19
ich habe jetzt folgendes gemacht:

Dim doc As NotesDocument
Dim session As NotesSession
Set session = New NotesSession
Set doc = session.DocumentContext
doc.HtmlAnzeige = gHTMLCode
Call doc.Save(True,False)

Ich habe ein Feld mit dem Namen "HtmlAnzeige", wie kann ich auf dieses Feld zugreifen oder geht das nicht direkt?
Wenn ich doc. eintippe wird mein Feld (HtmlAnzeige) nicht in der Liste aufgeführt. Mein String der übergeben werden soll heißt gHtmlCode und laut ServerConsole ist auch was in dem String eingetragen und zwar der XML-Code aus dem Internet (bis dahin funkst bei mir alles)
Die Noteshilfe bringt mich hier nicht weiter.

Wie kann ich nun auf das Dokument zugreifen, oder ein neues erstellen und den Wert von gHtmlCode darin abspeichern?

Plz help!  ???



Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: m3 am 10.04.08 - 11:12:34
Die Felder eines Dokumentes werden - da sie sehr volatil sind - beim TypeAhead in der Liste nie angeführt. Hinschreiben kann man sie trotzdem.
Als Alternative kannst/solltest Du Dir NotesDocument.ReplaceItemValue() in der Designer-Hilfe ansehen.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 11:15:44
Hallo

Feldnamen werden nicht als Methode/Eigenschaft bei eintsprechenden Objekten angezeigt.

Zitat
Wie kann ich nun auf das Dokument zugreifen,

z.B.:
doc.getItemValue( "FeldName" ) 

Zitat
oder ein neues erstellen

z.B.:
set doc = db.CreateDocument

Zitat
und den Wert von gHtmlCode darin abspeichern
z.B.:
call doc.ReplaceItemValue( "FeldName" , "Wert" )
call doc.Save( TRue , TRue )

Zitat
Die Noteshilfe bringt mich hier nicht weiter.
i.R. ist die Hilfe super.
Wenn es nicht ausreicht, dann gibt es noch super Bücher.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 11:36:36
Vielen dank für die hilfreichen Tipps.
Wenn ich jetzt folgendes ausführe:

Set session = New NotesSession
Set doc = session.DocumentContext
doc.getItemValue( "HtmlAnzeige" ) 
Call doc.ReplaceItemValue( "HtmlAnzeige" , "gHTMLCode" )
Call doc.Save( True , True )

Dann kommt die Errormeldung: Object variable not set
Wat nu?
Anscheinend greift er nicht auf das Feld zu oder er weiß nicht wo genau es liegt, vermute ich jetzt mal...
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: m3 am 10.04.08 - 11:39:08
1) Errorhandling einbauen
2) Code im Debugger laufen lassen
3) In welcher Zeile kommt der Fehler.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: Driri am 10.04.08 - 11:40:24
Wenn das der komplette Code ist, fehlen die Deklarationen der Variablen (siehe Designerhilfe unter "Dim").
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 11:41:05
Zitat
Call doc.ReplaceItemValue( "HtmlAnzeige" , "gHTMLCode" )

Ist gHTMLCode eine Variable oder willst Du wirklich den STRING "gHTMLCode" in das Feld schreiben?


Ist   not doc is Nothing   ??
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 11:42:23
Zitat
Call doc.ReplaceItemValue( "HtmlAnzeige" , "gHTMLCode" )

Ist gHTMLCode eine Variable oder willst Du wirklich den STRING "gHTMLCode" in das Feld schreiben?


Ist   not doc is Nothing   ??
Jup, ich will den String gHTMLCode in das Feld schreiben.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 11:44:31
Wenn das der komplette Code ist, fehlen die Deklarationen der Variablen (siehe Designerhilfe unter "Dim").

Der rest liegt in Declarations:

Dim gHTMLCode As String
Dim gDateTime As NotesDateTime
Dim gBaseURL As String
Dim iDoc As NotesDocument
Dim doc As NotesDocument
Dim session As NotesSession

Und das in Init:

Sub Initialize
   gBaseURL="http://www.webservicex.com/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency=EUR"
   Call getResDatafromJARS()
   Messagebox gHTMLCode
   Set session = New NotesSession
   'Set doc = session.DocumentContext
   doc.getItemValue( "HtmlAnzeige" ) 
   Call doc.ReplaceItemValue( "HtmlAnzeige" , "gHTMLCode" )
   Call doc.Save( True , True )
End Sub

Call getResDatafromJARS() funkst ohne Probleme es geht eigentlich nur darum den String in ein Feld zuschreiben bzw. in ein Dokument, so schwer kann das doch nicht sein, oder?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 11:46:48
in Option liegt auch noch was:
Option Public
Option Declare

Uselsx "*javacon"
Use "JavaSockets"
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: Driri am 10.04.08 - 11:55:20
Das "set doc=" ist auskommentiert. doc ist dann Nothing und dann schmeißt Notes auch den Fehler.

Die Zeile "doc.getItemValue( "HtmlAnzeige" )" kannst Du dir sparen.

Ich glaube, Du hast Dirk falsch verstanden. Oben deklarierst Du eine String-Variable gHTMLCode, aber unten schreibst Du dann den Text "gHTMLCode" in das Item. Wenn Du den Inhalt der Variable gHTMLCode in das Item packen willst, mußt Du die Anführungszeichen weglassen.

Und wo wird gHTMLCode ein Wert zugewiesen ?



Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:03:23
Das "set doc=" ist auskommentiert. doc ist dann Nothing und dann schmeißt Notes auch den Fehler.

Die Zeile "doc.getItemValue( "HtmlAnzeige" )" kannst Du dir sparen.

Ich glaube, Du hast Dirk falsch verstanden. Oben deklarierst Du eine String-Variable gHTMLCode, aber unten schreibst Du dann den Text "gHTMLCode" in das Item. Wenn Du den Inhalt der Variable gHTMLCode in das Item packen willst, mußt Du die Anführungszeichen weglassen.

Und wo wird gHTMLCode ein Wert zugewiesen ?
Ja ich hab das "set doc =" auskommentiert weil ich was testen wollte.
gHTMLCode wird in der "Call getResDatafromJARS()" einen String zu gewiesen. Der in der ServerConsole erfolgreich angezeigt wird. Die funktion getResDatafromJARS() tut nichts anderes außer eine Webseite einzulesen und in dem String gHTMLCode zu speichern.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:05:37
wenn ich den Code für das abspeichern in Dokumenten auskommentiere kommt keine Fehlermeldung, nur wenn ich das:
   Set session = New NotesSession
   Set doc = session.DocumentContext
   Call doc.ReplaceItemValue("HtmlAnzeige" , gHTMLCode )
   Call doc.Save( True , True )
hinzunehme...
Also liegt es an den paar Zeilen.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: MadMetzger am 10.04.08 - 12:08:08
Nein, der Fehler, den du hier zuletzt hattest, liegt einzig und allein an der Initialisierung bzw. fehlenden Initialisierung von doc.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:08:31
Geh da doch endlich mal mit dem Debugger durch und ermittle, in welcher Zeile das fehlende Objekt bemängelt wird.
Ich vermute, Du hast gar keine Dokument gewählt / offen und DocumentContext greift ins Leere.

Bernhard
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:10:43
Nein, der Fehler, den du hier zuletzt hattest, liegt einzig und allein an der Initialisierung bzw. fehlenden Initialisierung von doc.
und wie mache ich es richtig? Hab fast den ganzen Code gepostet!

Wie gesagt, für euch ist das bestimmt ne Sache von Sekunden ich brauch dafür schon Stunden und bin immer noch nicht dahinter gekommen. Vielleicht sind wir (ich und Notes) keine Freunde?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: MadMetzger am 10.04.08 - 12:13:58
Bernhard hat noch einen Schritt weiter gedacht als ich. Hast du das schon überprüft?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:17:02
heul  :'(
Wie kann ich DocumentContext sagen, dass es auf ein Dokument greifen soll  :-:?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:18:43
Lies doch bitte strukturiert (!) die DesignerHelp hierzu. Da steht *alles* beschrieben.

Bernhard
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:23:14
Lies doch bitte strukturiert (!) die DesignerHelp hierzu. Da steht *alles* beschrieben.

Bernhard
Gut, dann stell ich am besten keine Frage mehr, erst nachdem ich die komplette Hilfe durchgelesen hab und diese mir dann nicht mehr weiterhelfen kann.
Das Problem ist, ich brauche dieses einfache Ding bis morgen früh und ich habe einfach keine Zeit mehr mir die Hilfe durchzulesen, deswegen bitte ich hier um Rat bei Profis die sowas bestimmt in 30 Sekunden hinbekommen würden.
Trotzdem danke für alles!
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: m3 am 10.04.08 - 12:26:19
Wenn es "schnell" gehen muss, helfen Dir sicherlich einige Forumsmitglieder gegen den Einwurf kleinerer und größerer Münzen, dann gibts auch fertigen Code.

"Gratis" gibts Hilfe zur Selbsthilfe.


P.S: Was in der Anfangsdiskussion unterging - wie wird denn der Agent gestartet (manuell, zeitgesteuert, übers Web ...) und welche Parameter (Suchen, ...) sind für ihn denn definiert? Ev. ist der DocumentContext ja leer, weil der Agent nicht auf die markierten Dokumente läuft oder übers Web aufgerufen wird (steht auch in der Designer Hilfe ;) ).
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:28:57
Zu den 30 Sekunden: Von hier aus ist es unmöglich festzustellen, was Du gemacht hast, damit NotesSession.DocumentContext in die Hose geht. Was es dabei zu beachten gilt, steht nicht "in der ganzen Hilfe", sondern in genau dem einen betreffenden Dokument der DesignerHelp.

Bernhard
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:30:02
Wenn es "schnell" gehen muss, helfen Dir sicherlich einige Forumsmitglieder gegen den Einwurf kleinerer und größerer Münzen, dann gibts auch fertigen Code.

"Gratis" gibts Hilfe zur Selbsthilfe.


P.S: Was in der Anfangsdiskussion unterging - wie wird denn der Agent gestartet (manuell, zeitgesteuert, übers Web ...) und welche Parameter (Suchen, ...) sind für ihn denn definiert? Ev. ist der DocumentContext ja lehr, weil der Agent nicht auf die markierten Dokumente läuft oder übers Web aufgerufen wird (steht auch in der Designer Hilfe ;) ).
Wo ist denn der Schlitz für die Münzen an meinem PC?
Was würde mich denn so ein paar Zeilen Code kosten?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 12:33:37
OK. Und in welcher Zeile genau?

Wo ist deine Fehlerbehnadlung?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: Axel am 10.04.08 - 12:34:21
Du hast immer noch eine der entscheidenden Fragen vom Anfang beantwortet.

Wo und wie startest du den Agenten?

Wenn das geklärt ist können wir weitermachen.


Axel
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:36:56
Du hast immer noch eine der entscheidenden Fragen vom Anfang beantwortet.

Wo und wie startest du den Agenten?

Wenn das geklärt ist können wir weitermachen.


Axel

Der Agent liegt auf einem Server.
Dieser wird über einen anderen Agenten (heißt runonserver) gestartet:
Sub Initialize
   Dim xS As New NotesSession   
   Dim xAgent As NotesAgent
   
   Set xAgent = xS.CurrentDatabase.getAgent("Waehrungstest")
   Call xAgent.runonServer()
   
End Sub

Waehrungstest, so heißt mein Agent von dem die ganze Zeit die rede ist.

Ich gehe auf Agents, rechtsklickt auf runonserver, dann auf run...

Dann sehe ich in der ServerConsole dass er den Agenten ausführt und was aus dem Internetzieht und dieses dann auf der Console printet.

Wie gesagt, das funktioniert alles ohne Probleme.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: m3 am 10.04.08 - 12:38:28
Und weiter mit dem "ausdernasezieh":
Wie ist der Agent (der Zweite, der die tatsächliche Arbeit macht, nicht der runonserver) konfiguriert ..... ?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:40:05
Und weiter mit dem "ausdernasezieh":
Wie ist der Agent (der Zweite, der die tatsächliche Arbeit macht, nicht der runonserver) konfiguriert ..... ?
Weil Chef sagen, ich soll Agent so starten...
Chef morgen früh erst wieder da :(
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:42:14
Ich gehe auf Agents, rechtsklickt auf runonserver, dann auf run...

Und wie soll da bitte ein Dokument im Kontext der Aktion stehen?
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: aretni am 10.04.08 - 12:44:37
Ich gehe auf Agents, rechtsklickt auf runonserver, dann auf run...

Und wie soll da bitte ein Dokument im Kontext der Aktion stehen?
Das Runonserver ist nur dazu da, das der Server mit der Außenwelt Kontakt aufnehmen kann.
Wenn der Agent dann läuft ist das Runonserver nicht mehr notwendig...
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:50:12
Beantworte mir doch bitte folgende einfache Frage: Welches Dokument sollte im Kontext einer Aktion stehen, wenn dies auf dem Server ein Agent ist? Das ist doch absurd.

Bernhard
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 12:53:10
ich denke da fehlt einiges an Hintergrundwissen etc. ...

Ein ContextDocument gibt es in dieser Konstilaition nicht.
Das kann man im Agenten ja sehr leicht abfangen ;-) (Hinweise dazu gibt es hier in den antworten).

Wenn unbedingt der Agent über einen anderen Agenten getriggert werden muss (weil Cheffe es so sagt), dann kann man dem Agenten beim Aufruf eine NoteID eines Docs (NotesDocument) mitgeben.

Aber dazu ist es wichtig die DesignerHilfe zu lesen!!!

Wenn eine fertige Lösung gewünscht ist, können wir gerne ein Angebot zukommen lassen .
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: koehlerbv am 10.04.08 - 12:57:37
Wenn unbedingt der Agent über einen anderen Agenten getriggert werden muss (weil Cheffe es so sagt), dann kann man dem Agenten beim Aufruf eine NoteID eines Docs (NotesDocument) mitgeben.

Siehe Posting #4. Wir haben hier ja eigentlich schon alles gesagt. Und wenn Cheffe das haben will, aber (noch) kein dazu fähiges Personal hat, muss Cheffe Taler in die Hand nehmen.

Bernhard

PS: Ich klinke mich hier jetzt aus - muss Taler verdienen.
Titel: Re: Anfängerfrage: Werte aus Agent in Notesdokument schreiben
Beitrag von: dirk_2909 am 10.04.08 - 13:02:18
Zitat
Und wenn Cheffe das haben will, aber (noch) kein dazu fähiges Personal hat, muss Cheffe Taler in die Hand nehmen.

Anscheinend will der Chef keinen Taler in die Hand nehmen, sonst würde er nicht  .. :-X :-X :-X :-X ...

Zitat
Wir haben hier ja eigentlich schon alles gesagt.

Ja. Die Lösung ist hier beschrieben ..