Почему значение свойства документа в параметрах лотоса равно нулю? - PullRequest
1 голос
/ 23 апреля 2020

enter image description here

Содержимое тела не указывается в свойствах документа, а вместо содержимого указан этот символ ""[].
Также в сценарии лотоса окна сообщения отображается null с getItemValue("Body").
Как решить эту проблему?

Sub Click(Source As Button)
    Dim s As NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim col As NotesDocumentCollection

    Set s = New NotesSession
    Set db = s.CurrentDatabase


    Set col = db.UnprocessedDocuments

    Print "Collection Size:"& col.Count
    Set doc = col.GetFirstDocument
    If doc.HasItem("Body") Then
        While Not doc Is Nothing
            Dim body As Variant


            body = doc.GetItemValue("Body")

            Msgbox (body(0))

            Set doc = col.GetNextDocument(doc)
        Wend
    End If
End Sub

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Потому что (обычно) Body - это поле Rich Text, и эти поля обрабатываются по-разному. См. NotesRichTextItem в справке дизайнера.

Начиная с кода:

Set s = New NotesSession
Set db = s.CurrentDatabase


Set col = db.UnprocessedDocuments

Print "Collection Size:"& col.Count
Set doc = col.GetFirstDocument
While Not doc Is Nothing
    Dim body As Variant

    If doc.HasItem("Body") Then
        Set body = doc.GetFirstItem("Body") ' now body contains the richtext item'

        Msgbox body.UnformattedText
    End If
    Set doc = col.GetNextDocument(doc)
Wend

Заметки должны преобразовать элемент MIME в форматированный текст. Если вы хотите иметь дело с типом MIME, вы должны использовать классы NotesMimeHeader и NotesMimeEntity. См. Справочную базу данных, особенно интересны примеры этих классов.

0 голосов
/ 24 апреля 2020

Нельзя просто ссылаться на NotesRichtTextItem так же, как вы ссылаетесь на обычный NotesItem. Поле расширенного текста может содержать графику, таблицы, шрифты, цвета и другие элементы, не являющиеся текстом. Неважно, содержит ли оно эти вещи; это никогда не простой массив строк, поэтому Body (0) не определен. Посмотрите методы класса NotesRichTextItem. Вы найдете один с именем getUnformattedText, который будет возвращать простое текстовое представление значения поля.

(Существуют варианты для получения значения поля как HTML, чтобы вы также могли получить все теги форматирования, но только если поле действительно сохраняется как MIME вместо форматированного текста Notes.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...