Guten Morgen,
ich prüfe im QyueryClose, ob das uiDoc neu ist oder gespeichert wurde.
In der Hilfe steht bei IsNewDoc
"False indicates that the document is not new, and has been saved"
Darum:
'check if doc in EditMode
If uidoc.EditMode Then
'check if doc is new
If uidoc.IsNewDoc Then
If Messagebox ("Dieses Dokument wird nicht gespeichert." & Chr(10) & _
"Wollen sie wirklich schließen?", _
MB_YESNO + MB_ICONQUESTION, "Schließen") = IDNO Then
Continue = False
Exit Sub
End If
Goto exitScript
End If
Aber wenn das Doc schon gespeichert wurde, ist es noch immer IsNewDoc = True.
Muss ich das zwischendurch schließen?
cu
der B@sti
Hi,
Speicherung erfolgt über Button.
On Error Resume Next
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.Save
cu
der B@sti
Ok, stimmt ganz schön unübersichtlich. Versuche mal zu erklären:
Querysave: Abfrage von Pflichtfeldern, die gefüllt werden müssen, bevor das Doc gedruckt oder gespeichert werden kann.
Speicherbutton (siehe oben)
Queryclose: Info an den User, dass er das Doc nicht mehr bearbeiten kann, wenn es erst mal geschlossen ist. Falls ja, Feld $Saved setzen und im Backend speichern. Der Code dazu ...
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
On Error Goto errHandler
Dim doc As NotesDocument
Set doc = Source.Document
'check if doc in EditMode
If source.EditMode Then
'check if doc is new
If source.IsNewDoc Then
If Messagebox ("Dieses Dokument wird nicht gespeichert." & Chr(10) & _
"Wollen sie wirklich schließen?", _
MB_YESNO + MB_ICONQUESTION, "Schließen") = IDNO Then
Continue = False
Exit Sub
End If
Goto exitScript
End If
'check doc save status
If (Not doc.~$Saved(0) = "1") Then
If Messagebox ("Nach dem Schließen kann dieses Dokument nicht mehr bearbeitet werden." & Chr(10) & _
"Wollen sie wirklich schließen?", _
MB_YESNO + MB_ICONQUESTION, "Schließen") = IDNO Then
Continue = False
Exit Sub
End If
'Set the $Saved field
Dim item As NotesItem
Set item = doc.ReplaceItemValue( "$Saved", "1")
Call doc.Save( True, True )
End If
End If
exitScript:
Exit Sub
errHandler:
Msgbox "Es ist ein Fehler aufgetreten." & Chr(10) & Chr(10) _
& "Fehlermeldung: " & Error$ & Chr(10) _
& "Fehlernummer: " & Err & Chr(10) _
& "Codezeile: " & Erl & Chr(10) _
,64,"Error"
Resume exitScript
End Sub
Wenn Doc aber noch nicht gespeichert ist und der User ESC drückt kommt eine Dialogbox, ob er speichern will. Das woltle ich mit SaveOptions verhindern. Klappt ja auch, aber so gut, dass das Doc garnicht gespeichert wird. :(
cu
der B@sti
So, bin jetzt schon etwas weiter. Setze wenn alle Bedingungen erfüllt sind
im Querysave: Call source.FieldSetText( "SaveOptions","1" )
im Postsave: Call source.FieldSetText( "SaveOptions","0" )
Mit dem Speicherbutton funktioniert das sehr gut.
Leider macht mir mein Druckscript (auch Button) noch Probleme: irgendwie wird das Postsave nicht abgearbeitet und das Feld "SaveOptions" steht noch immer auf "1". Aber warum?
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim Doc As NotesDocument
Dim OrigEditMode As Boolean
Set uidoc = workspace.CurrentDocument
OrigEditMode=UiDoc.EditMode
If uidoc.EditMode Then
Call uidoc.refresh
On Error 4411 Goto exitScript
Call uidoc.Save
End If
Set Doc=uidoc.Document
doc.Form="frmPrintSheet1"
Call workspace.EditDocument(False,Doc)
Set uidoc=WorkSpace.CurrentDocument
Call uidoc.Print
Call uidoc.close
exitScript:
Exit Sub
End Sub
Sage schon mal Danke für Eure Geduld und Hilfe.
cu
der B@sti