Wie Richtext-Feld in Querysave auf Inline-Bilder prüfen?

  • Hallo,


    ich habe in einer Maske ein Richtext-Feld, in welches der Benutzer der Datenbank eine Produktbeschreibung samt Inline-Bild einfügen soll. Anforderung ist nun, dass dieses Bild beim Speichern vorhanden sein muss.


    Nun habe ich aber in Querysave nur ein Notesuidocument, über das ich direkt nur per FieldGetText den reinen Text abfragen kann. Gehe ich über das enthaltene Document (via GetFirstItem etc.), arbeite ich jedoch nicht auf den aktuellen Inhalten des RichtextItems (bzw. bei neuen Dokumenten auf nichtexistenten Items).


    Gibt es irgendeine Möglichkeit, doch noch zu prüfen, ob ein Inline-Bild vorhanden ist?


    Viele Grüße
    Mathias

  • Das Problem ist, dass bei einem nicht gespeicherten neuen NotesUIDocument das dahinterliegende NotesDocument noch keine Items hat.
    Du kommst AFAIK nicht darum herum, das Dokument auf jeden Fall erstmal zu speichern.


    Hier ein Vorschlag:


    Erst verhinderst Du, dass man mit der Maske Dokumente über das Erstellen-Menü erzeugen kann (Maskeneigenschaften).


    Der Maske fügst Du ein Feld "Status" hinzu, dass erstmal einen Wert bekommt, der es als ungültig darstellt.


    Alle Views, die dieses Dokument darstellen müssen Dokumente mit dem Status "ungültig" in der Ansichtsauswahlformel herausfiltern, damit ungültige Dokumente nicht sichtbar sind.


    Dann baust Du einen Lotusscript-Agenten, der ein NotesDocument im Backend erstellt, das Form-Feld auf die entsprechende Maske setzt, das Statusfeld auf den Wert für "ungültig" setzt, das NotesDocument speichert und es dann im Frontend öffnet.


    Der Agent kann am besten aus dem Aktionen-Menü oder über eigene Aktionen in den Views, Outlines etc. getriggert werden.


    Jetzt wird Deine Prüfung im QuerySave-Event auf jeden Fall funktionieren. Du musst nur daran denken, das Dokument bei erfolgreicher Prüfung als gültig zu markieren, damit es nach dem Speichern in den Views sichtbar wird.
    Wenn der User die Bearbeitung abbricht, bleibt das Dokument erstmal vorhanden, ist aber für die User nicht sichtbar, wenn der Status überall gefiltert wird.


    Zusätzlich baust du einen zeitgesteuerten Agenten, der zu einem Zeitpunkt, zu dem keiner mit der DB arbeitet, alle ungültigen Dokumente löscht. Alternativ kannst du auch einen View bauen, der nur die ungültigen Dokumente darstellt, aus dem diese dann manuell gelöscht werden.


    Stefan

  • Zitat


    Littlesmith schrieb:
    Du kommst AFAIK nicht darum herum, das Dokument auf jeden Fall erstmal zu speichern.


    Ja, fürchte ich auch. Sowas blödes... naja, muss ich halt in den sauren Apfel beißen (oder nochmal nachhaken, ob das Feature wirklich sein muss).


    Vielen Dank für Deine Hilfe!


    Mathias