我有一个访问数据库,该数据库处理的都是“文字”和“物品”。一篇文章由几个项目组成。每个项目都有一个RTF字段,我希望通过将项目的所有RTF字段串联起来来显示文章的文本内容。
我编写了一个VBA程序,该程序将项目富文本字段连接起来并将其馈送到表单上的独立TextBox控件中(Textbox.Text =结果字符串),但是它不起作用,我收到一条错误消息,提示“此属性参数太长”。 如果我尝试将单个文本字段输入到Textbox控件中,则会收到另一个错误消息,提示“无法更新记录集”,我不理解,这是关于什么记录集的?
每个项目字段通常是这样的(我使用方括号而不是“ <”和“>”,因为否则该帖子的显示不正确)[div] [font ...] Content [/ font] [/ div]”,还包括“ [em]”标签。
在我遇到问题之前,我有很多问题:
1)如何将HTML字符串输入到独立的Textbox控件中?
2)是否可以串联这些HTML字符串,还是应该修改标签,例如,只有一个“ [div]”块,而不是连续几个(禁止中间div标签)?
3)我应该使用什么控件来显示结果?
您可能会回答说,我也可能会使用一个子窗体来显示构成文章的不同项目。是的,但是每个物品的高度都不可能可变,而且整篇文章的阅读都非常麻烦
感谢您提供的任何建议
答案 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()
的未绑定文本框。
在这种情况下,您必须添加文章外键作为参数以限制所连接的项目记录。