Domino 9 und frühere Versionen > ND6: Entwicklung

SaveOptions = 0 funktioniert nicht

(1/6) > >>

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