Autor Thema: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde  (Gelesen 4012 mal)

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
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:

Code
'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
« Letzte Änderung: 25.08.05 - 12:28:38 von SKL74 »
Domino, Notes, Sametime

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #1 am: 24.08.05 - 09:18:17 »
Hey B@sti,

wie speichert der Benutzer das Dokument? Über eine Schaltfläche mit Script oder über eine Formel - oder über Bordmittel (strg+s usw.)??

Gruß

Willi
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #2 am: 24.08.05 - 09:24:01 »
Hi,

Speicherung erfolgt über Button.

Code
On Error Resume Next
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Set uidoc = workspace.CurrentDocument
	Call uidoc.Save

cu
der B@sti
Domino, Notes, Sametime

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #3 am: 24.08.05 - 09:40:24 »
Hmmm....

1) Kannst Du sicherstellen, das das Dokument wirklich gespeichert wurde?. Kommentiere doch mal den On Error code raus oder speichere wenn mögl. über Bordmittel. Verhält Sich das isnewdoc immernoch so?

2) Du benutzt im QueryClose die Variable Uidoc anstatt des vordefinierten Source. Hat das einen Grund? Wenn nein, bau doch mal die Formel um. Wie verhält sich das isnewdoc dann?

Gruß

Willi

P.S.: Ist der Save-Button eigentlich dein Posting von gestern (save canceled)?  ::)
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #4 am: 24.08.05 - 09:50:11 »
Also wenn ich das nachvollziehe dann funktioniert das richtig.
Allerdings brauchst du im Queryclose kein eigenes UIDOC. Das Event liefert dir nämlich als Source schon das aktuelle uidoc mit.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #5 am: 24.08.05 - 10:40:24 »
Habe auf source umgestellt und noch ein bißchen getestet.

Kann es sein, dass das Feld SaveOptions ("0", editable) die Änderung von IsNewDoc beeinflußt?

cu
der B@sti
Domino, Notes, Sametime

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #6 am: 24.08.05 - 10:43:18 »
Kann es sein, dass das Feld SaveOptions ("0", editable) die Änderung von IsNewDoc beeinflußt?
Es kann  ;D
Also SaveOptions = "0" verhindert das Speichern und damit ist ein Dokument IMMER IsNewDoc = True

Es ist immer gut, möglichst viel Input von anfang an zu posten, damit wir hier nicht herumrätseln müssen  ;)

Andreas

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #7 am: 24.08.05 - 10:47:30 »
@Glombi

Sorry, ist mir auch gerade aufgefallen. (Hab mich gewundert, wo meine Testdocs sind.)

Wollte ja das Feld nutzen, um die Dialogboxen "Wollen sie diese Doc speichern?" zu unterbinden, da ich im Queryclose eigene Boxen nutze, die dem User mehr Info geben sollen.

Das funktioniert auch,  ;) aber leider gibts dann den oben beschriebenen "Folgefehler".

cu
der B@sti
Domino, Notes, Sametime

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #8 am: 24.08.05 - 10:51:30 »
Aber dennoch kann man das ganz leicht programmieren.

In den (Declarations) der Maske ein
Dim DocIsNew as Integer

Im Postopen
DocIsNew = Source.IsNewDoc

Im QuerySave
DocIsNew = False

Andreas

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #9 am: 24.08.05 - 11:00:24 »
@Glombi

Vielen Dank. Natürlich viel eleganter als meine müden Versuche.  :)

Hast du ev. noch eine Lösung für mein Dialogboxproblem?
Aktueller Stand:

- Feld SaveOptions, um Dialogboxen zu unterbinden
- im Queryclose ein doc.save um das doc zu speichern.

Speichern im Frontend ist ja nicht. Aber im Backend sollte das doch gehen.

cu
der B@sti


Domino, Notes, Sametime

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #10 am: 24.08.05 - 11:10:43 »
Ich kapiere das noch nicht richtig. Du willst per Button speichern (UI-Dokument), setzt ein SaveOptions = "0" und es soll aber erst im QueryClose im Backend gespeichert werden?

Warum nutzt Du nicht das Querysave und machst da einige Abfragen/Hinweise.
Falls das Speichern dann aufgrund des Userinputs unterbunden werden soll, machst Du ein
Continue = False
Exit sub


Kannst Du bitte mal genau erklären, was Du erreichen willst.

Andreas

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #11 am: 24.08.05 - 11:22:03 »
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 ...

Code
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
Domino, Notes, Sametime

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #12 am: 24.08.05 - 14:06:53 »
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?

Code
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
Domino, Notes, Sametime

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #13 am: 24.08.05 - 14:10:25 »
Du solltest auch im QueryClose das SaveOptions auf "0" setzen.

if Source.Document.SaveOptions(0) = "1" then
 Source.Document.SaveOptions(0) = "0"
 call Source.Document.Save( false, true, true )
End if

Andreas

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #14 am: 24.08.05 - 14:20:21 »
Mach ich.

Löst das auch mein Druckscriptproblem? Eher nicht, oder?

cu
der B@sti
Domino, Notes, Sametime

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #15 am: 24.08.05 - 14:22:41 »
Das sollte es aber schon!

In Deinem Script speicherst Du zwar das Dokument mit
uidoc.Save
und dadurch wird auch das Postsave ausgeführt.
Aber das Dokument wird danach nicht mehr im Backend gespeichert und daher geht das Setzen von SaveOptions im PostSave verloren.

Daher mein Vorschlag mit dem Queryclose.

Andreas

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #16 am: 24.08.05 - 14:30:31 »
uidoc.Save damit Querysave läuft wg. Prüfung Pflichtfelder.
Druck soll erst dann möglich sein, wenn die Prüfung durch ist.

Danach öffnet das Druckscript aber ein neues Doc mit der angegebenen Form. Das alte bleibt aber weiterhin geöffnet. Geht dabei die Änderung verloren?

Domino, Notes, Sametime

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #17 am: 24.08.05 - 14:44:42 »
if Source.Document.SaveOptions(0) = "1" then
 ---> Source.Document.SaveOptions(0) = "0" --->  Error: Illegal use of property
 call Source.Document.Save( false, true, true )
End if

Set item = doc.ReplaceItemValue( "SaveOptions", "0")

geht so. Weiß leider nicht warum dein Code nicht geht, sieht ordentlich aus ... wie immer bei Dir. ;)
Löst aber nicht mein Prob.

cu
der B@sti
Domino, Notes, Sametime

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #18 am: 24.08.05 - 14:50:37 »
Hi,

wenn Du den Wert eines Item als Eigenschaft auslesen willst, machst Du das wie gehabt:

Source.Document.SaveOptions(0)

wenn Du den Wert setzen willst, mußt du das ohne Instanz machen:

Source.Document.SaveOptions = "0"

Gruß

Willi
Ich will endlich die F9-Taste in diesem Forum haben!!!

Glombi

  • Gast
Re: Doc ist noch immer "IsNewDoc" obwohl es gespeichert wurde
« Antwort #19 am: 24.08.05 - 15:02:03 »
Ja genau, Willi hat recht. Das kommt bei Copy-Paste heraus. Sorry!

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz