Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Bruce Willis am 27.11.08 - 13:30:45

Titel: Periodischer LS Agent
Beitrag von: Bruce Willis am 27.11.08 - 13:30:45
Hallo,

ich hab eine Ansicht, wo mehrere Dokumente angezeigt werden.
Zwei Felder in jedem Dokument müssen ausgelesen werden:
UserR und MailThema

Ein Agent überprüft täglich, ob dort welche Dokumente gibt, und verschickt gegebenfalls Emails.

Mein alter FormelSprache-Agent funktioniert enwandfrei:

@MailSend (UserR; ""; ""; MailThema ; "";
" Hallo " + UserR + " !" );
SELECT  @All


Ich versuche jetzt, einen ähnichen LS-Agenten zu erstellen, bekomme aber die Fehlermeldung "Object variable not set" bei der folgenden Zeile:

Set doc=uidoc.Document

Wie soll der u.g. Agent richtig aussehen?

Danke und Gruß
Leo

Sub Initialize
   Dim ws As New notesuiworkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim UIDoc As notesuidocument  'Aktuelles Dokument im Frontend
   Dim doc As notesdocument   'Aktuelles Dokument im Backend
   
   Set UIdoc=ws.CurrentDocument
   Set doc=uidoc.Document
   Set db= session.CurrentDatabase
   Set Message=New NotesDocument(db)    'Mail erstellen
   Set rtitem = New NotesRichTextItem( Message, "Body" )
   
   UserR=uidoc.FieldGetText("UserR")
   MailThema= uidoc.FieldGetText("MailThema")
   
   Message.Form="Memo"
   Message.Principal="Bruce Willis/World"
   
   Message.SendTo=doc.UserR
   Message.Subject = MailThema
   Call rtitem.AppendText( "Hallo ")
   Call rtitem.AppendText( UserR)
   Call rtitem.AppendText(" !")
   Call Message.Send( False )
End Sub


Titel: Re: Periodischer LS Agent
Beitrag von: Driri am 27.11.08 - 13:46:23
In periodischen Agenten kann kein UI verwendet werden. Du könntest z.B. via db.Search eine DocumentCollection erzeugen, die alle Dokumente enthält, die den Bedingungen entsprechen. Über diese Collection läßt Du dann eine Schleife laufen und frühstückst darin die Dokumente aus der Collection der Reihe nach ab.
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 27.11.08 - 14:01:11
Danke, Ingo.

Es scheint also, der LS Agent wird 10fach so lang wie FS Agent... :(
Gut zu wissen...

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: Driri am 27.11.08 - 14:03:17
Script ist nicht immer einfacher und besser  ;)
Titel: Re: Periodischer LS Agent
Beitrag von: dirk_2909 am 27.11.08 - 14:03:54
Zitat
10fach
Wie kommst Du auf diesen Wert?

Wie lange hat es denn vorher gedauert? Wie lange mit LS?
Wie hast Du denn die Schleife gebaut, die die Docs verarbeitet?

Doch wohl nicht mit getNthDocument(..) ?

Titel: Re: Periodischer LS Agent
Beitrag von: Driri am 27.11.08 - 14:04:57
Ich hatte das "10fach" jetzt eher auf die Anzahl Codezeilen bezogen.
Titel: Re: Periodischer LS Agent
Beitrag von: dirk_2909 am 27.11.08 - 14:05:44
Ja OK. Kann er auch meinen ?! …habe nicht so genau gelesen...
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 27.11.08 - 15:32:46
Zitat
10fach
Wie kommst Du auf diesen Wert?
Auf einen Blick die Anzahl der Zeilen abgeschätzt.
Vielleicht auch mehr als 10...


Wie lange hat es denn vorher gedauert?
Ich habe doch nicht "lange" oder "langsam" sondern "lang" geschrieben...


Wie lange mit LS?
Das weiß ich nicht, da ich den LS Agenten nicht habe.

Würdest Du bitte deine Version hier präsentieren, damit wir die Zeiten vergleichen können?


Titel: Re: Periodischer LS Agent
Beitrag von: Fedaykin am 27.11.08 - 16:34:57
Hallo Leo

So was in diese Richtung:

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim docMemo As NotesDocument
   Dim rtBody As NotesRichTextItem
   
   Set db=session.CurrentDatabase
   Set view=db.GetView("vwAllDocs")
   Set doc=view.GetFirstDocument
   Do Until doc Is Nothing
      Set docMemo=New NotesDocument(db)
      docMemo.Form="Memo"
      docMemo.Principal="Remo Linter/LLB"
      docMemo.SendTo=doc.UserR
      docMemo.Subject=doc.MailThema
      
      Set rtBody=docMemo.CreateRichTextItem("Body")
      rtBody.AppendText "Hallo "
      rtBody.AppendText doc.UserR(0)
      rtBody.AppendText " !"
      
      docMemo.Send False
      
      Set doc=view.GetNextDocument(doc)
   Loop
End Sub


Gruss
Remo
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 27.11.08 - 18:20:36
Hallo Leo
So was in diese Richtung...

Hallo Remo,

VIELEN DANK !!!

 :knuddel:

Es funktioniert!

Der Tag ist gerettet! ;)

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 28.11.08 - 12:24:56
Hallo,

was kann in den o.g. Agenten von Remo eintragen, damit auch ein Link zu dem Dokument per Email verschickt wird?

Das Folgende funktioniert leider nicht:

   Call rtitem.AppendDocLink( doc, "" )

Vielen Dank im Voraus!

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: koehlerbv am 28.11.08 - 12:28:20
Hast Du denn ein Objekt namens "doc"?

Bernhard
Titel: Re: Periodischer LS Agent
Beitrag von: Driri am 28.11.08 - 12:29:41
Wenn Du Remos Script 1:1 übernommen hast, mußt Du statt rtitem schon rtBody benutzen  ;)

Call rtBody.AppendDocLink( doc, "" )
Titel: Re: Periodischer LS Agent
Beitrag von: Glombi am 28.11.08 - 12:30:20
Hast Du eine Vorgabeansicht in der Datenbank ?

Andreas
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 28.11.08 - 14:09:27
Hallo Bernhard,

Hast Du denn ein Objekt namens "doc"?

Nein.
Nur was in dem tollen Agenten von Remo steht.

Danke fürs Interesse.  ;)

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 28.11.08 - 14:10:54
Hallo Andreas,

Hast Du eine Vorgabeansicht in der Datenbank ?

Yes.

Thanks for your interest.  ;)

Regards
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 28.11.08 - 14:13:03
Hallo Ingo,

Call rtBody.AppendDocLink( doc, "" )

VIELEN DANK
für Deine schnelle Hilfe!!!

 :knuddel:

Wünsche Dir ein schönes Wochenende!

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: atbits am 05.12.08 - 09:15:04
Mit Option Declare wär das nicht passiert

Grüße David
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 05.12.08 - 21:01:52
Mit Option Declare wär das nicht passiert


Poste mal hier Deine Version.

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: koehlerbv am 05.12.08 - 23:45:40
Leo, schreib' Dir Deine Version selber  ;)

Bernhard
Titel: Re: Periodischer LS Agent
Beitrag von: Bruce Willis am 06.12.08 - 00:27:55
Leo, schreib' Dir Deine Version selber  ;)



Lieber Bernhard,

1. Mach's Dir auch selber...  :D

2. Meine Version habe ich schon vor einer Woche - am 28.11.08 um ca. 12:29:41 - geschrieben. ;)
Und seit dem funktioniert sie perfekt!

3. Mich interessiert (nur rein akademisch) die Version bzw. die Kenntnisse des Herren, der die Bemerkungen in der Art "so wäre es nicht passiert" ohne Weiteres abgibt.

Gruß
Leo
Titel: Re: Periodischer LS Agent
Beitrag von: Glombi am 06.12.08 - 12:56:21
Wenn Du unter den Options ein
Option Declare
einträgst, prüft Notes beim Speichern des Script-Codes, ob auf der entsprechenden Modulebene alle verwendeten Variablen- und Objektnamen deklariert wurden.

Eine Ausnahme bilden gemeinsame Aktionen...

Andreas