Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: SlyFox am 22.03.11 - 13:55:06

Titel: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: SlyFox am 22.03.11 - 13:55:06
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
Code
@If(@Command([FileSave]);
  @Command([FileCloseWindow]);
  "")

2. Diverse Input Validations, wie z. B.
Code
@If(@ThisValue = "";
  @Failure("Feld darf nicht leer sein");
  @Success
)

3. In Querysave
Code
@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
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: Klafu am 22.03.11 - 13:59:34
warum machst du die Feldabfrage nicht im Querysave ?
Code
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
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: ascabg am 22.03.11 - 14:01:25
Hallo,

Auch noch moeglich waere ein verstecktes Feld.
Wenn Dokument erstellt wird Feld=1
Nach dem Senden der Mail Feld=0


Andreas
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: SlyFox am 22.03.11 - 14:03:07
Hallo Chris,

und wie rufe ich im Script @MailSend auf?

Christoph
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: SlyFox am 22.03.11 - 14:03:46
Hallo Andreas,

dann müsste ich das Dokument noch einmal speichern, richtig?

Christoph
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: Klafu am 22.03.11 - 14:26:54
Hallo Chris,

und wie rufe ich im Script @MailSend auf?

Christoph

Im Scirpt wirds mit @ etwas kompliziert.
Ich glaub das einfachste wäre es, den Speicher Button anzupassen. und da mit @isNewDoc dann das @MailSend oder einen Mail Agent aufzurufen.
Mit der Feld-Wert prüfung hab ichs eben gemacht wie beschrieben. klappt super.

Chris
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: ascabg am 22.03.11 - 14:29:00
Hallo Andreas,

dann müsste ich das Dokument noch einmal speichern, richtig?

Christoph
Warum?

Wenn Dein Code weiterhin im QuerySave laeuft, dann musst Du doch nur nach dem Senden der Mail das Feld (den Wert im Feld) entsprechend umschreiben.


Andreas
Titel: Re: Beim Speichern eines neuen Dokuments E-Mail versenden
Beitrag von: Axel am 22.03.11 - 14:35:25
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:

Code
...                
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