Supportnet Computer
Planet of Tech

Supportnet / Forum / SW-Sonstige

In Lotus Notes herausfinden, ob Bitmap in Richtext-Feld eingestellt ist...





Frage

Hallo, ich möchte in Notes 4.6 herausfinden, ob in einem bestimmten Richtext-Feld eine Bitmap (Über "Erstellen" -> "Bild") eingestellt wurde. Diese Auswertung soll mir dazu verhelfen, in einer Ansicht diejenigen Dokumente zu markieren, bei denen eben ein Bild eingestellt ist. Es handelt sich aber um keinen Anhang, sondern tatsächlich um ein Bild. Vielen Dank schonmal... Gruß Frank

Antwort 1 von Sunnylein

hi,

das besagtes rich text feld: kann da auch anderer inhalt drin sein - außer einem bild - also bespielsweise auch zusätzlicher text?
falls ja, wird es nicht so einfach, diese ansichts-auswertung, die du vorhast, zu machen. wahrscheinlich kommst du dann um eine script-programmierung nicht drum herum.

einfach würde es, wenn du ein rich text-feld nur für das bild hast. dann reicht eine abfrage darauf, ob das feld leer ist oder nicht.

außerdem wäre noch zu bedenken, ob es dir wirklich wichtig ist, daß das bild eine bitmap sein muß (und kein jpg- oder gif-format z. b.)... auch das würde die sache etwas komplizierter machen und wohl nur über ein ln-script umzusetzen sein.

eine idee/anderer vorschlag wäre:
kannst du in deine maske nicht einfach ein zusätzliches feld (z. b. schlüsselwortliste: ja/nein) einbauen, das meinetwegen defaultmäßig auf 'nein' steht und das beim importieren eines bildes vom anwender auf 'ja gesetzt' wird?

so long
sunnylein

Antwort 2 von Tachman

Danke erstmal, funktioniert nur leider nicht so wie Du das beschrieben hast. Erstmal ist das Richtext-Feld exclusiv für die Bitmap (wobei Bitmap hier stellvertretend für alle erlaubten Grafikformate steht) reserviert. Eine Abfrage á la @If(RichTextFeld = ""; x ; y) funktioniert leider nicht - er gibt immer false (also nicht leer) aus. Weiß aber nicht, ob es mit Script besser geht - will es aber wg. des Aufwandes auch erst versuchen, wenn mir jemand bestätigt, daß das Feld so erfolgreich abgefragt werden kann.

Gruß
FW

Antwort 3 von Sunnylein

hi,

bin schon halb auf dem weg nach hause, aber vielleicht kann ich mich morgen weiter in das problem hineindenken.

wenn das feld also entweder leer ist oder einen (bild-)inhalt hat, gibt es ja nur zwei 'zustände'. demnach wäre die von dir genannte @if-abfrage korrekt.

kannst du mir noch etwas näher beschreiben, was für aktionen du dir für x und y vorstellst?

nach deinen bisherigen erklärungen gehe ich davon aus, daß du in der ansicht eine spalte mit einem symbol (büroklammer oder ähnl.) stehen haben möchtest, sobald ein bild vorhanden ist... stimmt das?
oder willst du eine ansicht basteln, in der nur dokumente, die auch bilder enthalten, aufgelistet werden?

in dem ersten fall brauchst du eine formel für den spaltenwert im letzten fall eine ansichtsauswahl-formel (ala select richtextfield =! "")

so long
sunnylein

Antwort 4 von Tachman

Danke nochmal für Deine Unterstützung.

Es soll eine Ansicht wie von Dir beschrieben "mit Büroklammersymbol" angezeigt werden.

Die @If-Abfrage ist in einem berechneten "Hilfs"-Textfeld, welches je nach dem, ob im RichTextFeld ein Bild enthalten ist, einen von zwei möglichen Zuständen annehmen soll, also "Ja" oder "Nein". Dieser Umweg ist notwendig, da RichText-Felder in Ansichtsspalten ja nicht ausgewertet werden können. Aber es funktioniert eben bei mir nicht so.

Gruß
FW

Antwort 5 von Sunnylein

ok, hab' ich verstanden.
bin jetzt zu hause und dementsprechend derzeit ln-los ;-).
ich probiere das morgen an einer test-datenbank mal aus, ok?
wenn ich mich als zu vergesslich erweise, schreib' mir 'ne mail (dragon_fly@gmx.de)...

schönen abend erstmal noch

Antwort 6 von logic

Hi,

hab das jetzt nur mal überflogen...

Also wenn ich es richtig verstanden hab:

Mach Dir in der Ansicht doch ne Spalte und füge folgende Formel hinzu:

@If(@TextToNumber(@Version) > 122;

    @If(@IsAvailable(_ViewIcon2); _ViewIcon2;
    @IsDocTruncated;
        30;
    @IsAvailable($ContentIcon);
        $ContentIcon;
    (@Contains(@LowerCase(From); " pager ") | @Contains(@LowerCase(SendTo); " pager "));
         46;
    @Attachments;
        @If(@Contains(@LowerCase(@AttachmentNames); "message.wav" : "vmsg_hdr.wav");
            44;
        @Contains(@LowerCase(@AttachmentNames); ".wav":".mp3");
            15;
        @Contains(@LowerCase(@AttachmentNames); ".tif":".tiff":".jpg":".bmp":".gif":".cdr":".cpt");
            13;
        @Contains(@LowerCase(@AttachmentNames); ".mpg":".mpeg":"divx":".avi":".mov":".swf");
            139;
        @Contains(@LowerCase(@AttachmentNames); ".xls");
            141;
        @Contains(@LowerCase(@AttachmentNames); ".doc");
            142;
        @Contains(@LowerCase(@AttachmentNames); ".ppt":"pps");
            143;
        @Contains(@LowerCase(@AttachmentNames); "wk3");
            135;
        @Contains(@LowerCase(@AttachmentNames); "lwp");
            136;


         @Contains(@LowerCase(@AttachmentNames); ".exe");
             93;
        @Contains(@LowerCase(@AttachmentNames); ".vsd");
           145;
        @Contains(@LowerCase(@AttachmentNames); ".txt");
             21;
        @Contains(@LowerCase(@AttachmentNames); ".nsf":".ntf":"mdb");
             51;
         @Contains(@LowerCase(@AttachmentNames); ".id");
              3;
          5);
     0);
@IsAvailable($ContentIcon); $ContentIcon; @Attachments; 5; 0)


Kannst ja Teile davon anpassen

Logic


Antwort 7 von sunnylein

uhm...
...scheint mir ein wenig wie mit kanonen auf spatzen geschossen, diese formel. ich kann mir denken, dass das auch einfacher geht (mal abgesehen davon, daß es hier nicht um attachments, sondern um embedded objects geht, wenn mich nicht alles täuscht ;-).

aber wer weiss... vielleicht reicht tachman diese formel-anregung bereits?
falls ja, gib' einfach laut, dann könnt' ich mir's ausprobieren morgen sparen *g*.

Antwort 8 von logic

Hab mir nun doch den Thread mal genauer durchgelesen.

Also:
1) Mach ein berechnetes Textfeld in der Maske:
@If(INHALT = ""; ""; "Bild")

2) Dann in der Spalte die Formel
@If (TEST = ""; ""; 13)


Falls das immer noch nicht geht, könnte es sein, dass in den Feldern - obwohl sie leer erscheinen - noch "kaputte" Inhalte drin sind.

Bei diesen Dokumenten am besten über einen Agenten mit "FIELD Feldname = @Unavailable" bearbeiten.

Logic


Antwort 9 von Tachman

Danke sunnylein + logic,

genau wie in Logic's 2. (kurzer) Formel beschrieben habe ich es gemacht (siehe mein Posting dazu weiter oben). Also mit berechnetem Hilfstextfeld. Das nützte allerdings leider überhaupt nix. Und "kaputte Inhalte" können in diesen Feldern definitiv nicht drinn sein, da sie außer für den Zweck der Bilddarstellung für nichts weiter da sind und seit Dokumentenerstellung leer sind.

FW

Antwort 10 von sunnylein

wenn die maske schon 'älter' ist - d. h. es befinden sich schon docs in der datenbank, die mit einer älteren version der maske erstellt wurden - kannst du es mal mit dem command-befehl "ToolsRefreshAllDocuments" (Syntax hab ich nicht im kopf, sorry, schau mal in der hilfe nach ;-) versuchen. denn in den bestehenden dokumenten fehlt ja deine neue feldberechnung... manchmal hilft das auch schon weiter.
ansonsten vertröste ich dich nochmal auf morgen.

Antwort 11 von Sunnylein

hi again...

also, ich hab' mich jetzt mal knapp eine stunde in die sache vertieft:

bilder etc. können bekanntlich nur in richtextfelder eingefügt werden.
die abfrage, ob ein richtextfeld gefüllt oder leer ist, funktioniert allerdings offenbar NICHT über eine einfache formelabfrage (über @if).
folglich kommst du um eine script-programmierung vermutlich nicht herum.

ich habe bislang keine wirklich funktionierende lösung für dich gefunden und habe momentan auch leider jetzt keine zeit mehr, mich intensiver damit zu befassen, sorry.

ich will dir aber wenigstens den ansatz geben, den ich verfolgt habe, und vielleicht hilft dir das ja auch schon etwas weiter.

meine testmaske hat zwei felder.
picture = richtextfeld
flagfield = das kontrollfeld (einfacher, bearbeitbares textfeld)

in den postsave-event der maske habe ich folgendes script eingebaut:

Sub Postsave (Source As Notesuidocument)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

If doc.HasEmbedded Then
doc.flagfield="bild vorhanden"
Else
doc.flagfield="kein bild"
End If
Call doc.save(True, False)
End Sub

ok, und die ansicht hat eine berechnete spalte (option "werte als symbole" ankreuzen). über die formel

@If (flagfield = "kein bild"; NULL; flagfield = "bild vorhanden"; 5; NULL)

bekommst du das büroklammersymbol angezeigt, sobald das flagfield entsprechend mit dem wert "bild vorhanden" gefüllt ist.

das ganze funktioniert hervorragend, wenn man in das richtext-feld einen ANHANG einstellt. leider klappt es nicht, wenn man das bild 'nur' importiert - was ja genau das ist, was du haben wolltest.
keine ahnung, wieso er das image nicht als embedded object erkennt...

sorry, aber ich geb' an dieser stelle fürs erste auf ;-).

so long
sunnylein

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: