Объединить поля форматированного текста (HTML) и отобразить результат в форме доступа - PullRequest
2 голосов
/ 20 апреля 2019

У меня есть база данных доступа, которая имеет дело со «статьями» и «предметами», которые все текстовые. Статья состоит из нескольких пунктов. Каждый элемент имеет поле расширенного текста, и я хочу отобразить текстовое содержание статьи, объединяя все поля расширенного текста ее элементов.

Я написал программу VBA, которая объединяет поля форматированного текста элементов и передает их в независимый элемент управления TextBox в моей форме (Textbox.Text = результирующая строка), но она не работает, я получаю сообщение об ошибке, говорящее «это свойство параметр слишком длинный ". Если я пытаюсь ввести одно текстовое поле в элемент управления Textbox, я получаю еще одну ошибку с указанием «Невозможно обновить набор записей», которую я не понимаю, что это за набор записей?

Каждое поле элемента обычно выглядит примерно так (я использую квадратные скобки вместо «<» и «>», потому что в противном случае сообщение отображается неправильно) [div] [font ...] Content [/ font] [/ div] ", с включенными тегами [em].

Перед моей проблемой у меня есть ряд вопросов:

1) Как передать строку HTML в независимый элемент управления Textbox?

2) Можно ли объединять эти строки HTML или я должен изменить теги, например, иметь только один блок «[div]» вместо нескольких в строке (исключить промежуточные теги div)?

3) Какой элемент управления следует использовать для отображения результата?

Вы вполне можете ответить, что я мог бы также использовать подчиненную форму, отображающую различные элементы, из которых состоит статья. Да, но невозможно иметь переменную высоту для каждого элемента, и чтение всей статьи очень громоздко

Спасибо за любые советы, которые вы можете дать

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Это работает для меня с простой функцией:

Public Function ConcatHtml()

    Dim RS As Recordset
    Dim S As String

    Set RS = CurrentDb.OpenRecordset("tRichtext")
    Do While Not RS.EOF
        ' Visually separate the records, it works with and without this line
        If S <> "" Then S = S & "<br>"

        S = S & RS!rText & vbCrLf
        RS.MoveNext
    Loop
    RS.Close

    ConcatHtml = S

End Function

и несвязанное текстовое поле с источником управления =ConcatHtml().

Screenshot

В вашем случае вам нужно добавить внешний ключ статьи в качестве параметра, чтобы ограничить количество записей элементов, которые вы объединяете.

1 голос
/ 20 апреля 2019

Функция «расширенный текст» текстового поля предназначена только для простого текста.

Мы используем элемент управления веб-браузера для отображения большего объема текста HTML и загружаем его следующим образом:

Private Sub Form_Current()

    LoadWebPreview

End Sub


Private Sub HtmlKode_AfterUpdate()

    LoadWebPreview

End Sub


Private Sub LoadWebPreview()

    ' Let the browser control finish the rendering of its standard content.
    While Me!WebPreview.ReadyState <> acComplete
        DoEvents
    Wend

    ' Avoid the pop-up warning about running scripts.
    Me!WebPreview.Silent = True

    ' Show body as it would be displayed in Outlook.
    Me!WebPreview.Document.body.innerHTML = Me!HtmlBody.Value

End Sub
...