Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Centaury am 07.01.03 - 12:53:35

Titel: Abfrage: RTF leer?
Beitrag von: Centaury am 07.01.03 - 12:53:35
Hallo!
Wie kann ich in der Formelsprache (!) ermitteln, ob ein RTF (nicht) leer ist? Mit Feld != "" klappt's nicht.
Ist für die Ansichtsauswahl, es sollen alle Dokumente angezeigt werden, in denen eine Problemlösung angegeben ist (also bei denen das RTF nicht leer ist).
Danke schonmal!
Titel: Re:Abfrage: RTF leer?
Beitrag von: forrest g am 07.01.03 - 19:10:53
hi Centaury

zu deiner form solltest du ein berechnetes feld ANZAHLATTACH vom typ number hinzufügen mitder formel @attachments
(für neue dokumente klappt das sofort, die alten dokumente müssen dann neu gespeichert werden)
in diesem feld wird dann gespeichert, wie viele attachments dieses dokument besitzt

dieses feld wird dann abgeprüft.
in der ansichtauswahl deiner view solltest du dann folgende formel verwenden:
SELECT form = "Deine Form" & ANZAHLATTACH != 0
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 08.01.03 - 08:37:35
Wird dann auch erkannt, wenn nur Text im RTF steht? Es geht mir darum, dass ich in dem RTF sowohl Text, als auch z. B. Screenshots anspeichern kann und dann erkannt wird, ob da irgendetwas drinsteht.
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 08.01.03 - 08:41:27
 :) Jo, funktioniert. Danke!!
Titel: Re:Abfrage: RTF leer?
Beitrag von: F_Goto_Notes am 08.01.03 - 09:35:32
Und was mache ich , wenn ich mehr als ein RichText- Feld in meiner Maske habe und ich ein bestimmtes davon abfragen möchte ?
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 08.01.03 - 15:53:32
Komisch...heute geht's nicht mehr. Ich hab zwar an der DB weitergearbeitet, aber nicht in der Ansicht. ???
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 07:32:40
Geht das noch anders, als mit @Attachments, weil Text ist ja nicht direkt ein Attachment. Der Feldwert von AnzahlAttach ist immer 0.
Titel: Re:Abfrage: RTF leer?
Beitrag von: eknori am 10.01.03 - 07:44:25
Da habe ich mir auch die Finger dran gebrochen. Ich hatte auch die Aufgabe, in einer Ansicht ein Symbol anzuzeigen, wenn zu einem Artikel in einem RTF Feld eine Bemerkung gemacht wurde.
Direkt auf das RTF in einer Ansicht mit @Abstract zuzugreifen funktioniert nicht.

Ich habe dann in die Maske ein berechnetes TEXT feld mit folgender Formel eingefügt

REM "Captures the first 125 chars of the BEMERKUNG field.";
@Abstract( [TextOnly] ; 125 ;"" ; "Bemerkung" )

In der Ansicht frage ich dann mit

@If(BodyFirstChars="";"";11)

den Status des berechneten Feldes ab und zeige ein Symbol an, wenn das Feld einen Inhalt hat.

eknori
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 08:23:41
In der Hilfe steht zu @Abstract, dass RTFs erst nach dem Speichern ein Bestandteil des Docs sind. Wie kann ich denn nach dem Speichern das Feld neu berechnen?
Titel: Re:Abfrage: RTF leer?
Beitrag von: eknori am 10.01.03 - 08:26:57
wieso ?? das RTF Feld ist doch vorhanden.
Setze das berechnete TEXTFELD mit der @Abstrct Formel an das Ende der Maske und alles wird gut  ;D
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 08:33:26
Zitat
Wenn Notes/Domino ein Feld nicht nach Namen finden kann, wird statt dessen das Zeichenfolgenliteral verwendet.

Und genau das hat er gemacht. Das Feld heißt "Lösung" und in BodyFirstChars steht "Lösung". Auch wenn Lösung nicht leer ist... ???
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 08:56:46
Schließt das eigentlich trotzdem eingebettete Bilder ein?
Titel: Re:Abfrage: RTF leer?
Beitrag von: Rob Green am 10.01.03 - 09:09:28
dann solltest Du das hier verwenden,
im POSTSAVE Event der Maske:

...Fokus auf Doc...
Dim rtitem As Variant
   Dim plainText As String
   Dim fileNum As Integer
   Dim laenge As Integer
   Dim laenge1 As Integer
   
   Set rtitem = doc.GetFirstItem( "Body" )
   If ( rtitem.Type = RICHTEXT ) Then
      plainText = rtitem.GetFormattedText( True, 0 )
      laenge = Len(plainText$)
      laenge1 = rtitem.valuelength
.....
...zB "doc.FIELD_ABC="Inhalt vorhanden"...
   End If      
   Msgbox "Nur Text" & Cstr(laenge) & "   Mit Value:" & Cstr(laenge1)

Wenn Valuelength = 96 Byte ist, ist ein Body Feld LEER.
Wenn ValueLength >96 Byte ist, ist ein Body Feld nicht LEER, egal was drin ist (siehe oben Variable "laenge1").

Wenn es nur um Text geht, dann bitte GetFormatedText nehmen und Länge ausrechnen lassen. Wenn Nix dann 0 Byte, sonst >0 Byte (oben die Variable "laenge")
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 09:11:31
*Kopfauftastaturhau*
Ich bin so blöd! Das Feld hieß WLösung!  :-[ ::)
Jetzt geht's soweit, aber leider wird's nicht erkannt, wenn ich z.B. einen Screenshot einfüge.
Titel: Re:Abfrage: RTF leer?
Beitrag von: Rob Green am 10.01.03 - 09:13:36
nix mit Formelsprache...
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 09:17:04
Was tun? In der Ansichtsauswahl kann man nicht mit Script arbeiten.
Titel: Re:Abfrage: RTF leer?
Beitrag von: Rob Green am 10.01.03 - 09:20:44
im vorigen Posting habe ich es bereits erklärt.
Snippet ins PostSave Event rein.

Wenn Du kein LS kannst, dann geht es eben nicht.
Titel: Re:Abfrage: RTF leer?
Beitrag von: Centaury am 10.01.03 - 10:47:52
Danke, das funktioniert! Ich habe aus laenge noch einen Long gemacht, weil ich sonst Overflows hatte. Hier mein kompletter Quelltext:

Code
Sub Postsave(Source As Notesuidocument)
   Dim doc    As NotesDocument
   Dim rtitem As Variant
   Dim laenge As Long
   
   Set doc = source.document
   Set rtitem = doc.GetFirstItem( "WLösung" )
   
   If ( rtitem.Type = RICHTEXT ) Then
      laenge = rtitem.valuelength
   End If
   
   If laenge > 96 Then
      doc.WLösungGefüllt = 1
   Else
      doc.WLösungGefüllt = 0
   End If
   Call doc.save(False, False)
End Sub

Dann hab ich in der Ansichtsauswahl nur noch abgefragt, ob WLösungGefüllt = 1.

Danke an alle für die Hilfe!