Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: niu am 18.04.13 - 10:10:06
-
Hallo Miteinander,
Ich bin relativ neu im Lotus Script und nun habe ich eines erstellt, welches mir eine Mail versenden sollte. Jedoch bekomme ich die Fehlermeldung "Object Variable not set". Ich finde den Fehler nicht.
Folgende Situation:
Eine Maske mit der man ein neues Dokument erstellen kann. Beim Speichern des Dokuments sollte eine Mail an den User mit einem Link zu dem gerade erstellen Dokument. Das Script habe ich hinter einer Aktion erstellt.
Sub Click(Source As Button)
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim newdoc As NotesDocument
Dim rtitem As NotesRichTextItem
Set db = session.CurrentDatabase
Set doc = ws.CurrentDocument
Set newdoc = New NotesDocument(db)
Set rtitem = New NotesRichTextItem(newdoc, "Body")
Call rtitem.AppendText("Nachrichten Text")
Call rtitem.AddNewline(1)
Call rtitem.AppendDocLink (doc, "Link zu Dokument")
newdoc.Form = "aktuelle Maske"
newdoc.Subject = "Betreff"
newdoc.SendTo = "user@user.com"
Call newdoc.Send (True)
End Sub
Danke und Gruss
Samuel
-
Hallo,
Wo in Deinem Script initialisiert Du denn die NotesSession?
Andreas
-
Hallo andreas
Ich hatte sie zwischen dem Dim und dem Set db gemacht jedoch erhielt ich dabei einen Fehler "not a member: initialize".
Habe mir dafür die Hilfe von der IBM Seite gezogen, welche mich jedoch nicht weitergebracht hat. Danach habe ich sie weggelassen.
Dim rtitem As NotesRichTextItem
Call session.Initialize("mailsend")
Set db = session.CurrentDatabase
-
Hallo,
Kurzer Auszug aus der Hilfe zu Call session.Initialize().
Note This method is supported in COM only.
Ein einfaches Dim session As New NotesSession reicht vokommen aus, wenn Du Dich nur
innerhalb von Notes bewegst.
Ein Dim session As NotesSession verschafft Di nur eine Objekt-Variable vom Typ NotesSession, jedoch
ist diese noch Nothing.
Andreas
-
zwei Änderungen:
Dim session as New NotesSession
Set doc = ws.CurrentDocument.Document
hth
Thomas
-
Habe ich doch noch glatt uebersehen.
Wo definierst Du eigentlich ws?
Und warum sendest Du die Maske mit? (newdoc.Send(True)
Es handelt sich allem Anschein nach doch NUR um eine normale Mail mit ein wenig Text und einem Doc-Link.
Andreas
-
Vielen Dank für eure Antworten
@Andreas Das mit der Session hat Funktioniert.
Nun als ich die die Form nicht mitgeschickt habe habe ich einen Fehlermeldung gekriegt. Wenn ich newdoc.send("") auf false setzte kann ich newdoc.Form = "Maske" wegglasen ?
Das ws habe ich nirgends definiert, ich wusste nicht wich man das Aktuelle Dokument zuweist, daher habe ich das aus Google.
-
Nein.
Du musst schon angeben, mit welcher Form die Mail beim Empfaenger angezeigt werden soll.
Und da es sich um eine Mail handelt ist die Standard-Maske halt "Memo"
newdoc.Form = "Memo"
Und beim Senden kannst Du dann newdoc.Send(False) verwenden.
Und warum google verwenden. Nimm doch zuerst die Designer-Hilfe. Hier findest Du zu den meisten Themen die
Antworten und auch entsprechende Beispiele (Code).
Andreas
-
Oke, danke
Die Designer Hilfe verwende ich schon jedoch habe ich zu diesem Thema kein Info gefunden (falsch gesucht vielleicht :-:).
Nun bekomm ich die Fehlermeldung "Variant does not contain an object" ich weis was die Meldung bedeutet leider finde ich keine solche falsch Zuweisung. ???
-
Onne zu wissen, an welcher Stelle Deines aktuellen Codes der Fehler kommt, ist es schwierig
bis nahezu unmoeglich zu sagen, was den Fehler ausloest.
Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?
%EDIT
Designer Hilfe.
Klasse NotesDocument und hier die Methode Send.
Andreas
-
Heyho,
eine ordentliche Fehlerbehandlung wird dir bei der Suche nach dem Problem sicherlich helfen.
Lies dir doch mal das hier durch: http://atnotes.de/index.php/topic,11980.0.html
Zusätzlich solltest du dir den Prozess mal im Debugger ansehen.
Beste Grüße,
Mitch
-
@Mitch Vielen Dank für deine Info die hat mich weitergebracht
@Andreas
Habe das ganze Debuggen lassen der Fehler liegt bei dieser Zeile Code:
Set doc = CurrentDocument.Document
Die Variable "doc" wurde so definiert:
Dim doc As NotesDocument
-
...
Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?
...
Das ist nicht nötig, ein Dokument kann versendet werden, ohne gespeichert zu sein.
-
@Mitch Vielen Dank für deine Info die hat mich weitergebracht
@Andreas
Habe das ganze Debuggen lassen der Fehler liegt bei dieser Zeile Code:
Set doc = CurrentDocument.Document
Die Variable "doc" wurde so definiert:
Dim doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = workspace.CurrentDocument.Document
Besser wäre m.E.
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
ist aber Geschmacksache ...
-
Weiterer Tipp:
Gibt unter "Options" mal folgendes ein:
Damit erzwingst du, dass du alle verwendeten Variablen auch deklarieren musst.
Ich vermute dein Fehler hängt damit zusammen, dass du "ws" nicht deklariert/initialisiert hast. Kein Workspace, kein CurrentDocument, kein Document.
Gruß,
Mitch
Edit: Korrektur.
-
...
Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?
...
Das ist nicht nötig, ein Dokument kann versendet werden, ohne gespeichert zu sein.
Ist soweit richtig.
Etwas falsch von mir geschrieben.
Ich meinte natuerlich das Dokument, welches als Dok-Link versendet werden soll.
Andreas
-
Oke, Vielen Danke :)
Läuft nun einwandfrei.