Access 2010 中有限长度文本字段的富文本输入
Posted
技术标签:
【中文标题】Access 2010 中有限长度文本字段的富文本输入【英文标题】:Rich text input into limited length text field in Access 2010 【发布时间】:2013-01-02 15:05:44 【问题描述】:在 Access 2010 中,我以某种方式配置了一个前端表单和后端表,允许将“富文本”数据输入到后端数据库中的纯文本字段中。
表格字段定义为文本字段,长度为 255 个字符。当直接查看字段中的数据时,它采用以下形式:<div>&nbsp;P2 &nbsp;&nbsp;</div>
,这是我对 Access“富文本”字段的期望。
绑定到此表字段的字段是文本格式纯文本 (!) 的文本框。没有与之相关的验证或代码。当我在此字段中输入或编辑文本时,我可以对其应用文本格式。
在许多方面,这非常有用——我有一个长度限制为 255 个字符的富文本字段。但是,排序和过滤显示了底层的 html 标记,因此必须禁止,而且我敢肯定还有其他缺点。
但是,我的用户非常喜欢它,以至于他们要求在应用程序的其他地方提供相同的功能......我不知道我是如何做到的。我怀疑我正在尝试针对这一特定数据块的备注字段与纯文本字段,并偶然发现导致此结果的一系列更改。
我试过剪切粘贴和重命名表格和相应的表单字段来复制它,但没有成功。
我已经在谷歌上广泛搜索了类似情况的描述——没有成功。
有没有办法复制我已经取得的成就?
【问题讨论】:
MemoField
可以取rich text
.. 您能否再次确认您要在文本字段中插入富文本?
@bonCodigo,我想要一个长度有限的富文本字段——要么是一个限制为(例如)50 个字符的备忘录字段,要么是一个 50 个字符长的文本字段,它接受并显示富文本.
【参考方案1】:
如果您有一个带有绑定到富文本备注字段的文本框的表单,您可以在该文本框上设置验证规则,将其限制为 50 个字符或更少。
但是,长度限制将基于所有字符的总数......不仅是显示的字符,还包括标记标签字符。从即时窗口查看此示例:
? DLookup("memo_field", "tblFoo", "id =1")
<div>a <strong>b </strong>c</div>
? Len(DLookup("memo_field", "tblFoo", "id =1"))
33
如果要从长度限制中排除标记字符,请使用PlainText()
函数:
? PlainText(DLookup("memo_field", "tblFoo", "id =1"))
a b c
? Len(PlainText(DLookup("memo_field", "tblFoo", "id =1")))
5
在这种情况下,验证规则属性可能是这样的:
=(Len(PlainText([txtMemo_field]))<=50)
当您在该备注字段上使用过滤条件查询源数据时,将评估所有存储的字符(包括标记标签)。如果您希望过滤条件忽略标记标签,请使用PlainText()
函数:
SELECT *
FROM YourTable
WHERE PlainText(memo_field) = "a b c";
【讨论】:
【参考方案2】:您可以使用少量代码来限制字符数。一个例子是:
Private Sub txtText_KeyPress(KeyAscii As Integer)
If Me.txtText.SelStart >= 254 Then
KeyAscii = 0
End If
End Sub
但是,我没有测试富文本的字符数。
【讨论】:
【参考方案3】:我已经弄清楚了如何配置前端表单和后端表,以允许将“富文本”数据输入到后端数据库中的纯文本字段中。
我将前端数据库链接到测试后端,该后端将相关字段设置为富文本字段,然后创建/编辑相关表单(字段格式为富文本)。然后我将它重新链接到具有完全相同结构的生产数据库,除了后端字段是纯文本。
我不推荐它,但它确实有效。
【讨论】:
以上是关于Access 2010 中有限长度文本字段的富文本输入的主要内容,如果未能解决你的问题,请参考以下文章
在 Excel 中显示 MS-Access 记录的富文本格式
如何在 Devexpress 控件的富文本编辑器中添加自定义邮件合并字段