Autor Thema: Manueller Spiecherdialog einfügen  (Gelesen 5204 mal)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Manueller Spiecherdialog einfügen
« am: 17.03.16 - 11:13:29 »
Hallo Forum,

eine Frage zum Speicherdialog von Dokumenten.
Ich habe eine Anwendung in der ein neues Dokument erzeugt wird, das initial mit diversen Daten vorbelegt und berechnet werden muss.
Ich muss nun eine eigene Speicherdialogbox beim Verlassen des Dokuments anzeigen, da diese noch weitere Funktionen beinhalten muss.

Beim Verlassen des Dokuments liefert jedoch die source.ModifiedSinceSaved Eigenschaft immer ein True zurück.
Egal ob ich das Dokument nur neu erstelle und direkt wieder schließe oder ob ich Änderungen im Dokument vornehme.

Das Ziel soll natürlich sein, dass die eigene Dialogbox nur erscheint, wenn der Anwender auch wirklich Änderungen im Dokument vorgenommen hat.

Ist sowas möglich?
Gibt es z. Bsp. die Möglichkeit, den Status der ModifiedSinceSaved Eigenschaft eines Dokumentes manuell zu manipulieren?

Grüße
Bernd
« Letzte Änderung: 18.03.16 - 11:18:41 von Legolas »
Arbeite klug, nicht hart.

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #1 am: 17.03.16 - 11:40:33 »
Hallo Bernd,

meines Wissens nach ist die Eigenschaft Read-only. Ist als nichts mit manipulieren.

Du willst also nur, wenn der Anwender wirklich etwas geändert hat, dass Dein Speichern-Dialog erscheint?
Meine Idee wäre jetzt beim Wechsel in den Bearbeitenmodus die Feldinhalte zwischenzuspeichern und wenn der Benutzer das Dokument schließen will, die aktuellen Feldinhalte mit den zwischengespeicherten abzugleichen. Gibt es Änderungen, dann soll der Dialog erscheinen.

Die Eigenschaft modifiedsincesaved geht dann auf true, wenn im UIDocument etwas geändert wird. Werden eventuell beim Öffnen des Dokuments noch irgendwelche Felder angepackt, bevor der Anwender überhaupt etwas ändern kann?

Bye
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Manueller Spiecherdialog einfügen
« Antwort #2 am: 17.03.16 - 15:51:14 »
Leider ist die ModifiedSinceSaved- Property (genau wie die IsNewDoc- Property bei per Script angelegten Dokumenten) sehr unzuverlässig.
Ich arbeite in solchen Fällen mit einer "ShadowDocument"- Klasse: Beim öffnen lege ich mir ein Objekt dieser Klasse an, das hat ein NotesDocument- Property, in das ich alle Items des Dokuments kopiere. Beim speichern wird das Shadow- Dokument einfach mit den Werten aus dem Dokument aktualisiert, und beim schliessen prüfe ich die relevanten (weil vom User änderbaren) Felder gegeneinander ab, und weiss dann, ob sich was geändert hat (wir arbeiten z.B. mit Computed Tabbed Tables für die Optik... und die dafür zuständigen Felder brauche ich natürlich nicht zu vergleichen, weil sie keine relevane Änderung darstellen...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #3 am: 17.03.16 - 16:23:32 »
Hallo Ihr Zwei,

das habe ich fast befürchtet.
Und wir verfahrt Ihr dann bei Richtext Feldern?
Sichert Ihr da den Text den rtItem.text zurückgeliefert wird und vergleicht Ihr dann diesem mit dem RT-Feld des zu speichernden Dokuments?
Bei uns hier im Haus sind das allerdings RT-Felder mit teilweise einer Menge Dateianhänge die auch mal über 50 MB groß sein können.

Grüße
Bernd
Arbeite klug, nicht hart.

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #4 am: 17.03.16 - 16:56:18 »
Hallo Bernd,

mit RichText habe ich das bisher - zum Glück - nicht machen müssen.
Eventuell wäre die Eigenschaft ValueLength ein gangbarer Weg, einfach die Byte-Größe der Werte in den Feldern vergleichen.

Bye
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #5 am: 18.03.16 - 10:25:34 »
Hallo Zusammen,

habe nun alles gelöst bis auf das Thema Richtext.

Folgende Situation:
Beim Laden des Dokuments sichere ich die Größe des RT Feldes mit  source.Document.GetFirstItem("Body").Valuelength zudem noch den reinen Textinhalt. mit source.Document.GetFirstItem("Body").Text.

Diese beide Werte möchte ich mit dem RT-Feld im Query-Save vergleichen um festzustellen, ob es eine Änderung gegeben hat.

Nun meine Problem:
Egal was ich versucht habe, die Werte des RT Body-Feldes beim Auslesen im QuerySave ändern sich nicht.
Irgendwie bekommt das RT-Objekt beim Speichern nicht mit, dass es eine Änderung gegeben hat.

Bei den "normalen" Textfeldern funktioniert das tadellos.

Was kann ich tun, um das Problem zu lösen?


System: Notes 9.0.1

Grüße
Bernd


Arbeite klug, nicht hart.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Manueller Spiecherdialog einfügen
« Antwort #6 am: 18.03.16 - 10:51:26 »
Nix... Richtextitems werden erst NACH dem speichern aktualisiert...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #7 am: 18.03.16 - 11:10:48 »
Die Länge des RT-Feldinhaltes bekommst du mit uiDoc.FieldGetText(... raus, Anhänge mit der EmbeddedObjects-Eigenschaft.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #8 am: 18.03.16 - 11:18:09 »
Hallo jBubbleBoy,

so scheint es zu gehen.  :D

Sowohl der Textinhalt als auch die Attachments des RT-Feldes lassen sich so ermitteln. (Sowohl beim Öffnen und Schließen des Dokuments)
Danke für den Input.

Grüße
Bernd
Arbeite klug, nicht hart.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #9 am: 18.03.16 - 11:36:36 »
EmbeddedObjects ging bei mir eben nicht, aber die @Funktionen kann man hier verwenden, wie z.B. Evaluate( "@AttachmentNames",source.Document)

Gruß
Erik
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #10 am: 18.03.16 - 11:41:42 »
Hi,

genau das habe ich getan!  ;)

Grüße
Bernd
Arbeite klug, nicht hart.

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #11 am: 18.03.16 - 15:04:59 »
Kurze Frage.
Das jemand ein Attachement z.B. ein Excel bearbeiten und die aktuellere Version mit gleichem Dateiname ins RichText rein setzt prüfst Du ab?

Bye
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Manueller Spiecherdialog einfügen
« Antwort #12 am: 18.03.16 - 15:28:07 »
Hallo Rambrand,

das geht leider nicht.

Geprüft wird:
- ob die Attachments die gleichen Namen haben. (Nicht der Inhalt oder eine Aktualisierung)
- ob der Text der gleiche ist. (Es wird keine Formatierung geprüft und keine Zeilenumbrüche)


wobei man mit Evaluate(@AttachmentModifiedTime und @AttachmentLenght)) sicher noch auf diese Daten prüfen kann.
Grüße
Bernd
« Letzte Änderung: 18.03.16 - 15:30:48 von Legolas »
Arbeite klug, nicht hart.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz