我需要对MS Access中的报表中的字段使用富文本格式,以便使用字符间距。在报告中,尝试将字段属性中的文本格式从纯文本更改为富文本生成错误:“您输入的设置对此属性无效。”我认为这是因为该字段不是备忘录数据类型,(显然是唯一支持RTF的数据类型)。它的格式为“ XXXX_XXXX ”,其中*和_是文字字符,X代表数字0到9。
对于上下文:此DB的工作流程是它有一个表单,在指定Id时,查询链接表,根据查询结果生成报表,并将其输出到PDF。
字段的控制源是查询结果中的字段。
一切正常但我需要能够将此字段设置为RTF。字体是TrueType字体,如果这有任何区别。基本上我想在场上有一个固定的高度,并在宽度上水平拉伸。即在CSS中,它大致定义为“max-height:30px; width:100%;”
我尝试过的事情:
在“查询设计视图”中,将字段的文本格式设置为富文本格式。在报表设计视图中设置字段的文本格式时,仍然会收到错误。
其他想法是显式地将字段转换为Memo数据类型(任何超过255的内容都会隐式转换为此类型),但我不确定如何在SQl中执行此操作[MS SQL Server我们将使用类似CONVERT的内容( [fieldname],text)]
创建自定义格式会有帮助吗?我想象的不是因为它仍然是纯文本。
提前感谢您的任何帮助和评论。
答案 0 :(得分:3)
除非基础列是富文本列(备忘录),否则无法将BOUND文本框更改为富文本格式。但是,一个简单的解决方法是在报表上放置一个未绑定的文本框。只需在属性表中将文本设置为富文本(同样,无需使用代码来尝试更改此值)。一旦你在表单上放置了文本框,然后在表格“detail-format”中为每条记录触发,你可以在代码中去:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Me.MyTextBox = "<div><font face=Arial size=4 color=Blue>" & _
"<strong>My Blue Bold Text</strong></font></div>"
End Sub
因此,您可以从上面代码中的其他列中提取值,但请记住,报告必须有相应的绑定控件来引用任何列,其中表单没有此要求
答案 1 :(得分:2)
只是为了解决您提出的一个想法:
其他想法是明确转换 字段到备注数据类型(任何东西 超过255隐式转换为 这种类型),但我不知道如何 在SQl中做到这一点[MS SQL Server我们 会使用类似的东西 CONVERT([fieldname],text)]
遗憾的是,Access数据库引擎不支持标准SQL的CAST()
功能:(
因为Access数据库引擎与VBA5库共享一个表达式服务(为什么不是VBA6? - 谁知道?!),它可以使用大多数VBA强制转换函数,但遗憾的是数据类型之间的映射并不好。唯一相关的函数是CStr()
(强制转换为String
),但其结果如何强制转换为各种Access数据库引擎文本数据类型(可变长度VARCHAR
,固定长度CHAR
,有或没有Unicode压缩,MEMO
)遗憾地没有记录。
有一个例外:Access数据库引擎有自己的CDEC()
(强制转换为DECIMAL
)函数,但遗憾的是它一直是completely broken。
答案 2 :(得分:-3)
尝试将文本字段设为表格中的最后一个字段。我似乎记得某个地方每个表只能有一个备忘录字段,备忘录字段必须是最后一个字段。