连接富文本字段(HTML)并在Access表单上显示结果

时间:2019-04-20 07:23:58

标签: vba ms-access access-vba richtext

我有一个访问数据库,该数据库处理的都是“文字”和“物品”。一篇文章由几个项目组成。每个项目都有一个RTF字段,我希望通过将项目的所有RTF字段串联起来来显示文章的文本内容。

我编写了一个VBA程序,该程序将项目富文本字段连接起来并将其馈送到表单上的独立TextBox控件中(Textbox.Text =结果字符串),但是它不起作用,我收到一条错误消息,提示“此属性参数太长”。 如果我尝试将单个文本字段输入到Textbox控件中,则会收到另一个错误消息,提示“无法更新记录集”,我不理解,这是关于什么记录集的?

每个项目字段通常是这样的(我使用方括号而不是“ <”和“>”,因为否则该帖子的显示不正确)[div] [font ...] Content [/ font] [/ div]”,还包括“ [em]”标签。

在我遇到问题之前,我有很多问题:

1)如何将HTML字符串输入到独立的Textbox控件中?

2)是否可以串联这些HTML字符串,还是应该修改标签,例如,只有一个“ [div]”块,而不是连续几个(禁止中间div标签)?

3)我应该使用什么控件来显示结果?

您可能会回答说,我也可能会使用一个子窗体来显示构成文章的不同项目。是的,但是每个物品的高度都不可能可变,而且整篇文章的阅读都非常麻烦

感谢您提供的任何建议

2 个答案:

答案 0 :(得分:1)

文本框的“富文本”功能仅适用于简单文本。

我们使用网络浏览器控件来显示大量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

答案 1 :(得分:1)

它对我有用,功能很简单:

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

在这种情况下,您必须添加文章外键作为参数以限制所连接的项目记录。