Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Thunder am 09.10.03 - 16:01:26

Titel: Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Thunder am 09.10.03 - 16:01:26
Hallo,

folgendes Problem. In einer Ankauf/Verkauf DB haben unsere Mitarbeiter die Möglichkeit ein Foto von dem Artikel einzustellen. Entweder als Anhang oder direkt das Bild. Ich würde gern in der ÜbersichtsAnsicht mit einem Icon verdeutlichen, daß so etwas eingestellt worden ist. Es funktioniert auch (über Formelsprache), wenn ein Anhang drin ist. Meistens stellen die User aber das Foto direkt ein, so daß es sofort zu sehen ist - macht ja auch Sinn, nur das bekomme ich leider nicht abgefragt. Gibt es da einen Trick den ich nicht kenne ?

Besten Dank schon einmal
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Driri am 09.10.03 - 16:22:30
Hi,

mir wäre nicht bekannt, daß es da mit Formeln eine Möglichkeit gibt, das zu prüfen.

Ich würde folgendes vorschlagen :

- zusätzliches Flagfeld in die Maske
- beim Speichern des Dokuments wird geprüft, ob ein Anhang oder ein Objekt im Dokument existiert, wenn ja wird das Flagfeld auf "1" gesetzt
- in der View das Flagfeld abprüfen

Die Prüfung beim Speichern kannst Du mit Script machen :

If doc.HasEmbedded Then
   doc.Flag = "1"
End If
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Thunder am 09.10.03 - 16:34:56
Danke für die prompte Antwort.
Das mit dem Flagfeld würde ich für die Ansicht genauso machen.
Habe das Feld einfach 'Anhang' genannt und soll dann halt 1 oder 0 sein.
Das Script muß dann ja wohl in das QuerySave rein. Aber wie genau - bin Neuling in Sachen Script.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Semeaphoros am 09.10.03 - 16:57:44
Das Script muss ins QuerySave und zwischen die Zeilen, die der Designer da schon macht, machst Du folgendes:

If Source.document.HasEmbedded Then
  Source.document.Anhang = "1"
else
  Source.document.Anhang = "0"
End If
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: eknori am 09.10.03 - 17:04:10
ich habe es in einer meiner Datenbanken folgendermaßen gelöst

Spaltenformel:  @If ( @DocLength > 3000; 17; 0)

Mit dem Wert von Doclength musst du ein wenig rumspielen, bis es passt.

eknori
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Driri am 09.10.03 - 17:10:53
Hi,

das scheint nicht so trivial zu sein, mit HasEmbedded bekomme ich nicht raus, wenn da ein Benutzer ein Bild über "Erstellen"->"Bild.." reingepackt hat. Nen Dateianhang oder ein Objekt funktioniert.

Oder hab nur ich das Problem ?

@eknori :

Okay, das is natürlich schön einfach, aber dafür auch nicht besonders sicher. Wenn nen Benutzer da mal seitenweise Text reinpackt, dann kann die Doclength auch überschritten werden.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Thunder am 09.10.03 - 17:20:37
Reicht aber für meine Bedürfnisse völlig aus.

Danke euch allen.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: koehlerbv am 09.10.03 - 17:23:11
Nur so ganz auf die Schnelle:
Die bisherigen Lösungen funktionieren entweder nicht (HasEmbedded wirkt nicht bei importierten Pics, QuerySave bringt nichts, da zu diesem Zeitpunkt das RTF noch nicht im Backend gespeichert wurde, der Grössentest könnte durch andere Felder zu Verfälschungen führen)

Auch nicht ganz sicher, aber seit vier Jahren bei mir bewährt, folgender Code:

Code
Sub Queryclose (Source As Notesuidocument, Continue As Variant)
   Dim item As NotesItem
   Dim szOrgValue As String
   Dim lRTSize As Long
   
   szOrgValue = Source.Document.Anhang (0)
   
   Set item = Source.Document.GetFirstItem ("Bild")
   If item Is Nothing Then
      Source.Document.Anhang = "nein"
   Else
      lRTSize = item.ValueLength
      If lRTSize > 5000 Then
         Source.Document.Anhang = "ja"
      Else
         Source.Document.Anhang = "nein"
      End If
   End If
   
   If Source.Document.Anhang (0) <> szOrgValue Then
      Call Source.Document.Save (True, False, True)
   End If
   
End Sub

- Im QueryClose wurde das Dok ja bereits gespeichert
- es wird nur auf die Grösse des interessierenden Items geprüft (auch hier gilt wie bei eknori's Vorschlag: Mit der Grösse experimentieren ... Rund 100 Byte ist ein leeres RTF je nach Version)
- Gespeichert wird nur bei Änderungen (die im Lesemodus nicht passieren können, wenn QueryClose so erreicht wird)

HTH,
Bernhard
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Semeaphoros am 09.10.03 - 18:02:07
Wenn ich das richtig lese, hast Du fürs Bild ein eigenes Feld in der Maske, das erleichtert die Sache natürlich. Tatsächlich ist es so, dass RT-Felder sich leider nicht so ohne weiteres auf ihren Inhalt überprüfen lassen.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Thunder am 09.10.03 - 18:10:58
Ja genau. Habe ein eigenes Feld dafür.
Die Abfrage funzt auch nur, wenn ein richtiger Anhang drin ist - kein eingefügtes Bild. Ich bin aber schon zufrieden mit der Größenabfrage-da hatte ich noch nicht dran gedacht. Ist auch schon realisiert.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: Semeaphoros am 09.10.03 - 18:15:09
Ich hatte zwar die Frage an Bernhard und seinen Code gestellt. Aber für Dich heisst das, dass wahrscheinlich Bernhard hier die präziseste Lösung präsentiert hat.
Titel: Re:Abfrage auf Inhalt im Rich Text Feld
Beitrag von: koehlerbv am 09.10.03 - 18:15:11
Aber Vorsicht Stolperfalle: Die Grössenabfrage des Dokuments funktioniert so lange, wie Du nur EIN RTF im Doc hast. Das mag ja heute so sein.
Und in einem jahr kommt dann jemand und fordert ein zweites RTF für PDFs mit Produktbeschreibungen. Du denkst: "He, kein Problem, ist in einer Minute erledigt!". Denkst aber nicht mehr an die Spaltenformel(n) - und auf einmal haben auch Dokumente ohne Bild, aber mit PDF im neuen Feld das Symbol ...

Kann schiefgehen, muß aber natürlich nicht.
Nur so als Tip am Rande ...

Bernhard