Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Colibri am 17.03.10 - 10:29:08

Titel: Aktualisierung uidoc
Beitrag von: Colibri am 17.03.10 - 10:29:08
Hallo Notes Gemeinde,

ich habe ein etwas seltsames Programmierproblem und kann es mir nicht erklären. Ich öffen an 2 verschiedenen PC's das gleiche Notesdokument im Lesemodus. Nun ändere ich über einen Button mit einer DialogBox das Dokument und speichere es wieder.

Wenn ich den Button mit der DialogBox nun an dem 2. PC drücke, bei dem ich das Dokument ja auch schon offen hatte, bekomme ich beim speichern logischerweise die Meldung "Ein weitere Kopie diese Dokuments wurde gespeichert ...... Konflikdokument?".

Dies wollte ich nun verhindern, indem ich das uidoc über den Button neu öffne:

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
call uidoc.close
uidoc = ws.EditDocument(True, doc, False)

Das bringt aber leider nichts, da, wie ich herrausgefunden habe, das doc noch den alten Stand hat, also den Stand BEVOR ich an dem 1. PC die Änderungen gespeichert habe.

Also dachte ich, OK musst Du hallt das doc neu holen:

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
unid = doc.UniversalID   
Call uidoc.Close(True)
Set doc = db.GetDocumentByUNID(unid)
uidoc = ws.EditDocument(True, doc, False)

Aber auch das funktioniert nicht, das doc hat immer noch den alten Stand.

Erst wenn ich das doc über eine Ansicht neu hole:

lfdnr = uidoc.FieldGetText("lfdnr")
Call uidoc.Close(True)
Set doc = view.GetDocumentByKey(lfdnr, True)
Set uidoc = ws.EditDocument(True, doc, False)

Jetzt das doc den aktuellen Stand und ich bekomme keinen Speicherkonflikt.

Laut Doku müsste aber doch schon Varinate 1 funktionieren, spätestens jedoch Variante 2, oder wo mache ich den Fehler?

Server ist 8.5.1 und die Clients sind 6.5.6 und 8.5.1, das Verhalten ist bei beiden Versionen gleich.

Danke und Gruß,
Dietmar
Titel: Re: Aktualisierung uidoc
Beitrag von: WildVirus am 17.03.10 - 10:40:01
Hallo Dietmar,

da spielt Dir der Cache des Clients einen Streich.

Wenn Du das Dokument schon offen hast und jemand anderes ändert es auf dem Server,  dann kann der von Dir beschriebene Effekt auftreten.

Mit der Ansichtssuche machst Du dann den Refresh.

CU,
Axel
Titel: Re: Aktualisierung uidoc
Beitrag von: Colibri am 17.03.10 - 10:42:29
Hallo Axel,

danke für Deine schnelle Antwort. Ist das Öffnen des doc über die Ansicht also die einzige Möglichkeit das Problem zu umgehen, oder gibt es noch andere?

Gruß
Dietmar
Titel: Re: Aktualisierung uidoc
Beitrag von: DerAndre am 17.03.10 - 10:54:49
Also:

Bei eins öffnest Du das Doc, das Du noch in der Hand hast.

Bei zwei kann ein doc = nothing vor dem GetDocument... helfen

Bei drei kann ein Bug (http://atnotes.de/index.php?topic=48029.msg308535;topicseen) greifen
Titel: Re: Aktualisierung uidoc
Beitrag von: Colibri am 17.03.10 - 12:50:41
set doc = nothing hat leider auch nichts geholfen.

Bleibt mir wohl nichts anderes überig, als das doc über eine Ansicht neu zu holen  >:(

Irgendwie dachte ich, dass ging auch mal anderst.  ???
Titel: Re: Aktualisierung uidoc
Beitrag von: m3 am 17.03.10 - 12:57:00
Du willst ein
Code
Delete Doc
probieren.
Titel: Re: Aktualisierung uidoc
Beitrag von: Colibri am 17.03.10 - 13:12:22
  :D     jawoll ......  das wars ...   jetzt funktioniert Variante2 .

Danke Dir  :knuddel:
Titel: Re: Aktualisierung uidoc
Beitrag von: DerAndre am 17.03.10 - 13:30:44
Interessant, war mir so garnicht bewusst...

Ist aber klar, da ja das uidoc noch die Referenz besitzt und damit kommt wieder das alte Doc ( wieder mal der Cache ) hoch.

Oder unterliege ich hier jetzt einem Irrtum?