Autor Thema: Formel für Mail mit Vorlage  (Gelesen 7153 mal)

Offline Deti

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Formel für Mail mit Vorlage
« am: 12.11.02 - 17:05:56 »
Hallo !

Ich bin "Neuling" in Lotus Notes und bitte deshalb um Verständnis für das für manchen Freak bestimmt einfache Problem:   :)

Ich möchte gerne die Erstellung eines neues Mails mit einer bestimmten Vorlage per Formel steuern. Meine ersten Versuche sind allerdings eher kläglich gescheitert...  ;)

Die Formel:
@Command([Compose]; ""; "Memo")

erzeugt mir zwar ein neues Mail, aber eben nur mit der Standardvorlage. Gibt es auch einen Befehl, bei dem man eine beliebige Vorlage angeben kann ?

Vielen Dank für Eure Hilfe !

Gruß
Deti

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re:Formel für Mail mit Vorlage
« Antwort #1 am: 12.11.02 - 17:30:00 »
Wie wärs wenn Du Dir mal das Script in der Ansicht "Vorlage" Neue Nachricht - Vorlage ansiehst  :P

Die Funktion gibt es schon

Sub Click(Source As Button)
   Dim session As New notessession
   Dim uiws As New notesuiworkspace
   Dim collection As notesdocumentcollection
   Dim noteUIEditDocument As notesuidocument
   Dim database As NotesDatabase
   
   Set noteCursorDoc = session.currentdatabase.createdocument
   Set database = session.currentdatabase
   
   Set collection = uiws.Picklistcollection(PICKLIST_CUSTOM, False, database.server, database.filepath, "Vorlage", "Vorlage wählen", "Wählen Sie bitte eine Vorlage für das neue Memo.")
   Set noteCursorDoc = collection.getfirstdocument
   If Not noteCursorDoc Is Nothing Then
      Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
   End If
End Sub
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Deti

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Formel für Mail mit Vorlage
« Antwort #2 am: 13.11.02 - 15:30:09 »
Hallo Christopher,

vielen Dank für Deine schnelle Antwort.
Das Script hatte ich schon entdeckt, allerdings hat es mich nicht so recht weitergebracht. Ich möchte ein neues Smarticon erzeugen, dass ein neues Memo mit einer bestimmten Vorlage erstellt. Den Smarticons kann man aber offensichtlich nur Formeln mit der Formelsprache zuordnen. Das Lotusscript dort zu verwenden ist mir jedenfalls nicht gelungen.

Sorry, wenn ich mich so blöd anstelle   ;D
Gibt es einen Weg, solch ein Smarticon zu erstellen, bzw. das von Dir vorgeschlagene Script zuzuordnen ?

Gruß
Deti

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re:Formel für Mail mit Vorlage
« Antwort #3 am: 13.11.02 - 21:45:43 »
Du könntest mit einer Formel einen Agenten starten aber ob das funktioniert weiß ich auch nicht so genau
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #4 am: 18.11.02 - 18:40:48 »
Ev. hilft der Code unter 'New Memo - Using Stationary'? Oder um welche Art Vorlagen geht es?
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Deti

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Formel für Mail mit Vorlage
« Antwort #5 am: 22.11.02 - 17:04:03 »
Ev. hilft der Code unter 'New Memo - Using Stationary'? Oder um welche Art Vorlagen geht es?


Hallo Wolfgang,

ich glaube, das ist der Code, den auch Christopher schon genannt hat:

Sub Click(Source As Button)
   Dim session As New notessession
   Dim uiws As New notesuiworkspace
   Dim collection As notesdocumentcollection
   Dim noteUIEditDocument As notesuidocument
   Dim database As NotesDatabase
   
   Set noteCursorDoc = session.currentdatabase.createdocument
   Set database = session.currentdatabase
   
   Set collection = uiws.Picklistcollection(PICKLIST_CUSTOM, False, database.server, database.filepath, "Vorlage", "Vorlage wählen", "Wählen Sie bitte eine Vorlage für das neue Memo.")
   Set noteCursorDoc = collection.getfirstdocument
   If Not noteCursorDoc Is Nothing Then
      Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
   End If
End Sub


Kannst Du mir sagen, wie ich diesen Code abändern muss, um z.B. eine Vorlage mit dem Namen "test" zu öffnen. Im obigen Code wird ja lediglich das Fenster für die Auswahl der Mailvorlage geöffnet. Ich möchte aber eine feste Vorlage direkt zur Erzeugung eines neuen Memos heranziehen.

Ich habe den Teil ab "Set collection..." weggelassen und stattdessen eingegeben:

noteUIEditDocument = "test"

Das funktioniert aber nicht. Ich nehme an, die Syntax stimmt nicht oder ich muss einen Pfad o.ä. angeben.

Hast Du (oder Christopher, falls Du noch mitliest) einen Tipp, wie es gehen könnte ?

Gruß
Deti

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Formel für Mail mit Vorlage
« Antwort #6 am: 22.11.02 - 19:51:50 »
um eine hartverdrahtete Vorlage zu nutzen, könnte man folgendes tun, in einem Agent natürlich, der über ein Smarticon per @command([toolsrunmacro];"(AgentXYZ)") aufgerufen wird.

für eine Vorlage, die stets in der gleichen DB liegt, in der auch der User arbeitet:

Dim Session as New NotesSession
Dim DB As NotesDatabase
Set DB = Session.currentdatabase
Dim VorlageDoc  As NotesDocument
Dim ProfileDocument As NotesDocument
Dim var_unid as String
'in einem Profildoc ist die DocUNID des 1 Vorlagedocs gespeichert, diese benötigt man, um das Vorlagedoc im Script zu fokussieren
Set ProfileDocument = DB.GetProfileDocument( "PROFIL_XYZ")
var_unid = Feld_Mit_DocUNID_Der_Vorlage(0)
'und hier bekomme ich das Vorlagendoc
Set VorlageDoc = DB.GetDocumentByUNID( var_unid )
'und hier kopiert man das Vorlagendoc in ein neues Doc
Call VorlageDoc.CopyToDatabase( DB )
'der letzte Abschnitt ruft das neue Doc im Editmode in das Frontend des Users auf
Dim uiws As New notesuiworkspace
Dim noteUIEditDocument As notesuidocument
Set noteUIEditDocument =  uiws.Editdocument(False, VorlageDoc)


Für eine Vorlage, die stets in einer zentralen DB liegt, und der User die Vorlage in seiner persönlichen DB zum Erstellen von Docs verwendet:

Dim Session as New NotesSession
Dim ZielDB as NotesDatabase
Set ZielDB = Session.currentdatabase
Dim VorlageDB As NotesDatabase
Set VorlageDB = New NotesDatabase( "Server_123", "Zentral.nsf" )
Dim VorlageDoc  As NotesDocument
Dim ProfileDocument As NotesDocument
Dim var_unid as String

Set ProfileDocument = VorlageDB.GetProfileDocument( "PROFIL_XYZ")
var_unid = Feld_Mit_DocUNID_Der_Vorlage(0)
Set VorlageDoc = VorlageDB.GetDocumentByUNID( var_unid )
Call VorlageDoc.CopyToDatabase( ZielDB )

Dim uiws As New notesuiworkspace
Dim noteUIEditDocument As notesuidocument
Set noteUIEditDocument =  uiws.Editdocument(False, VorlageDoc)


Müßte so gehen, habs nicht ausgetestet.


Warum ich die DocUNID genommen habe, ergibt sich aus dieser Überlegung: http://nsftools.com/tips/NotesTips.htm#noteids
« Letzte Änderung: 22.11.02 - 19:52:15 von Rob Green »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #7 am: 23.11.02 - 05:02:58 »
Zunächst mal ist das Grundprinzip, basierend auf einer Aktion wie beim NewMemo-Using stationery:

Set noteCursorDoc = collection.getfirstdocument
   If Not noteCursorDoc Is Nothing Then

...also das (gewählte) Vorlagedokument im Backend identifizieren...

Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)

... Vorlage zum Bearbeiten im Editiermodus öffnen.

Deine Idee war also grundsätzlich richtig, wir müssen im letzten Ausdruck nur ein anderes Vorlage-Backend-Dokument übergeben.
Es gibt natürlich mehrere Möglichkeiten.
Die einfachste ist folgende: Man erstellt eine versteckte Kopie der Ansicht 'Vorlage' zB '($Vorlagenauswahl)' und nimmt die Spaltenformel aus der Spalte 'Vorlage' als erste sortierte Spalte.
Dann kannst Du mit:

Dim vw as notesview
Dim strWantedTemplate={Test}

Set vw=database.GetView({($Vorlagenauswahl)})
Set noteCursorDoc=vw.GetDocumentByKey(strWantedTemplate$)
   If Not noteCursorDoc Is Nothing Then
    Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
   Else
    MsgBox {Vorlage "Test" nicht gefunden!}
   End If
End Sub

... das Dokument über den Key direkt aus der Ansicht finden.


Wenn Du keine neue Vorlagenansicht erstellen willst, dann fällt der Zugriff über den Key weg. Man kann zwar den Key über mehrere Spalten bilden, aber die müssen dazu alle sortiert sein und das ist in dieser Ansicht leider nicht der Fall. Außerdem stören Name und Erstelldatum in der Ansicht, die müßten ja in den Key mit rein.

Alternativen:
- GetDocumentByUNID
Dazu müßte man Wege finden, die UNID der gerade aktuellen Vorlage "Test" rauszufischen, beißt sich also in den Schwanz (räusper, hat niemand was anzügliches zu sagen? gut, dann weiter.)

- die Ansicht "Vorlage" mit GetNextDocument durchlaufen, bis ein Dokument gefunden wird, das im MailStationeryName oder im Subject "Test" stehen hat. Also etwa so:

Dim vw as notesview
Dim strWantedTemplate={Test}

Set vw=database.GetView({Vorlage})
Set noteCursorDoc=vw.GetFirstDocument
Do While Not noteCursorDoc Is Nothing
 'Kriterien für richtige Vorlage
 If noteCursorDoc.Subject(0)=strWantedTemplate$ Or noteCursorDoc.MailStationeryName(0)=strWantedTemplate$ Then
 '/Kriterien für richtige Vorlage
 Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
 Exit Sub
Else
 Set noteCursorDoc=vw.GetNextDocument(noteCursorDoc)
Loop
MsgBox {Vorlage "} & strWantedTemplate$ & {" nicht gefunden!}
End Sub

Das dauert zwar etwas länger, aber in der Regel hat man ja nicht tausende von Vorlagen abzuklappern.

HTH
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Formel für Mail mit Vorlage
« Antwort #8 am: 23.11.02 - 12:38:05 »
@wflamme, man sollte noch einwerfen, daß das Ganze auf den Libraries der Mailschablone basiert und wenn die nicht da sind, geht nix. Ist häufiger der Fall, da viele Developer ihre eigene Sache aufziehen, da die Struktur der Notes Mail Libraries zu komplex zum schnellen Einlesen ist.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #9 am: 23.11.02 - 21:15:16 »
@Rob
Verstehe ich nicht. Kannst Du den Einwand bitte ein bischen unvorsichtiger formulieren? :)
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Formel für Mail mit Vorlage
« Antwort #10 am: 23.11.02 - 21:51:28 »
na ja, das was in dem Button Script passiert, ist ja nur die Vorlage in den Editmode aufzurufen...doch dann geht ja erst das eigentliche Script los, das dann aus einer Vorlage eine Kopie macht. Und das wiederum befindet mE in den Script Libraries des Mailfiles.

Nur, normalerweise kopieren Developer nicht das Mailfile, um eine eigene Vorlagefunktion zu stricken (wenn es sich nicht um ein Mailfile selbst handelt), sondern verwenden was eigenes, schlankeres.

So klarer irgendwie?
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #11 am: 24.11.02 - 07:41:21 »
Ahso...
ich bin jetzt (auch aufgrund Detis Beschreibung) davon ausgegangen, daß er das in die MailDB integrieren will und nicht in eine separate Anwendung.

@deti, stimmt das?
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Deti

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Formel für Mail mit Vorlage
« Antwort #12 am: 25.11.02 - 18:48:56 »
Hallo Wolfgang, Hallo Rob

ich bin jetzt (auch aufgrund Detis Beschreibung) davon ausgegangen, daß er das in die MailDB integrieren will und nicht in eine separate Anwendung.
@deti, stimmt das?

ääähhh.....  :-)
nee, das stimmt schon, es geht nicht um eine separate Anwendung.
Ich habe übrigens mal Dein Script probiert, aber es funktioniert nicht so recht. Bei folgender Zeile gibt's 'ne Fehlermeldung:

Dim strWantedTemplate={Test}

Das wird nicht akzeptiert. Weißt du, was daran falsch sein könnte ?

Auch das Script von Rob greene habe ich getestet, aber auch hier gibt es Fehlermeldungen. Und zwar wird die Zeile

var_unid = Feld_Mit_DocUNID_Der_Vorlage(0)

nicht akzeptiert. Ich nehme an, für "Feld_Mit_DocUNID_Der_Vorlage(0)" soll ich etwas anderes eingeben, aber was ?   ::)

und in der Zeile

Set ProfileDocument = DB.GetProfileDocument( "PROFIL_XYZ")

weiß ich auch nicht, was ich für "PROFIL_XYZ" eingeben muss. Kommt dort der Name der gewünschten Vorlage, in meinem Fall also "test" hinein ?

Sorry. dass ich mich so blöd anstelle. Eigentlich bin ich recht fit im Programmieren (auch wenn's hier nicht so aussieht  ;D , d.h., in VBA, Perl oder PHP hätte ich wohl weniger Probleme. Ich wundere mich selbst ein bißchen, dass ich mich hier so schwer tue...)

Wäre schön, wenn Ihr noch nicht aufgeben würdet  und ich es mit eurer Hilfe vielleicht doch noch schaffe. Gibt es übrigens gute deutsche Literatur zum Thema Lotusscript u./o. Formelsprache ?

Schöne Grüße
Deti

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #13 am: 25.11.02 - 19:19:06 »
Dim strWantedTemplate={Test}

Das wird nicht akzeptiert. Weißt du, was daran falsch sein könnte ?



Ja. Alles. Weil ich so himmelschreiend blöd bin :-X

Dim strWantedTemplate As String
strWantedTemplate$={Test}

(Ich wollte es zuerst als Konstante deklarieren...)
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline Deti

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Formel für Mail mit Vorlage
« Antwort #14 am: 26.11.02 - 16:59:53 »
Hallo Wolfgang, Hallo Rob,

ich hab's geschafft !   :D

Mit folgendem Script wird genau das gemacht, was ich wollte:
************************************
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim strWantedTemplate As String
   Dim uiws As New notesuiworkspace
   Dim noteUIEditDocument As notesuidocument
   strWantedTemplate$={Standard}
   Set db = session.CurrentDatabase
   Set view = db.GetView({Vorlage})
   Set noteCursorDoc=view.GetFirstDocument
   Do While Not noteCursorDoc Is Nothing
'Kriterien für richtige Vorlage
if noteCursorDoc.Subject(0)=strWantedTemplate$ Or noteCursorDoc.MailStationeryName(0)=strWantedTemplate$ Then
'Kriterien für richtige Vorlage
Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
Exit Sub
Else
Set noteCursorDoc=view.GetNextDocument(noteCursorDoc)
End If      
Loop
Msgbox {Vorlage "} & strWantedTemplate$ & {" nicht gefunden!}
**********************************

Das Script habe ich dann mit dem Befehl, den Rob weiter oben genannt hatte, einem Smarticon zugeordnet.

Vielen Dank nochmal für Eure Hilfe, wirklich gut, dieses Forum  :)
Was ich vom LotusNotes leider nicht immer sagen kann....
Bestimmt werde ich nicht zum letzten Mal hier um Hilfe gebettelt haben  ;)

Schöne Grüße
Deti


Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Formel für Mail mit Vorlage
« Antwort #15 am: 26.11.02 - 21:12:29 »
Hallo Wolfgang, Hallo Rob,

ich hab's geschafft !   :D
Mit folgendem Script wird genau das gemacht, was ich wollte:
[...]
Vielen Dank nochmal für Eure Hilfe, wirklich gut, dieses Forum  :)
Was ich vom LotusNotes leider nicht immer sagen kann....

Das Script macht GENAU was Du willst, aber Du findest Notes nicht großartig?
DAS verstehe, wer will... :D
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz