Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: OlliS. am 20.06.12 - 17:00:52
-
Hallo zusammen,
ich habe eine Maske die für Zeitkorrekuren genutzt wird.
Unten im Dokument ist ein Button eingebaut der fragt ob man das Dokument wirklich abschicken will.
Bei bestätigung mit ja führt dieser folgenden Code aus:
@PostedCommand([ToolsRunMacro];"Speichernkorrekturbogen");
@Command([FileSave]);@Command([FileCloseWindow])
Das Makro bzw der Agent ist wie folgt geschrieben:
Option Public
Option Declare
Sub Initialize
Dim s As New NotesSession
Dim doc As NotesDocument
Set doc = s.Documentcontext
Call doc.Replaceitemvalue("wf_steuerung", 2)
Call doc.Replaceitemvalue("Antragsart", "Korrekturbogen")
Call doc.Replaceitemvalue("Status_Antrag","Antrag versandt")
Call doc.Replaceitemvalue("export", 1)
Call doc.Save(True,False,False)
End Sub
Problem besteht seit neustem das nachdem der Antrag bestätigt wird öffnet Notes nochmal die Standard Abfrage ob das Dokument gespeichert werden soll. Diese Frage taucht jedoch nur auf sobald ein Feld geändert wurde. Der ScriptAgent sollte das Dokument ja normalerweise speichern oder nicht?
Wenn ich dort mit ja bestätige finde ich das Dokument in einer Ansicht in der die Variable wf_steuerung den Wert 0 besitzt
wenn ich auf abbrechen oder nein drücke wird das Dokument so abgelegt wie ich es wollte.
Der Fehler tritt komischerweise erst seit heute morgen auf
Hat jemand eine Idee?
Bzw kennt jemand eventuell eine andere Variante wie man die Standardspeicherabfrage bei Lotus Notes unterdrückt
-
Als Ergänzung:
Bei einem anderen Formular verwende ich einen gleich geschriebenen Agenten, jedoch stellt dieser nicht die Notes standard Frage zum speichern sondern speichert das Dokument per Agent.
-
fallen mir erstmal spontan ein berechnete Felder, andere Maske hat Feld SaveOptions
-
Ich finde das viel zu umständlich.
Du hast einen Button, der startet in Formelsprache einen Scriptagenten, der ein paar Felder verändert und das Dokument speichert. Dann speicherst Du es noch einmal in Formelsprache und schließt es. Warum machst Du nicht alles per Script in dem Button?
Sub Click
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim doc As NotesDocument
Set doc = uidoc.Document
If Msgbox ("Echt jetzt?", 32 + 4, "Schon Schluss?") = 7 Then 'könnte auch <> 7 sein, weiß ich aus dem Kopf grad nicht
Exit Sub
End If
Call doc.Replaceitemvalue("wf_steuerung", 2)
Call doc.Replaceitemvalue("Antragsart", "Korrekturbogen")
Call doc.Replaceitemvalue("Status_Antrag","Antrag versandt")
Call doc.Replaceitemvalue("export", 1)
Call doc.Save(True,False,False)
doc.SaveOptions = 0
Call uidoc.Close
End Sub
-
Sind ja nicht nur ein paar Felder sondern da stecken noch einige Berechnungen in dem Button drin die ich hier nicht gepostet hatte.
Habe den Fehler aber mitlerweile gefunden
Bin hingegangen und hab den Befehl @Command([FileSave]); durch FIELD SaveOptions := 1;
ausgetauscht und jetzt fragt er nicht mehr bei bestätigung mit ja zusätzlich ob man das Dokument speichern möchte
-
Die 1 im SaveOptions wird dadurch im Dokument gespeichert und das bedeutet, wenn ich mich nicht irre, dass das Dokument beim Schließen aus dem Bearbeitungsmodus automatisch gespeichert wird. Wenn also jemand später das Dokument öffnet, versehentlich irgendetwas verändert, wird er beim Verlassen nicht mehr gefragt, ob er die Änderung speichern will, sondern die (falsche) Änderung wird automatisch gespeichert. Willst Du das?
Du solltest das Feld auf jeden Fall im Postopen leeren.
-
Ist es nicht so, dass in SaveOptions - so denn vorhanden - ein String "0" oder "1" stehen sollte? Laut obiger Formel wird eine Zahl geschrieben, die der Client mglw. als <> "1" intepretiert und deshalb nicht fragt, aber auch nicht speichert ?!?