Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet 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
-
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.
-
Danke, Ingo.
Es scheint also, der LS Agent wird 10fach so lang wie FS Agent... :(
Gut zu wissen...
Gruß
Leo
-
Script ist nicht immer einfacher und besser ;)
-
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(..) ?
-
Ich hatte das "10fach" jetzt eher auf die Anzahl Codezeilen bezogen.
-
Ja OK. Kann er auch meinen ?! …habe nicht so genau gelesen...
-
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?
-
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
-
Hallo Leo
So was in diese Richtung...
Hallo Remo,
VIELEN DANK !!!
:knuddel:
Es funktioniert!
Der Tag ist gerettet! ;)
Gruß
Leo
-
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
-
Hast Du denn ein Objekt namens "doc"?
Bernhard
-
Wenn Du Remos Script 1:1 übernommen hast, mußt Du statt rtitem schon rtBody benutzen ;)
Call rtBody.AppendDocLink( doc, "" )
-
Hast Du eine Vorgabeansicht in der Datenbank ?
Andreas
-
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
-
Hallo Andreas,
Hast Du eine Vorgabeansicht in der Datenbank ?
Yes.
Thanks for your interest. ;)
Regards
Leo
-
Hallo Ingo,
Call rtBody.AppendDocLink( doc, "" )
VIELEN DANK
für Deine schnelle Hilfe!!!
:knuddel:
Wünsche Dir ein schönes Wochenende!
Gruß
Leo
-
Mit Option Declare wär das nicht passiert
Grüße David
-
Mit Option Declare wär das nicht passiert
Poste mal hier Deine Version.
Gruß
Leo
-
Leo, schreib' Dir Deine Version selber ;)
Bernhard
-
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
-
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