在Access 2010中,我以某种方式配置了一个前端表单和后端表,允许将“富文本”数据输入到后端数据库中的纯文本字段中。
表字段定义为文本字段,长度为255个字符。当直接查看字段中的数据时,它采用以下形式:<div> P2 </div>
,这是我对Access“富文本”字段的期望。
绑定到此表字段的字段是带有文本格式纯文本(!)的文本框。没有与之关联的验证或代码。当我在此字段中输入或编辑文本时,我可以对其应用文本格式。
在很多方面,这非常有用 - 我有一个富文本字段,长度限制为255个字符。但是,排序和过滤显示了基础HTML标记,因此必须禁止,并且我确定还有其他缺点。
然而,我的用户非常喜欢他们在应用程序的其他地方要求相同的功能......我无法理解我是如何做到的。我怀疑我正在尝试使用备注字段与普通文本字段来处理这一特定数据,并偶然发现导致此结果的一系列更改。
我尝试过剪切粘贴并重命名表格和相应的表单字段以复制它而没有成功。
我已经广泛搜索了类似情况的描述 - 没有成功。
有没有办法复制我所取得的成就?
答案 0 :(得分: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";
答案 1 :(得分:1)
您可以使用少量代码限制字符数。一个例子是:
Private Sub txtText_KeyPress(KeyAscii As Integer)
If Me.txtText.SelStart >= 254 Then
KeyAscii = 0
End If
End Sub
但是,我还没有测试富文本字符的数量。
答案 2 :(得分:1)
我已经弄清楚如何配置前端表单和后端表,允许“富文本”数据输入到后端数据库中的纯文本字段。
我将前端数据库链接到测试后端,该测试后端将相关字段设置为富文本字段,然后创建/编辑相关表单(字段格式为富文本格式)。然后我将它重新链接到具有完全相同结构的生产数据库,除了后端字段是纯文本。
我不推荐它,但确实有用。