Einzelnen Zeilenumbruch in Textfeld (NICHT Richtext) mit LotusScript auslesen

  • Leider habe ich über die SuFu hier im Forum nichts hilfreiches gefunden. Aber irgendetwas mache ich bestimmt falsch...


    Ich habe hier eine Datenbank, bei der existiert in einem Dokument in einem normalen Textfeld ein einzelner Zeilenumbruch, nicht mehr und nicht weniger.
    Ich lese dieses Feld mit

    Code
    doc.GetItemValue("Source_Field_Name")(0)

    in Lotusscript aus und bekomme einen Leerstring im Debugger angezeigt (?!???).
    Seltsamerweise wird das Dokument in einer View mit der Selection SELECT @Length(Source_Field_Name) > 0 aber angezeigt, also muss es doch einen Wert haben...


    Ich habe eine Funktion gebaut, die bestimmte Zeichen in einem String ersetzt, so auch CrLf (Chr(10) und Chr(13)).
    Diese Funkltion habe ich als Beispiel modifiziert und hier eingefügt:



    Ändere ich den Feldwert über das UI in der Maske in z.B. "1" & CrLf & "2", also "1", Zeilenumbruch und dann "2" so liefert mir diese Funktion den Wert
    "1[Line Feed Return][Carriage Return]2" korrekt zurück, wenn ich den Feldinhalt an diese Funktion übergebe.


    Befindet sich in dem Feld aber nur der Zeilenumbruch, so bekomme ich einen Leerstring (wird lt. Debugger auch nur ausgelesen), und nicht wie erwartet "[Line Feed Return][Carriage Return]" zurück.


    Ich entwickle mit dem Designer Release 8.5.3FP3


    Hat jemand eine Idee wie ich den Feldwert korrekt auslesen muss, damit ich keinen Leerstring erhalte? ?(

    • Offizieller Beitrag

    mach mal noch einen Fulltrim, vor der Rückgabe des Strings.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • mach mal noch einen Fulltrim, vor der Rückgabe des Strings.

    Danke für den Tipp, das hilft aber leider auch nichts.
    Bereits beim GetItemValue("Source_Field_Name")(0) wird ein Leerstring ausgelesen, sodass

    Code
    Source_Value = doc.GetItemValue("Source_Field_Name")(0)
    If Len(Source_Value) > 0 Then

    nicht betreten sondern übersprungen wird.
    Schaue ich mir das betreffende Item des doc aber im Debugger an fällt auf, dass es eine VALUELENGTH von 3 hat.
    Andere leere Felder in dem Dokument haben eine VALUELENGTH von 2.
    Irgendetwas steht da also drin, was beim GetItemValue nicht ausgelesen wird oder ich lese es falsch aus.
    Das Item hat auch nur einen Value "[0]" welcher im Debugger als Leerstring angezeigt wird.

  • Das war leider auch erfolglos.

    Code
    Dim doc As NotesDocument
    Dim docItem As NotesItem
    .
    .
    .
    Set docItem = doc.GetFirstItem( Source_Field_Name )
    Source_Value = Trim(docItem.Text)
    Source_Value_Length = Len(Source_Value)


    Source_Value ist immer noch ein Leerstring und
    Source_Value_Length ist immer noch 0.

    • Offizieller Beitrag

    habe es mal schnell nachprogrammiert und siehe da scheint so zu sein, wie du es bsschreibst.


    Im UiDoc steht in dem Feld nur ein Zeilenumbruch der Debugger zeigt mir bei item.Values(0) und item.Text einen leeren String an. nur die ValueLength zeigt eine 7 (FeldTyp 1280).


    Mit der ValueLength habe ich schon meine Erfahrung machen dürfen, weil von Version zu Version diese bei eimem leeren Feld anders sein kann.


    Mit @Function sollte es mit einem @Replace und einem @NewLine gehen - ungetestet, ob dies bei Feldern, die nur einen Zeilenumbruch enthalten, auch funktioniert.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Erst einmal vielen Dank Diali für Deine Hilfeversuche.


    Ich habe das eine Dokument, welches mir im Agent deswegen durch die Lappen ging, nun manuell korrigiert.


    Zumindest bin ich (bzw. sind wir ;)) nun um eine Erfahrung reicher geworden ;)

  • Bei mir geht das recht einfach mit einem Fulltrim(it.Values(0)).
    Vorausgesetzt, man weist diesen getrimten Wert auch dem Feld wieder zu