在ms访问中,richtextbox的大小是否有限制?

时间:2010-05-10 06:40:26

标签: ms-access

我正在使用richtext框来连接日志消息。

似乎我收到了一个错误:“此属性的设置太长了”

是否有尺寸限制?

我的代码很简单:我多次打电话:

 Public Function showMessage(MyTxtBox As String, ByVal message As String)

    Dim frm As Form
   On Error GoTo showMessage_Error

    Set frm = Forms.Item("FrmMessage")
    frm(MyTxtBox).Parent.SetFocus
    frm(MyTxtBox).Text = frm(MyTxtBox).Text & message & Chr(13) & Chr(10)

   On Error GoTo 0
   Exit Function

showMessage_Error:

    'MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure showMessage"
    frm(MyTxtBox).Text = ""
    Resume Next

End Function 

我使用MS Access`TextBox选择RichTextBox选项;

如您所见,我已使用

部分解决了问题
frm(MyTxtBox).Text = ""
Resume Next

发生错误但这意味着我将丢失所有先前的消息。

难道这不可思议吗?

更新:表单不应自行关闭,因为它必须始终可见,因为在长处理任务期间多次将日志消息附加到表单(在我的情况下导入多个文件)。

6 个答案:

答案 0 :(得分:2)

我假设你在谈论访问2007和富文本框控件。这里的其他人已经指向c#富文本框,我不会认为ms-access的限制是相同的。此控件对于ms访问是本机的。至于追加新行,您可以使用:

For i = 1 To strLines
   strText = strText & "<br>"
   strText = strText & "<font face=Arial size=5 color=blue>" & _
               "This is comptuer generated " & i & " line of text" & _
               "</font>"
Next i

因此,上面的br就是如何在富文本中添加新行。

至于限制?我不知道你为什么在这里达到极限。访问中的某些功能限制为255个字符。但是,表单上的富文本框应具有相当大的余地。您可能想要提及上下文以及如何使用富文本框。您是在谈论本机访问2007/2010富文本框,还是某些ActiveX或3d派对加载项?

答案 1 :(得分:1)

RichTextbox MaxLength too small。 限制为2147483647个字符。

答案 2 :(得分:1)

您可能希望阅读Peter Duniho的完整答案,这是一个摘录:

  

根据文件,   默认定义的最大长度   RichTextBox的(MaxLength属性)   是Int32.MaxValue(约20亿),   但你以前会耗尽内存   你达到了这个极限(所以实用   限制实际上是多少虚拟   地址空间可用。)

- http://bytes.com/topic/c-sharp/answers/830657-result-richtextbox-appendtext-too-many-characters

答案 3 :(得分:1)

Text属性的setter似乎有2048个字符的限制。 MS Access文本框还具有value属性,可用于设置文本框中的文本,并且没有该限制。从表单中的代码中尝试以下内容:

Me.myTextBox.value = textVariableContainingVeryLongString

很抱歉,如果这对您来说太晚了,但我最近遇到了这个问题,答案可能对阅读此主题的人有价值。

答案 4 :(得分:0)

你没有解释你的代码应该做什么,也没有解释抛出的确切错误,也没有说明代码行。但我只是重写你的代码来修复明显的错误:

  Public Function showMessage(ByVal strMyTxtBox As String, ByVal strMessage As String) As Boolean
    On Error GoTo showMessage_Error
    Dim frm As Form

    Set frm = Forms!FrmMessage
    DoCmd.SelectObject acForm, "FrmMessage", False 
    frm(strMyTxtBox) = frm(strMyTxtBox) & strMessage & vbCrLf
    showMessage = True

  exitRoutine:
    Set frm = Nothing
    Exit Function

  showMessage_Error:
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in function showMessage"
    Resume exitRoutine
  End Function

我会做很多不同的事情,但这会清理你所拥有的代码,以便它不再有任何错误(据我所知)。

编辑:

如果我正在编写子程序来更新带有消息的表单上的控件,那么我就是这样实现的:

  Public Sub AppendToControl(ByRef ctl As Control, ByVal varAppendValue, Optional ByVal bolScrollToEnd As Boolean = False)
    Dim varNewValue As Variant

    varNewValue = Mid(("12" + ctl) & (vbCrLf + varAppendValue), 3)
    ctl = varNewValue
    If bolScrollToEnd Then
       ctl.SelStart = Len(ctl.Text & vbNullString)
    End If
  End Sub

你可以添加一个错误处理程序,但我不确定它的用途是什么,因为传递错误输出的有效参数几乎是不可能的。具体来说,原始控件可以为Null,传递的消息可以为Null,并且不会导致错误。它也永远不会有尾随换行符,因为代码的最后一条消息就是。

无论如何,你打电话给:

调用AppendToControl(MyForm!MyControl,“这是消息”,True)

我不会将SelectObject代码放在子程序本身中,因为它对我来说似乎不合适。无论如何,我不确定这是必要的还是可取的。

答案 5 :(得分:0)

我遇到了同样的问题。在文本框中发生此类错误时,请使用属性 .Value 而不是.Text。 在你的情况下,而不是:

frm(MyTxtBox).Text = frm(MyTxtBox).Text & message & Chr(13) & Chr(10)

使用:

frm.Controls("MyTxtBox").Value=frm.Controls("MyTxtBox").Value & message & Chr(13) & Chr(10)