Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: sinus am 03.04.03 - 19:23:30

Titel: Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag 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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 03.04.03 - 20:18:33
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)
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 03.04.03 - 20:44:20
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 03.04.03 - 21:10:09
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.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 03.04.03 - 22:23:05
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 07.04.03 - 14:37:18
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 09.04.03 - 19:26:56
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 09.04.03 - 20:29:10
Hi,

ich sehe kein

dim ws as new notesuiworkspace
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 09.04.03 - 20:38:50
das habe ich aber weiter oben schon drin, daran kann es nicht liegen...
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 09.04.03 - 21:07:38
Hi,

stell mal das ganze Script rein
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 09.04.03 - 21:39:19
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

Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 10.04.03 - 21:50:31
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?

   
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 11.04.03 - 13:16:48
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: klaussal am 11.04.03 - 13:20:47
... 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.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: ata am 11.04.03 - 13:55:42
... es müßte also

Call uiws.EditDocument(True , doc)

... heißen

ata
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: klaussal am 11.04.03 - 14:12:10
... genau  ;D
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 11.04.03 - 14:13:47
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.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 11.04.03 - 14:20:45
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 11.04.03 - 14:42:24
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   
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 11.04.03 - 14:45:53
Hi,

ja Du hast bei Deinen Posting weiter Oben zweimal EditDocument drin.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 11.04.03 - 14:49:51
??? ich versteh nur bahnhof  ??? ??? ???
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 11.04.03 - 14:57:12
Hi,

man gehe auf Seite 1 und schaue sich Dein Posting an:
Zitat
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  
 
 
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 11.04.03 - 15:14:19
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)
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: ata am 11.04.03 - 17:11:03
... hast du es schon mit

uiws.CurrentDocument.Autoreload = True probiert?

ata
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 14.04.03 - 23:20:00
ja, hat nichts gebracht, ich bekomme die änderung einfach nich
in das dokument rein  :o
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 14.04.03 - 23:28:38
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???
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: ata am 15.04.03 - 09:23:20
... Object variable not set bezieht sich auf uiws oder dein doc2 - was sagt der Debugger?

ata
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 17.04.03 - 13:25:47
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
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 17.04.03 - 17:45:37
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.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 18.04.03 - 14:23:23
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



Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: doliman am 18.04.03 - 16:03:54
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.
Titel: Re:Einfache Frage zu Lotus Script: Erstelltes Dokument bearbeiten
Beitrag von: sinus am 19.04.03 - 00:52:14
 :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