MS Access将函数转换为备注数据类型

时间:2009-11-04 22:18:28

标签: sql ms-access formatting ms-access-2007 rtf

我需要对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)]

创建自定义格式会有帮助吗?我想象的不是因为它仍然是纯文本。

提前感谢您的任何帮助和评论。

3 个答案:

答案 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)

尝试将文本字段设为表格中的最后一个字段。我似乎记得某个地方每个表只能有一个备忘录字段,备忘录字段必须是最后一个字段。