1

在 Access 2010 中,我以某种方式配置了一个前端表单和后端表,允许将“富文本”数据输入到后端数据库中的纯文本字段中。

表格字段定义为文本字段,长度为 255 个字符。当直接查看字段中的数据时,它采用以下形式:<div>&nbsp;P2 &nbsp;&nbsp;</div>这是我对 Access“富文本”字段的期望。

绑定到此表字段的字段是文本格式纯文本 (!) 的文本框。没有与之相关的验证或代码。当我在此字段中输入或编辑文本时,我可以对其应用文本格式。

在许多方面,这非常有用——我有一个长度限制为 255 个字符的富文本字段。但是,排序和过滤显示了底层的 HTML 标记,因此必须禁止,而且我确信还有其他缺点。

但是,我的用户非常喜欢它,以至于他们要求在应用程序的其他地方提供相同的功能......我无法弄清楚我是如何做到的。我怀疑我正在为这个特定的数据尝试备忘字段与纯文本字段,并偶然发现了导致此结果的一系列更改。

我试过剪切粘贴和重命名表格和相应的表单字段来复制它,但没有成功。

我已经广泛搜索了类似情况的描述 - 没有成功。

有没有办法复制我所取得的成就?

4

3 回答 3

2

如果您有一个带有绑定到富文本备忘录字段的文本框的表单,您可以在该文本框上设置验证规则,将其限制为 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";
于 2013-01-02T18:09:26.733 回答
1

您可以使用少量代码来限制字符数。一个例子是:

Private Sub txtText_KeyPress(KeyAscii As Integer)
    If Me.txtText.SelStart >= 254 Then
        KeyAscii = 0
    End If
End Sub

但是,我没有测试富文本的字符数。

于 2013-01-02T15:23:38.507 回答
1

我已经弄清楚了如何配置允许“富文本”数据输入到后端数据库中的纯文本字段的前端表单和后端表。

我将前端数据库链接到测试后端,该后端将相关字段设置为富文本字段,然后创建/编辑相关表单(字段格式为富文本)。然后我将它重新链接到具有完全相同结构的生产数据库,除了后端字段是纯文本。

我不推荐它,但它确实有效。

于 2013-12-02T13:54:52.833 回答