Hallo,
ich habe eine Anwendung erstellt, in der ein Formular ausgefüllt werden muss. Beim erstmaligen Speichern muss eine vorher definierte Empfängergruppe eine E-Mail über das Neuanlegen erhalten. Vor dem Speichern sind noch diverse Plausibilitäten zu prüfen.
Was habe ich bisher gemacht?
1. SHARED Action Button angelegt mit
@If(@Command([FileSave]);
@Command([FileCloseWindow]);
"")
2. Diverse Input Validations, wie z. B.
@If(@ThisValue = "";
@Failure("Feld darf nicht leer sein");
@Success
)
3. In Querysave
@If(@IsNewDoc;
@MailSend("Empfaenger-Gruppe";"";"";"Betreff";"Text und Link ==> ";"";[IncludeDoclink]);
""
)
Mein Problem ist nun, dass Querysave offensichtlich vor der Validierung der Felder ausgeführt wird. In Postsave kann ich das auch nicht rein schreiben, da @IsNewDoc dann ja False liefert, richtig? An der Shared Action möchte ich auch nicht fummeln.
Gibt es eine andere "Ecke", an der ich die E-Mail versenden kann?
Vielen Dank für eure Hilfe
Christoph
warum machst du die Feldabfrage nicht im Querysave ?
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If ( source.FieldGetText( "txtGesellschaft" ) = "" ) Then
Messagebox( "Geben Sie bitte eine Gesellschaft an." )
Call source.GotoField( "txtGesellschaft" )
continue = False
Exit Sub
End If
End Sub
und setzt dann vor das Close das Script/den Agenten für die Mail ?
Chris
Hallo Chris,
und wie rufe ich im Script @MailSend auf?
Christoph
Da gibt's mehrere Möglichkeiten.
Die Methode Send aus der Klasse NotesDocument oder NotesUIDocument. Damit wird aber das eigentliche Dokument versendet.
Wenn ich das richtig verstehe, soll nur eine Benachrichtigung gesendet werden. Dann wäre das folgende Codefragment ein Weg:
...
Set maildb = New NotesDatabase("","")
maildb.OpenMail
If Not maildb.IsOpen Then
MsgBox "Mail-DB kann nicht geöffnet werden."
End If 'If Not maildb.IsOpen Then
Set maildoc = New NotesDocument(maildb)
Set profile = maildb.GetProfileDocument("CalendarProfile")
maildoc.Form = "Memo"
maildoc.Logo = profile.DefaultLogo(0)
maildoc.Principal = profile.Owner(0)
maildoc.Subject = "Das ist der Mailbetreff"
maildoc.SendTo = "Adresse des Empfängers"
'Anlegen des Richtextfeldes
Set rtitem = maildoc.CreateRichTextItem("Body" )
Call rtitem.AppendText("Das ist eine Nachricht")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Das ist die zweite Zeile dieser Nachricht")
Call maildoc.Send
...
Oder du kannst auch die Evaluate-Anweisung verwenden und damit wieder @MailSend verwenden.
Axel