Autor Thema: Doc aktualisieren beim Umschalten vom LeseModus in Editmodus.  (Gelesen 1821 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hi Leute,

ich bräuchte mal einen kleinen Gedankenschubs, denn ich habe ein kleineres Problem und bin anscheinend geistig etwas festgefahren. ;)

Das Problem tritt auf wenn zwei User (nennen wir sie mal "User 1" und "User 2") in unserer Projekt-DB das gleiche Doc öffnen.
Einer öffnet es im Edit-Mode, der andere nur im Lese-Mode.
Möchte der User 1 vom Lese-Mode in den Edit-Mode wechseln, bekommt er die Meldung, dass der User 2 das Dokument gesperrt hat.
Also bleibt User 1 solange im Lese-Mode bis User 2 seine Änderungen gemacht und gespeichert hat.

Das Problem ist, dass User 1 danach wenn er  endlich im Edit-Mode ist nicht die aktuelle Version des Dokument sieht, denn die Änderungen von User 2 werden so nicht angezeigt.

Hat jemand eine Idee, wie ich ein Dokument beim Moduswechsel, von Lesemodus in den Editmodus aktualisieren kann?
Reload der Uidoc-Klasse hat nicht funktioniert.
Schließen und wieder öffnen über die Doc-ID habe ich nicht hinbekommen, ohne das der User lange warten muss.

Bin für jede Idee dankbar, denn im Moment trete nur auf der Stelle.. ;-)

Gruß Gerry
Gruß Gerry (Lancelot)

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 284
  • Geschlecht: Männlich
  • Mal wieder: Flachmann ist Schuld!
Hast Du denn eine Lösung gefunden?

.Reload() wäre auch mein erster Gedanke. - Aber wenn das nicht funktioniert, wirst Du das Dokument schließen und wieder öffnen müssen, damit der neue Inhalt von der Platte geholt wird. Wahrscheinlich ist das irgendwie im Cache gespeichert...  :-:

Gruß,
  __________
  _/_
  /lachmann

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Um einen Reopen kommst du nicht herum, du kannst aber mit Evaluate + Formelsprache auf den Inhalt des Dokuments auf der Platte zugreifen.

Folgender Code im QueryModeChange kann das prüfen.
Code
' Neues TempDoc erzeugen (es darf nicht das aktuelle übergeben werden, da sonst @GetDocField den falschen Wert liefert)
Dim tmpDoc As New NotesDocument(doc.getParentDatabase())
Call tmpDoc.Replaceitemvalue("UNID", doc.Universalid)
Dim v
v = Evaluate(|@GetDocField(UNID;"Letzte_Aenderung")|,tmpDoc)
if doc.Letzte_Aenderung(0) <> v(0) then
  msgbox "Dokument wurde modifiziert. Bitte neu öffnen"
  continue = false
end if
Du brauchst noch ein Feld "Letzte_Aenderung", welches beim Speichern auf Now gesetzt wird (ggf. funktioniert auch $Revisions)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz