Domino 9 und frühere Versionen > ND6: Entwicklung
SaveOptions = 0 funktioniert nicht
Ork:
Hallo zusammen,
ich habe leider ein ganz schön nerviges Problem, dass mich nun schon den ganzen Tag kostet. Ich habe schon sehr viele Forenbeiträge studiert und einiges versucht, doch leider bleibt folgendes Problem bestehen:
Ich schreibe gerade meine Praxisarbeit und wollte eine automatische E-Mail-Weiterleitung mit Word-Anhang und Protokolldatei abhängig von der Firmenhierchie der jeweiligen Notes-Nutzer über einen Aktionsbutton erstellen.
Nachdem der Button gedrückt wird, soll jedoch geprüft werden, ob der E-Mail-Kopf (als Empfänger, Betreff,usw.) und der Body leer sind. Wenn nicht sollen sie geleert werden bzw. es wäre schön, wenn der Body zwischengespeichert werden könnte, um ihn später nach dem Anhängen der Word-Dateien wieder einzufügen. Leider wird dabei ständig gefragt, ob ich speichern möchte - dieses schon häufig diskutierte Thema: Dialogbox. Obwohl ich schon ein SaveOptions eingbaut habe, kommt dieser Fehler. Ich habe auch schon in der Maske Memo solch ein Feld gesetzt, wie es hier in einigen Forenbeiträgen schon geschildert wurde, leider ohne Erfolg.
Domino Server: 5.0.13a LN-Client: 6.5
Hier ein Auszug aus dem Script:
Sub Click(Source As Button)
' DEKLARATION
' LN - Vorgaben
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim Newuidoc As NotesUIDocument
Dim doc As NotesDocument
Dim attachment As NotesRichTextItem ' Anhang
Dim targetFile As String
Dim textOfBody As String
' INITIALISIERUNG
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set attachment = New NotesRichTextItem(doc, "attachment")
targetFile = "C:\Lotus\tmp\Word_08.01.2008.doc"
'____________________________________________________________________________
'FEHLERVORBEUGUNG
' löscht alle Einträge im E-Mail-Kopf
uidoc.FieldClear("EnterSendTo")
uidoc.FieldClear("EnterCopyTo")
uidoc.FieldClear("EnterBlindCopyTo")
uidoc.FieldClear("FaxToList")
uidoc.FieldClear("subject")
' Liest den Text aus dem Body aus
textOfBody = uidoc.FieldGetText("Body")
If Len(textOfBody) > 0 Then
Msgbox "Fehler - Abbruch!"
uidoc.FieldClear("Body")
doc.SaveOptions = "0" 'speichern wird nicht abgefragt
Call uidoc.Close(True) 'Memo wird geschlossen
Exit Sub
End If
'_______________________________________________________________
' Fügt die Dateien an
' Gehe zu Feld attachment
Call uidoc.GotoField("attachment")
' Hängt die Datei an, wenn attachment vom Typ Richtext ist und lässt sie anzeigen
If attachment.type = 1 Then
Call attachment.EmbedObject( EMBED_attachment, "",targetFile)
Call attachment.Update
doc.SaveOptions = "0" 'speichern wird nicht abgefragt
Call uidoc.Close(True) 'wird geschlossen
Set newUiDoc = workspace.EditDocument(True, doc)
Delete uidoc 'Referenz auf das alte Frontend-Dokument löschen
Set Doc = newUiDoc.Document
Call doc.RemoveItem("SaveOptions")
End If
End Sub
Zur Zeit ist es allerdings so getrickt, dass ein Abbruch erfolgt, wenn der Body beschrieben ist. Dennoch erfolgt die Speichermeldung, wenn das das Memo geschlossen werden soll.
Wenn man nichts im E-Mailkopf, noch in Body stehen hat, dann kommt nach dem Datei-Anhängen auch keine Dialogbox zum Speichern. Da klappt das dann mit den SaveOptions, nur nicht oben in der Fehlervorbeugung, nachdem ich Werte in die E-Mail eingetragen habe!?
Es wäre nett, wenn sich jemand meiner annehmen könnte, bin nämlich gerade am verzweifeln.
Danke schon mal im Voraus!
MfG Ork
ata:
... so auf die schnelle - ich würde zunächst mit der Abbruch-Bedingung Text-im-BodyFeld beginnen, und dann erst weitere Felder löschen, so daß im uidoc keine weiteren Bearbeitungen stattgefunden haben...
Toni
Ork:
Hallo Toni,
erstmal vielen Dank für die schnelle Antwort.
Ich habe jetzt folgenden Teil ausdokumentiert:
uidoc.FieldClear("EnterSendTo")
uidoc.FieldClear("EnterCopyTo")
uidoc.FieldClear("EnterBlindCopyTo")
uidoc.FieldClear("FaxToList")
uidoc.FieldClear("subject")
Aber leider ohne Erfolg.
Ich habe gerade noch gedacht, ob es an der Schablone liegen kann, die ich bearbeite. Es ist die mail50.ntf.
Kann das ein Problem sein??
WildVirus:
Das kommt davon, wenn UI-Klassen und Backendklassen genutzt werden.
Du setzt per doc.saveoptions etwas ins Backenddocument und erwartest dann, dass das angezeigte UIdoc das mitbekommt. Tut es aber nicht.
Merke: Vermeide die Mischung, solange es nur irgendwie geht.
Es gibt aber auch ein uidoc.fieldsettext bzw. ein uidoc.refresh/.reload
ata:
... die Mischung der Frontend und Backend-Klassen ist im zweiten Teil auf jeden Fall zu vermeiden, ansonsten musst du das uidoc über EditDocument neu instanzieren...
Es gibt aber auch noch andere Sachen, die ich anders lösen würde - die Schablone ist es nicht...
Toni
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln