【问题标题】:Concatenate Rich Text Fields (HTML) and display result on Access form连接富文本字段 (HTML) 并在 Access 表单上显示结果
【发布时间】:2019-04-20 07:23:57
【问题描述】:

我有一个访问数据库,它处理所有文本内容的“文章”和“项目”。一篇文章由几个项目组成。每个项目都有一个富文本字段,我希望通过连接其项目的所有富文本字段来显示文章的文本内容。

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

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

在我的问题面前,我有几个问题:

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

2) 可以连接这些 HTML 字符串还是应该修改标签,例如只有一个“[div]”块而不是一行中的几个(抑制中间 div 标签)?

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

您可能会回答,我不妨使用一个子表单来显示组成文章的不同项目。可以,但是不可能每个item都有一个可变的高度,整篇文章的阅读很麻烦

感谢您提供的任何建议

【问题讨论】:

    标签: ms-access vba richtext


    【解决方案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()的未绑定文本框。

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

    【讨论】:

    • 如果答案解决了您的问题,您可以accept它,这也标志着问题已解决。 @让-玛丽
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您提供此代码。我还没有测试它,因为 Andre 的解决方案很完美,但我知道如果需要我还有另一个解决方案可以恢复
    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2016-11-26
    相关资源
    最近更新 更多