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> P2   </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 控件的富文本编辑器中添加自定义邮件合并字段

MS Access 报告 - 字符处换行?

从文本框表单中将多行插入到单个表中 - Access 2010

MS Access 2010 上的可编辑文本框 - 行为正确吗?