Autor Thema: UiDocument.Close ohne Save  (Gelesen 6540 mal)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
UiDocument.Close ohne Save
« am: 01.07.13 - 11:03:58 »
Wie kann ich ein NotesUIDocument schließen und die Änderungen verwerfen ohne dass der User hinterher gefragt wird ob er die Änderungen speichern will?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #1 am: 01.07.13 - 11:06:03 »
Hallo,

Man kann z.B. in der Designer-Hilfe nachsehen und hier nach dem Feld "SaveOptions" suchen.

SaveOptions = "0" => kein Speichern.


Andreas

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #2 am: 01.07.13 - 11:09:17 »

Die Option habe ich in der Formelsprache bereits gefunden. Aber wie schreibe ich das in Lotus Script??


Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #3 am: 01.07.13 - 11:10:54 »
Das ist keine Option, dass ist ein quasi 'normales' Feld.

Also gelten auch die in Script gueltigen Moeglichkeiten, um den Inhalt eines Feldes zu veraendern.


Andreas

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #4 am: 01.07.13 - 11:18:14 »

Also, den Aufruf uidoc.SaveOptions = 0 gibt es nicht!

Dann mal anders gefragt: An welcher Stelle sollte/kann man den Bearbeiten-Modus verhindern, wenn ein Dokument z.B. einen bestimmten Status (etwa "Antrag zugelassen") hat? Das ist vermutlich schlauer als erst beim Speichern zu prüfen und dann zurück zu rollen?!

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: UiDocument.Close ohne Save
« Antwort #5 am: 01.07.13 - 11:21:44 »
Wie Andreas schon sagt ist das ein normales Feld, dem du den Namen "SaveOption" gibst und dem du einen Wert "0" oder "1" zuweisen muss. Das Feld hat den Wert dann solange, bis man ihn wieder ändert und manuel "speichern" sagt. Soange gilt dann:

SaveOptions steuert die "Wollen Sie speichern" abfrage beim Schließen des Dokumentes.

"0": Das Dokument wird ohne nachfrage geschlossen - und nicht gespeichert
"1": Sofern das Dokument im Frontend geändert wurde erscheint die übliche 'Wollen Sie speichern' Abfrage


Wenn du auf den status eines Dokumentes prüfen willst un dementsprechend das Bearbeiten verhindern willst, musst du das im Querymodechange machen.
« Letzte Änderung: 01.07.13 - 11:23:17 von Klafu »
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #6 am: 01.07.13 - 11:52:39 »
@Klafu,
Zitat
Wenn du auf den status eines Dokumentes prüfen willst un dementsprechend das Bearbeiten verhindern willst, musst du das im Querymodechange machen.
Damit waere ich vorsichtig.

Ansicht der Dokumente und dann "STRG + B" (STRG + E) loest garade diesen Event nicht aus.

Ich wuerde es vorziehen in sochen Konstellationen mit "Leser- und Autorenfeldern" zuarbeiten, oder, wenn es sich anbietet
mit "zugriffskontrollierten Abschnitten"


Andreas
« Letzte Änderung: 01.07.13 - 11:56:05 von ascabg »

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: UiDocument.Close ohne Save
« Antwort #7 am: 01.07.13 - 11:55:13 »
Ein Rechtsklick > Bearbeiten umgeht es auch.
Da geb ich dir Recht, Andreas. So einfach das Bearbeiten verhindern geht nicht.
Das Bearbeiten eines geöffneten Dokuments kann so aber abgefangen werden.

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #8 am: 01.07.13 - 12:16:56 »
Wenn man das Bearbeiten mit Script verhindern will, muss man PostOpen und Querymodechange anfassen.

Im PostOpen prüfen, ob das Dokument im EditMode ist, falls ja, EditMode -> False

Im QueryModeChange ebenfalls prüfen, ob das Dokument im EditMode ist, falls nein -> Continue = False

Das sind zwei Dreizeiler, die zuverlässig funktionieren, wenn man mit verborgenem Design arbeitet, ansonsten könnte man das mittels Debugger umgehen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #9 am: 01.07.13 - 14:04:08 »
Dazu gibt es auch einen Best Practice-Artkel  ;)

Bernhard

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #10 am: 02.07.13 - 09:33:33 »

Bernhard,

wo finde ich diese Best Practice-Artkel?

Danke,
Mel

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #11 am: 02.07.13 - 09:39:45 »
Hier im Forum unter Best Practices, ist nicht wirklich schwer zu finden ...

http://atnotes.de/index.php/topic,20455.0.html

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #12 am: 02.07.13 - 10:04:08 »
Danke!

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #13 am: 02.07.13 - 10:53:21 »
Noch eine Frage dazu: Du schreibst "Für den Platzhalter THE_CONDITION ist jeweils die konkrete Bedingung zu formulieren"

Wenn ich hier eine Funktion aus einer Scritp-Bib verwende, wertet der Debugger die Zeile einfach nicht aus:

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
   Dim edit As Boolean
   edit = valEditRWInEndStatus
   If  edit = False Then
      If Source.EditMode = False Then
         Continue = False
      End If
   End If
End Sub

Warum?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #14 am: 02.07.13 - 11:07:07 »
Hast Du die Bibliothek eingebunden?

Was sagt der Debugger?

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #15 am: 02.07.13 - 11:34:13 »
Die Bibliothek ist in den Options eingebunden. Der Debugger lässt die Zeile einfach aus, "hüpft" quasi drüber ?!!?!?!?

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #16 am: 02.07.13 - 11:54:50 »
Ich habe den Code jetzt direkt ins QueryModeChange geschrieben dann läuft es. Irgendwie scheint mein Projekt bezüglich der Bibs etc. etwas verhuntzt zu sein.

Danke für eure Hilfe!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #17 am: 02.07.13 - 12:11:12 »
Setz mal Option Declare und binde die Bibliothek "ganz oben" in den Options der Globals ein. Den Code ins QueryModeChange zu schreiben ist keine gute Lösung, da Du die im PostOpen ebenfalls benötigst. Und Du willst das sicherlich nicht doppelt ablegen ...

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: UiDocument.Close ohne Save
« Antwort #18 am: 05.07.13 - 10:55:34 »
Peter, kannst du mir das ein wenig genauer beschreiben bitte?

"Setz mal Option Declare und binde die Bibliothek "ganz oben" in den Options der Globals ein. "

Wie setze ich die Option Declare, und was meinst du mit ganz oben und den Globals?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: UiDocument.Close ohne Save
« Antwort #19 am: 05.07.13 - 13:35:21 »
Ich vermute, dass bei dieser Zeile

edit = valEditRWInEndStatus

nicht in die Bibliothek gesprungen wird, weil die nicht korrekt eingebunden ist. valEditRWInEndStatus wird dann als eine nicht deklarierte Variable angenommen, und edit dabei mit einem "nichts" gefüllt.

Hättest Du Option Declare gesetzt, würde eine nicht deklarierte Variable als Fehler ausgewiesen.

Option Declare

schreibst Du einfach in die Options. Options gibt es in der Maske sowohl unter Globals als auch unter der Maske (linke Seite, dort, wo Du auch das QueryModeChange findest). Option Declare ist etwas pieselig und gilt nicht immer, ich würde es daher immer in alle Options setzen.

Wo hast Du die Bibliothek eingebunden? Das kannst Du ebenfalls in beiden Options machen, ich würde aber lieber die globalen Options nehmen, dann gilt es überall. Eine Einbindung einer Bibliothek in den Options der Maske überschreibt die Einbindung in den Globals für die Events, die in der Maske zugeordnet sind (zumindest war das früher so), da habe ich schon mal sehr lange nach gesucht, warum eine Funktion nicht gefunden wurde. Daher würde ich mich immer nur für eine Stelle entscheiden, und das sind dann die Globals.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz