Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TMC am 30.09.04 - 20:38:58

Titel: item.LastModified
Beitrag von: TMC am 30.09.04 - 20:38:58
Langsam bin ich mit meinem Latein am Ende.

Ich habe eine Klasse. Im Postopen lese ich u.a. item.LastModified eines RTI aus.

Im Postsave vergleiche ich.
Im Postsave bekomme ich jedoch als Rückgabewert zu item.LastModified den selben Wert wie im Postopen, obwohl ein Text dem RTI hinzugefügt wurde.

Nach erneutem Speichern (also zum 2. mal) ändert sich dann der Wert.

Grundsatzfragen, damit ich das Problem eingrenzen kann:
1) Wann genau ändert sich item.LastModified?
2) Gibt es da irgendwelche Einschränkungen / known bugs, etc. zu item.LastModified?

Danke,
Matthias

P.S. am meisten ärgert mich, dass es beim testen in einer leeren DB wohl funktioniert. Habe auch schon alle relevanten Event-Codes auskommentiert.

*Edit*
Zum vergleichen nehme ich eine String-Variable, die Cstr(item.LastModified), aber daran sollte es wohl nicht liegen?
Titel: Re: item.LastModified
Beitrag von: koehlerbv am 30.09.04 - 21:19:48
Mystisch:

Ich habe folgenden Code in PostOpen und -Save, und es geht sich sauber:

Code
	Dim doc As NotesDocument
	Dim item As NotesItem
	
	
	Set doc = Source.Document
	Set item = doc.GetFirstItem ("RTF")
	If Not (item Is Nothing) Then
		Messagebox Cstr (item.LastModified)
	End If

Kannst Du noch genauere Rahmenbedingungen angeben ?

Ciao,
Bernhard
Titel: Re: item.LastModified
Beitrag von: TMC am 30.09.04 - 21:20:29
Zwischenbericht:

Bin evtl. auf einen Bug gestossen:

Form-Alias war bisher = Form-Name.
Das Verhalten hat sich etwas geändert, als ich den Alias gelöscht habe  :P

Bin weiter am evaluieren. Ist allerdings sehr anstrengend. Ich komme mir vor als wie wenn ich einen verlorenen Haustürschlüssel in der Sahara suche.....
Titel: Re: item.LastModified
Beitrag von: TMC am 30.09.04 - 21:22:10
Danke Bernhard.
Kannst Du noch genauere Rahmenbedingungen angeben ?

Siehe oben erste Erkenntnis. Ich teste erstmal noch ausgiebig und gebe dann Beschaid.
Titel: Re: item.LastModified
Beitrag von: koehlerbv am 30.09.04 - 21:28:26
Form-Alias war bisher = Form-Name.
Das Verhalten hat sich etwas geändert, als ich den Alias gelöscht habe  :P
Bin weiter am evaluieren. Ist allerdings sehr anstrengend. Ich komme mir vor als wie wenn ich einen verlorenen Haustürschlüssel in der Sahara suche.....

Aliases - falsch eingesetzt wie bei Subforms- oder Änderungen bestehender können durchaus Ärger machen. Die gehören immer vorab gründlich überlegt.

Schlüsselbund in der Sahara: Das geht doch noch  ;D Da kann man einen Metalldetektor hernehmen. Such mal einen Stein (in 80% der Sahara) oder ein Sandkorn (in den restlichen 20%) - DAS wird schwer !

Faszinierend, dass "Sahara" "die Blühende" heisst, aber wenn es dort doch mal regnet, wird es noch faszinierender. Das erklärt auch locker, warum in der Sahara mehr Leute ersaufen als verdursten ...

Aber zurück zum Thema: Deine Resultate interessieren mich natürlich auch brennend.

Good luck !

Bernhard
Titel: Re: item.LastModified
Beitrag von: TMC am 30.09.04 - 21:34:12
Danke für die Aufmunterung.

Steine suche ich zum Glück noch nicht  :)

Den Alias habe ich jetzt erst zum testen rausgenommen und festgestellt, dass sich da dann was (wohl positiv) geändert hat.
Seltsam, seltsam, wird Zeit dass es in der "Sahara" regnet  ;)

Melde mich wieder.
Titel: Re: item.LastModified
Beitrag von: TMC am 30.09.04 - 23:22:16
Kommando erstmal zurück:

Es sind dermaßen viele Abhängigkeiten in dem Code, so dass eine Filterung verdammmt schwierig wird.

Ich gehe da jetzt systematisch vor. Sollte sich tatsächlich ein Bug herauskristallisieren, melde ich es hier (und bei IBM) natürlich.
Form-Alias war schonmal ein guter Treffer, aber es gibt noch viele weitere Abhängigkeiten.

Bin weiter beim Evaluieren und Schlüssel-Suche in Sahara  :-\
Titel: Re: item.LastModified
Beitrag von: TMC am 01.10.04 - 12:21:50
Mystisch:

Ich habe folgenden Code in PostOpen und -Save, und es geht sich sauber:

Code
	Dim doc As NotesDocument
	Dim item As NotesItem
	
	
	Set doc = Source.Document
	Set item = doc.GetFirstItem ("RTF")
	If Not (item Is Nothing) Then
		Messagebox Cstr (item.LastModified)
	End If

Kannst Du noch genauere Rahmenbedingungen angeben ?

Ciao,
Bernhard

Ich habe exakt Deinen Code getestet (leere DB, 1 Maske, 2 Felder, Feld zum Testen ist ein Richtextfeld).

A) Auf Domino Server 6.5.1, Client 6.5.2
B) Lokaler Client 6.5.2

Bei A) Liefert Postopen z.B. "01.10.2004 12:13:40", Postsave "01.10.2004 12:13:05"
Bei (B) klappt es so wie es sein soll.

Lässt sich das Verhalten auf dem Server irgendwie erklären?

Seltsam.......  :-\

In der KB hab ich nur das hier gefunden:

The NotesItem LastModified Property Reflects the Date the Document (not the Field) Was Last Modified (http://www-1.ibm.com/support/docview.wss?rs=0&uid=swg21090463)

The LastModified Property for Rich Text Fields Is Updated When Other Fields Are Updated (http://www-1.ibm.com/support/docview.wss?rs=0&uid=swg21099598)
Titel: Re: item.LastModified
Beitrag von: koehlerbv am 01.10.04 - 12:50:03
Ich habe eben spassenshalber das auf einem 5.0.8er Server ausprobiert.
PostSave: 0:00:00
Im PostOpen wurde dann der korrekte Wert angezeigt.

Die Item property scheint mir ein wenig suspekt zu sein ...

Bernhard
Titel: Re: item.LastModified
Beitrag von: TMC am 01.10.04 - 13:05:42
Danke fürs testen.

Ich werde es jetzt anders lösen, da ich "nur" wissen muss, ob sich was in einem RT-Item geändert hat.

Die item.ValueLength property funktioniert nämlich zuverlässig.
Diese in Verbindung mit item.Text zum Vergleich vorher/nachher kann imho schon ziemlich zuverlässig sagen ob es eine Änderung gab, auch wenn das nicht 100% sauber ist, gerade wenn der Text im Dokument sehr lange ist.....
Titel: Re: item.LastModified
Beitrag von: ..Andreas.. am 01.10.04 - 15:04:50
Probiers doch mal mit dem onChange-Event.
Das gibt (zumindest bei mir) ziemlich zuverlässig an, ob sich was geändert hat, oder eben nicht.
Titel: Re: item.LastModified
Beitrag von: -Michael- am 02.10.04 - 21:59:31
Die item.ValueLength property funktioniert nämlich zuverlässig.
Diese in Verbindung mit item.Text zum Vergleich vorher/nachher kann imho schon ziemlich zuverlässig sagen ob es eine Änderung gab, auch wenn das nicht 100% sauber ist, gerade wenn der Text im Dokument sehr lange ist.....
Genau so hatte ich das auch letztens erst gelöst, weil mir item.LastModified nicht zuverlässig erschien:
Value Length in Verbindung mit dem Plain Text.
Im LDD-Forum gibt es auch ein paar Beiträge hierzu, in einem wurde auch genau diese Lösung vorgeschlagen.

Die Umsetzung war für mich für eine Historie, habe ich gestern erst online gestellt, siehe: http://www.notes-links.de/cpo/eigenentwicklungen/detail.php?nr=519&kategorie=eigenentwicklungen