Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bienmaja am 13.09.02 - 21:08:03

Titel: Object Variable not set
Beitrag 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
Titel: Re: Object Variable not set
Beitrag von: harkpabst_meliantrop am 13.09.02 - 22:07:52
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<:|
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 13.09.02 - 22:24:07
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
Titel: Re: Object Variable not set
Beitrag von: Rob Green am 14.09.02 - 00:48:02
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"...
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 08:37:02
@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
Titel: Re: Object Variable not set
Beitrag von: eknori am 16.09.02 - 08:40:19
HMM, ist denn in der Datenbank eine Vorgabe Maske festgelegt ??

eknori
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 08:50:52
Also in den Maskeneigenschaften habe ich den Punkt "Vorgabe-Datenbankmaske" aktiviert.
Reicht das?
Oder muss ich noch was anderes aktivieren?
Titel: Re: Object Variable not set
Beitrag von: Zimmi am 16.09.02 - 08:56:52
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
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 09:02:12
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
Titel: Re: Object Variable not set
Beitrag von: Rob Green am 16.09.02 - 10:19:36
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.)
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 11:27:38
SUPI!!!!!!!!!! Es funktioniert!

An alle ganz lieben Dank!!!
Titel: Re: Object Variable not set
Beitrag von: harkpabst_meliantrop am 16.09.02 - 13:09:02
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 ???
Titel: Re: Object Variable not set
Beitrag von: harkpabst_meliantrop am 16.09.02 - 13:10:36
Ups, etwas zu spät...
Das kommt davon, wenn man ein Posting anfängt und dann erst Stunden später abschickt ... ;)
Titel: Re: Object Variable not set
Beitrag von: Rob Green am 16.09.02 - 13:32:37
macht nix, ist doch prima informativ  :D
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 14:42:52
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. ]
Titel: Re: Object Variable not set
Beitrag von: bienmaja am 16.09.02 - 14:52:46
...irgendwie sollte man auch wirklich auf Vorschau klicken, wenn man es sich ansehen will... .-)

also hier noch mal...



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