Notes Fehler: Ansicht nach Feldwerten sortiert - Austausch der Dokumente

von Christoph Salka,
assono GmbH, Standort Kiel,

Bei der Entwicklung einer Anwendung stießen wir auf einen Fehler, der unter Umständen kritische Folgen haben kann. Wird mit Dokumenten gearbeitet, die sich in einer sortierten Ansicht befinden, kann es passieren dass Notes ein bereits geöffnetes Dokument durch ein anderes austauscht. Das tritt immer dann auf, wenn in den Lesemodus gewechselt wird, nachdem ein Feldwert, der Einfluss auf die Sortierung hat, geändert und gespeichert wurde.

Konkreter an einem Beispiel dargestellt:
In einer Ansicht befinden sich zwei Dokumente, welche beide in dem Feld "Nummer" einen numerischen Wert enthalten. Das Feld im ersten Dokument hat den Wert 1, im zweiten Dokument den Wert 2. In der Ansicht sind die Dokumente nach dem Feld "Nummer" aufsteigend sortiert.
pic1.png
Das erste Dokument wird im Bearbeitungsmodus geöffnet und der Wert des Feldes "Nummer" von 1 in 3 geändert.
pic2.png
pic3.png
Anschließend wird gespeichert und in den Lesemodus gewechselt.
pic4.png
Statt dem ersten Dokument mit dem Feldwert 3, befindet sich jetzt das zweite Dokument mit dem Feldwert 2 im Lesemodus.
pic5.png
Warum passiert das? Weil das Dokument durch die Sortierung in der Ansicht nach unten gerutscht ist und dies scheinbar Auswirkungen auf das anzuzeigende Dokument hat.

Wir haben diesem Blogeintrag eine Datenbank hinzugefügt, an welcher Sie den Fehler gut nachvollziehen können. Dort finden Sie zwei Ansichten (view1, view2). In der view1 haben wir für das Problem bereits eine Lösung implementiert. In der view2 können Sie den Fehler anhand des eben beschriebenen Beispiels nachvollziehen.

Folgenden Code haben wir zur Lösung des Problems im "QueryModeChange" der Maske der Dokumente aus view1 hinzugefügt:

 Dim uiws As New NotesUIWorkspace 
 Dim doc As NotesDocument 
 Dim docReopen As notesDocument 
 Dim newUIDoc As NotesUIDocument
 Dim item As NotesItem
 Dim unid As String
 Dim msgSave As Integer
 Dim msgReset As Integer
 
 If source.EditMode Then
 If source.ModifiedSinceSaved Then
 msgSave = Messagebox("Möchten Sie Ihre Änderungen speichern?", MB_YESNOCANCEL, "IBM Notes")
 If msgSave = IDYES Then
 source.Save
 Elseif msgSave = IDNO Then
 msgReset = Messagebox("Möchten Sie das Dokument zurücksetzen?" + Chr$(10) + Chr$(10) + _
 |Bei "Ja" wird das Dokument in den Zustand der letzten Speicherung versetzt.| + Chr$(10) + _
 |Bei "Nein" werden die letzten Änderungen ungespeichert angezeigt.|, MB_YESNO, "IBM Notes")
 End If
 End If
 If Not msgSave = IDCANCEL Then
 Set doc = source.Document 
 unid = doc.UniversalID 
 Set item = New NotesItem(doc, "SaveOptions", 0) 
 source.Close 
 If msgReset = IDYES Then
 Delete doc
 End If 
 Set docReopen = uiws.CurrentDatabase.Database.GetDocumentByUNID(unid) 
 Set newUIDoc = uiws.EditDocument(False, docReopen)
 Call uiws.ViewRefresh
 End If
 continue = False
 End If

zip.gif
FehlerDB.zip
(1127 Kb)

Fachbeitrag IBM Notes IBM Notes Traveler

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen oder möchten eine Demo anfordern?

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Gerne erstellen wir eine individuelle Demo für Sie.

Wir verwenden Ihre Daten, um Sie einmalig per E-Mail zu kontaktieren. Wir geben Ihre Daten nicht an Dritte weiter. Siehe: Datenschutzhinweise
assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de