Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bienmaja am 13.09.02 - 21:08:03
-
@all
Hi!
Hilfe! Komme hier mal wieder nicht weiter!
Ich mnöchte doch einfach nur das Dokument per Mail versenden. (Also nicht nur einen Verweis darauf!)
Ich habe auch in den Eigenschaften der Maske eingestellt, dass die Maske im Doc gespeichert wird.
Folgendendes Script habe ich als Aktion:
Sub Click(Source As Button)
'Variablendeklaration
Dim WS As New NotesUIWorkSpace
Dim UiDoc As NotesUIDocument
Dim Doc As NotesDocument
Dim Speicher As Variant
'Variableninitialisierung
Set UIDoc = WS.CurrentDocument
Call Doc.Send(True)
End Sub
Wenn ich dies aber ausführen lasse, dann sagt Notes mir Object Variable not set!
Wo ist mein Fehler???
Danke schon vorab für eure Hilfe!
Liebe Grüße,
Marion
-
Du verschickst ein doc, das du noch gar nicht hast. Es fehlt ein
set doc = uidoc.Document
Oder gleich in einem Term
set doc = ws.CurrentDocument.Document
dann brauchst du die Variable uidoc gar nicht.
--E<:|
-
Hi harkpabst_meliantrop!
Irgendwann werde ich das auch noch begreifen, das mit dem ganzen Deklarieren im Script...
Habe das ausprobiert, aber jetzt sagt Notes:
No Form associated with document
Was kann das jetzt schon wieder bedeuten?
Gruß, Marion
-
hallo maja,
folgendes aus der Notes Help:
Call notesDocument.Send( attachForm [, recipients ] )
Parameters
attachForm
Boolean. If True, the form is stored and sent along with the document. If False, it isn't.
recipients
String or array of strings. Optional. The recipients of the document, which may include people, groups, or mail-in databases.
Usage
If you have only Reader access to a database, you can run a LotusScript agent that creates and sends a document, but the agent will not work if you attach a file to that document.
There are two kinds of items that can affect the mailing of the document when you use Send:
If the document contains additional recipient items, such as CopyTo or BlindCopyTo, Notes mails the documents to these recipients.
If the document contains items to control the routing of mail, such as DeliveryPriority, DeliveryReport, or ReturnReceipt, Notes uses these when sending the document.
Sending the form increases the size of the document, but insures that the recipient can see all of the items on the document.
Also ein (true) noch dazu und das wars.
doc.send(true)
wenn nix, dann mußt du selbst alles machen, wie etwa die Form bestimmen vor dem senden:
doc.form="Memo"...
-
@rob_green
Das mit dem doc.send(true) habe ich ja...
Nur dass da eben die Fehlermeldungen kommen...
Verstehe nur nicht, warum Notes meint, dass keine Maske eingebunden ist...
Das habe ich zumindest aktiviert...
Und was meinst du mit:
quote]wenn nix, dann mußt du selbst alles machen, wie etwa die Form bestimmen vor dem senden:
doc.form="Memo"...[/quote]
Was muss ich in die Aktion noch ein Set doc.form=Ankündigung hinzufüge, dann sagt Notes mir Types Mismatch...
Aber irgendwie muss es ja gehen, denn wenn ich das von Notes vorgegebene Senden nehme, dann wird das Doc mitgesendet...
Liebe Grüße, Marion
-
HMM, ist denn in der Datenbank eine Vorgabe Maske festgelegt ??
eknori
-
Also in den Maskeneigenschaften habe ich den Punkt "Vorgabe-Datenbankmaske" aktiviert.
Reicht das?
Oder muss ich noch was anderes aktivieren?
-
Hi Marion,
wenn du die Maske übergibst, da musst du den Maskennamen als String übergeben - in deinem Beispiel:
Set doc.form = "Ankündigung"
Übrigens - hast du ein Feld SendTo in deiner Maske eingebaut, in der die Empfänger enthalten sind ???
Grüße von
Zimmi
-
Hi!
Das mit der Anweisung "set doc.form = Ankündigung" habe ich eingefügt (siehe vorheriges Posting)
Dann sagt Notes mir Types mismatch, wenn ich die Aktion ausführe.
Wenn ich jetzt sage "set doc.form="Ankündigung" dann kommt beim Speichern die Fehlermeldung: SET may only be used on class instance assignments.
Und das Feld sendto ist vorhanden. Das nimmt Notes auch... Habe ich schon getestet...
Gruß, Marion
-
Biene,
aus der Help nur kurz zum Set Statement (auch wenn es Dir jetzt vielleicht nix bringt), weil Du das falsch anwendest:
Assigns an object reference to a variable, or associates an object with a variable.
Use one of the following three syntaxes:
Syntax 1: Create an object and assign a reference
Set var = New class [ ( [ argList ] ) ]
Elements
var
A Variant variable, an object of the class class, an object of a class derived from class, or any variable element that accepts an object reference, such as an element of an array, list, or user-defined data type.
class
The name of the user-defined or product class of the object to be created.
Das "set doc.form=..:" ist - wie Du es schon bemerkt hast - falsch.
Korrekt muß es im Gesamtkontext lauten zB:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set doc = New NotesDocument( db )
doc.Form = "Memo"
doc.Subject = "Reminder!"
doc.EncryptOnSend = True
doc.Body = "A document awaits your approval in " _
+ db.Title
Call doc.Send( False, "Susanna Coil" )
(Erklärung aus Notes Help:
This script creates and mails (but doesn't save) a new document from the current database. It sets the Form to "Memo" so that its recipient can read it as a mail memo. The document is encrypted for Susanna Coil.)
-
SUPI!!!!!!!!!! Es funktioniert!
An alle ganz lieben Dank!!!
-
Vielleicht fassen wir nochmal kurz zusammen, bevor bienemaja zusammenbricht:
Wenn das Dokument, das gerade geöffnet ist, verschickt werden soll, dann genügt dazu ein einfaches @MailSend (oder die Standardaktion Send Document, die es in jeder Maske gibt). Das setzt voraus, dass es in der Maske (genaugenommen in dem Dokument) zumindest das Feld SendTo mit der Mail-Adresse des Empfängers gibt.
Ist die Maske, mit der die Mail erstellt wurde, nicht die Standard-Memo-Maske, dann existiert sie in der Mail-Datenbank des Empfängers wahrscheinlich nicht, er kann die Mail also vermutlich nicht einfach öffnen und Lesen. In diesem Fall muss man die Maske mit dem Dokument speichern/versenden. In den Maskeneigenschaften muss also "Store form in document" ausgewählt sein. Das funktioniert aber nur, wenn das Dokument vor dem Senden bereits gespeichert ist, sonst hat es keine Form-Informtaionen.
Alternativ kann man @MailSend auch mit Parametern benutzen (siehe Hilfe), die Felder SendTo, Body etc. müssen dann im Dokument nicht unbedingt existieren (oder dürfen anders heißen). In dieser Variante wird das Mail immer mit der Maske "Memo" erzeugt (auch wenn "Store form in document" angehakt ist) und Notes übersetzt die Inhalte automatisch in die Standardfelder, die Mail-Clients erwarten (zugegeben, ich hab's nicht gewusst, sondern gerade ausprobiert).
Script benötigt man eigentlich nur dann unbedingt, wenn man ein zu versendendes Dokument "aus der hohlen Hand" erzeugen und über das Backend füllen möchte. So kann man Mails sogar völlig unabhängig vom gerade geöffneten Dokument erzeugen.
Wenn man trotzdem das gerade aktuelle Dokument versenden will, gilt im Prinzip dasselbe wie oben: Entweder müssen die benötigten Felder (mit den richtigen Namen) bereits im Dokument vorhanden sein, oder man muss sie per Script vor dem Versand einfügen (wie von Rob in seinem Beispiel hervorgehoben).
Auch hier gilt: Wenn das Dokument noch nicht gespeichert ist, besitzt es noch keine Form. Selbst wenn "Store form in documetn" angehakt ist, liefert doc.send(true) deshalb einen Fehler (es gibt keine Form, die mitgeschickt werden könnte). Es sei denn, man setzt wieder explizit im Script das Form-Feld auf den gewünschten Wert. (Aber wehe, man verschreibt sich beim Formname, dann kommt keine Warnung, aber da es die Maske dann nicht gibt, wird auch keine mitgeschickt.)
Der Parameter "True" in doc.Send(True) macht die Maskeneigenschaft "Save doc in form" überflüssig. Also eventuell doch ein Grund, Script zu benutzen, wenn mit dieser Maske auch Dokumente gespeichert werden sollen, bei denen das Mitspeichern der Maske unerwünscht ist.
So, war das jetzt wirklich eine kurze Zusammenfassung ???
-
Ups, etwas zu spät...
Das kommt davon, wenn man ein Posting anfängt und dann erst Stunden später abschickt ... ;)
-
macht nix, ist doch prima informativ :D
-
Also ich muss auch sagen, dass ich das sehr klase finde!
Aber jetzt muss ich dich aber dann noch mal "löchern" :-)...
[*
Wenn ich deinen Text richtig verstehe, dann kann ich das Document also auch per Formula versenden, wenn ich es vorher speichere. ]
-
...irgendwie sollte man auch wirklich auf Vorschau klicken, wenn man es sich ansehen will... .-)
also hier noch mal...
- Wenn ich deinen Text richtig verstehe, dann kann ich das Document also auch per Formula versenden, wenn ich es vorher speichere.
Und das Doc versende ich, indem ich den Punkt [includeDoclink] leer lasse, aber dafür den Punkt "Vorgabe-Datenbankmaske" aktivieren muss. Oder liege ich hier falsch?
- Ich kann es aber auch weiterhin per Script machen... Wenn ich da vorher das Document speichere, dann kann ich den Punkt "Vorgabe-Datenbankmaske" wieder deaktivieren. Was doch dann bedeutet, dass meine Datenbank nicht so groß wird, wie andersrum. Aber das die externen Leute das Formular trotzdem per Mail bekommen. Richtig?
Und mein Fehler ist nur aufgetreten, weil ich eben das Dokument nicht vorher gespeichert habe. Und ihm daher sozusagen noch nicht die passenden Informationen angehängt worden sind?
That's right?
Aber trotzdem noch mal Danke für die ausführliche Erklärung! Sie hat mir einiges verständlicher gemacht...
Liebe Grüße,
Marion