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

IBM Cognos Analytics 11.0.9 (R9)

IBM Cognos Analytics 11.0.9 (R9)

Erst Mitte November hatten wir über Neuerung in der Version 11.0.8 gebloggt. Knapp ein Monat später veröffentlicht IBM die Version 11.0.9 … Mehr

von
Filip Meyer
,

Sie haben Fragen? Wir sind für Sie da.

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Sie können uns auf verschiedene Weisen für eine unverbindliche Erstberatung erreichen:

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