Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: sinus am 03.04.03 - 19:23:30
-
Hallo,
ich erstellen wie folgt ein Dokument:
'Neue Mail erstellen
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim doc2 As notesdocument
Set doc2 = New NotesDocument( db )
'Neue Mail mit Daten füttern
doc2.Form = "Memo"
doc2.SendTo = t(12)
doc2.Subject = "Subjekt"
doc2.body= "Hier kommt der Messagetext rein"
doc2.SaveMessageOnSend = True
'Mail verschicken
Call doc2.Send(False)
Nun suche ich eine Möglichkeit dem User die Chance zum BEARBEITEN des Dokuemtens zu geben, BEVOR es verschickt wird.
Es soll im Prinzip vor dem -'Mail verschicken- eine Maske aufgehen, die dem User die Möglichkeit gibt, den Text zB zu ändern und dann kann er selber mit dem üblichen Send Button die Nachricht verschicken.
Wie geht das?? Habe leider (mal wieder) in der Hilfe nichts gefunden...
Vielen Dank schonmal&Gruss Sven
-
Hi,
evtl. so wenn ich mich nicht irre...
'Neue Mail erstellen
Dim ws as notesuiworkspace
dim uidoc as notesuidocument
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim doc2 As notesdocument
Set doc2 = New NotesDocument( db )
'Neue Mail mit Daten füttern
doc2.Form = "Memo"
doc2.SendTo = t(12)
doc2.Subject = "Subjekt"
doc2.body= "Hier kommt der Messagetext rein"
doc2.SaveMessageOnSend = True
'Mail verschicken
'Call doc2.Send(False)
set uidoc = ws.editdocument(true, doc2)
-
Hi,
ersteinmal vielen Dank für Deine Hilfe, wenn ich es so wie oben angegeben mache, kommt immer die Fehlermeldeung Object variable not set.
Mit
Dim ws As *new* notesuiworkspace
geht dann aber prima :)
Nun habe ich noch 2 Probleme:
1. Der Messagetext den ich unter
doc2.body= "Hier kommt der Messagetext rein"
eingegeben habe ist WEG ?!?!
2. Ich würde gerne eine fertiges Dokument als Messagetext einfügen.
Ist es möglich eine Mail im Entwurfsordner zu speichern und den Text aus der
Entwurfsmail zu verwenden??
Gruss, Sven
-
Hi,
sorry natürlich muss "new" rein.
Prinzipiell ist alles möglich.
Der Text ist weg, weil es ein RTF Feld ist und erst gespeichert werden muss wenn es im UI aufgemacht wird.
ein call doc2.save(true, false) müsste reichen.
Wenn Du mit Vorlage arbeiten willst, dann wird das ganze schon etwas aufwendiger.
dazu brauchst DU noch:
view.getdocumentbykey() oder wenn Du mir UNID arbeitest db.getdocumentbyunid()
um das Vorlagendokument aus der DB zu fischen.
Die Wertezuweisung:
doc1.Feld = doc2.Feld
und ein doc1.save(true, false)
am Ende
Ein wenig Fehlerbehandlung aussenrum dann könnte es so hinhauen.
-
Für den Endbenutzer soll das ganze natürlich möglichst einfach sein.
Mir fällt da jetzt leider nichts besonders schlaues ein...wie man dem Benutzer die Möglichkeit gibt den Text vorzugeben...hast Du da noch eine Idee?
Wenn es nicht anders geht, dann im Notfall indem der Benutzer eine Mail anlegt und diese in einem bestimmten Ordner abspeichert vielleicht?!? ABer wie fische ich mir dieses Dokument dann aus der DB ?? Das ganze soll ja flexibel sein, sprich wenn der Benutzer das Dokument löscht und ein neues anlegt muss es ja immernoch funktionieren, aber dabei ändert sich wahrscheinlich so ziemlich alles an ID's etc. was man als Abfrage hätte verwenden können, oder?
Gruss, Sven
-
komme leider alleine noch nicht so richtig weiter, wie kann ich denn auf eine entwurfvorlage in der maildatenbank zugreifen??
oder gibt es doch noch eine bessere lösung für oben genanntes problem der textvorgabe?
gruss, sven
-
Habe mir jetzt folgendes Script ausgedacht:
'Vorlage verwenden
Dim session3 As New NotesSession
Dim db3 As NotesDatabase
Dim view3 As NotesView
Dim doc3 As NotesDocument
Set db3 = session3.CurrentDatabase
Set view3 = db3.GetView( "draft" )
Set doc3 = view3.GetDocumentByKey( "wer" )
Set uidoc = ws.editdocument(True, doc3)
Bekomme aber leider immer die Fehlermeldung: Incorrect Argument Type
Please help?!?
Gruss, Sven
-
Hi,
ich sehe kein
dim ws as new notesuiworkspace
-
das habe ich aber weiter oben schon drin, daran kann es nicht liegen...
-
Hi,
stell mal das ganze Script rein
-
So jetzt gibt es keinen Fehler mehr, ABER er öffnet mir jetzt leider das Dokument auf dem der Cursor gerade steht und nicht das Dokument im
Order: draft
mit dem Sender: test
Sollte das nicht eigentlich so gehen??
Ich möchte auf der erste Dokument im Ordner "draft" zugreifen, was mache ich falsch?
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim session As New NotesSession
Dim docThis As NotesUIDocument
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set docThis = uiws.CurrentDocument
Set view = db.GetView("draft")
Set doc = view.getdocumentbykey("test", False)
Call uiws.EditDocument(doc)
End Sub
-
Hi,
den Zusammenhang verstehe ich nicht ganz richtig.
Ist das eine Schaltfläche innerhalb einer Ansicht oder Maske?
Und wie soll denn Dein Ablauf aussehen. Es gibt ja mehrere Möglichkeiten dem Benutzer ablaufen von den unterschiedlichsten Stellen anzubieten. Diese Variante des Scripts weicht von der ersten Fassung etwas ab.
Ich gehe mal davon aus, dass es sich um eine Schaltfläche in einer Ansicht handelt.
Hier brauchst Du nicht:
Dim docThis As NotesUIDocument
Set docThis = uiws.CurrentDocument
zu machen, wenn Du nicht mit dem Dokument arbeiten willst, denn wie Du ja feststellst, öffnet sich das in der Ansicht markierte Dokument.
Ein erstes Dokument in einer view bekommt man mit:
set doc = view.getfirstdocument
ich baue immernoch ein:
if not doc is nothing then
Call uiws.EditDocument(doc)
end if
drumherum.
Denn findest Du kein Doc und machst mit Deiner Zeile weiter krachts im Karton.
Was passiert jetzt aber, wenn mehrere Dokumente in diesem Ordner sind?
-
Hi,
ich starte das Script in einer Maildatenbank von einem Button aus.
Es sieht jetzt so aus:
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView("draft")
Set doc = view.getfirstdocument
If Not doc Is Nothing Then
Call uiws.EditDocument(doc)
End If
Call uiws.EditDocument(doc)
End Sub
Leider öffnet er jetzt einfach nur das Dokument auf dem der Cursor gerade steht, und nichtmal im Bearbeiten Modus sondern im Lesen Modus.
Hast Du noch eine Idee?
Gruss, Sven
-
... aus der designer-hilfe:
editMode
Boolean. Optional. Specify True to open the document in Edit mode. Specify False to open the document in Read mode or put the document in the given Edit mode. If you omit this parameter, the document is opened in Edit mode.
-
... es müßte also
Call uiws.EditDocument(True , doc)
... heißen
ata
-
... genau ;D
-
Hi,
bin gerade dabei dies im Debugger zu betrachten.
Das Script ansich ist korrekt. Nur rafft Notes nicht, das ich ein anderes Dokument, aus einer anderen Ansicht öffnen will.
Laut Designer Hilfe:
Opens the current or a specified document in a mode you specify. The current document may be either of the following:
The document that's currently open.
The document that's currently selected in a view or folder.
und das ist auch was er tut, das in der Inbox markierte Dokument zu öffnen und nicht das was ich ihm in der Routine als doc übergebe.
Dieses Verhalten ist mir bisher nicht aufgefallen aber sehr kurios.
Ich habe mehrere Dinge ausprobiert und noch keinen Schiffer wie ich es LN beibringe das zu tun was ich möchte.
Vielleicht hat ja "ata" noch eine Idee.
-
Hmmm...also bei mir funktionierts jetzt :D :D :D :D :D
Hier das Script:
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView("draft")
Set doc = view.getfirstdocument
Call uiws.EditDocument(True , doc)
End Sub
-
Sorry muss noch mal ein letztes mal nerven, würde jetzt gerne bevor das dokument bearbeitet wird einen empfänger vorgeben, habe das so gelöst:
Dim uiws As New NotesUIWorkspace
Dim session2 As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc2 As NotesDocument
Set db = session2.CurrentDatabase
Set view = db.GetView("draft")
Set doc2 = view.getfirstdocument
doc2.sendto="bla"
doc2.SaveMessageOnSend = True
Call doc2.save(True, False)
Call uiws.EditDocument(True , doc2)
...leider funktionierts nicht, d.h. mein Empfänger "bla" taucht leider nicht
im dokument auf...ich nehme mal an, dass ich das dokument vorher irgendwie in einen bearbeitungsmode bringen muss, kann das sein?
Gruss, Sven
-
Hi,
ja Du hast bei Deinen Posting weiter Oben zweimal EditDocument drin.
-
??? ich versteh nur bahnhof ??? ??? ???
-
Hi,
man gehe auf Seite 1 und schaue sich Dein Posting an:
Hi,
ich starte das Script in einer Maildatenbank von einem Button aus.
Es sieht jetzt so aus:
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView("draft")
Set doc = view.getfirstdocument
If Not doc Is Nothing Then
Call uiws.EditDocument(doc)
End If
----- Call uiws.EditDocument(doc)
End Sub
Leider öffnet er jetzt einfach nur das Dokument auf dem der Cursor gerade steht, und nichtmal im Bearbeiten Modus sondern im Lesen Modus.
Hast Du noch eine Idee?
Gruss, Sven
-
ja, aber das ist doch gar nicht mehr das aktuelle script, das script sieht doch jetzt so aus:
Dim uiws As New NotesUIWorkspace
Dim session2 As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc2 As NotesDocument
Set db = session2.CurrentDatabase
Set view = db.GetView("draft")
Set doc2 = view.getfirstdocument
doc2.sendto="bla"
Call doc2.save(True, False)
Call uiws.EditDocument(True , doc2)
-
... hast du es schon mit
uiws.CurrentDocument.Autoreload = True probiert?
ata
-
ja, hat nichts gebracht, ich bekomme die änderung einfach nich
in das dokument rein :o
-
bzw. ich bekomme das
uiws.CurrentDocument.Autoreload = True
nicht vernünftig ist mein script:
Dim uiws As New NotesUIWorkspace
Dim session2 As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc2 As NotesDocument
Set db = session2.CurrentDatabase
Set view = db.GetView("draft")
Set doc2 = view.getfirstdocument
doc2.sendto="bla"
Call doc2.save(True, False)
Call uiws.EditDocument(True , doc2)
..rein...kommt immer objekt variable not set...
lieg es vielleicht daran, dass ich mit nem normalen
NotesDocument und nicht mit nem notesUIDocument arbeite???
-
... Object variable not set bezieht sich auf uiws oder dein doc2 - was sagt der Debugger?
ata
-
Hallo ata,
mit dem Debugger komme ich irgendwie nicht klar/weiter...
Wenn ich das Script:
Dim uiws As New NotesUIWorkspace
Dim session2 As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc2 As NotesDocument
Set db = session2.CurrentDatabase
Set view = db.GetView("draft")
Set doc2 = view.getfirstdocument
doc2.sendto="bla"
Call doc2.save(True, False)
uiws.CurrentDocument.Autoreload = True
Call uiws.EditDocument(True , doc2)
benutze kommt OBEJCT VARIABLE NOT SET
Wenn ich das selbe Script benutze nur das "uiws.CurrentDocument.Autoreload = True " rausnehme gibt es keine Fehlermeldung, aber mein "bla" steht nicht im
sendto feld drin...
Hast Du noch einen Tip?
Gruss, Sven
-
Hi,
beziehst Du Dich auf den "Entwürfe" Ordner der Maildatenbank oder hast Du Dir das was eigenens gestrickt, Ansicht/Ordner "draft".
Wenn Du Dich auf den "Entwürfe" Ordner der Maildatenbank beziehst, der heißt "($Drafts)". Das Script arbeitet ohne zu murren, wenn Du DIch auf diesen ordner beziehst.
-
Hi,
ich beziehe mich auf einen angelegten Ordner mit dem Namen draft.
Das klappt ja auch soweit alles prima, er nimmt sich ja das dokument aus dem ordner raus, aber
doc2.sendto="bla"
wird nicht beachtet, das feld behält den wert den es vorher hatte, anstatt den wert "bla" anzunehmen.
daraufhin hat ata mir den tip mit dem
uiws.CurrentDocument.Autoreload = True
gegeben, das problem ist nur, dass ich gar nicht testen kann ob es dann damit
geht, sondern sobald ich dieses
uiws.CurrentDocument.Autoreload = True
ins script einbaue kommt halt immer die fehlermeldung
OBEJCT VARIABLE NOT SET
Sorry wenn das alles so kompliziert klingt, ist es aber eigentlich gar nicht, ich denke das kann sich nur um eine kleinigkeit handeln die noch fehlt, damit das
doc2.sendto="bla"
auch gespeichert wird und angenommen wird wenn ich
Call uiws.EditDocument(True , doc2)
mache...
Gruss, Sven
-
Hi,
versuchs mal mit dem hier:
Dim uiws As New NotesUIWorkspace
Dim session2 As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc2 As NotesDocument
Set db = session2.CurrentDatabase
Set view = db.GetView("draft")
Set doc2 = view.getfirstdocument
doc2.EnterSendTo="bla"
Call uiws.EditDocument(True , doc2)
statt doc2.sentto verwende doc2.EnterSendTo, den autoreload lass weg der wird nicht benötigt.
-
:D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D
TAUSEND DANK!!!
Auch an ata usw. ihr habt mir (mal wieder) SUPER GEHOLFEN!!!
VIELEN LIEBEN DANK!!
Gruss, Sven