MS Access报表打印预览及打印时RTF文本被截断问题求助
Access报表RTF长文本自动伸缩显示问题解决
问题背景
报表中绑定LONG TEXT类型的RTF格式字段,仅通过查询获取数据未做处理。已开启Detail节和目标文本框的Can Grow/Can Shrink属性,但文本始终无法完整显示;关闭自动伸缩并调大文本框尺寸可显示完整,但会产生大量冗余空白。
已确认以下情况:
- 报表尺寸小于页面边距内的可用空间
- 无法修改文本框字体或字号,因字段为带格式的RTF
- 不能转换为纯文本——使用RTF是硬性要求
- 所有控件的位置和尺寸均对齐网格
- 无控件重叠
尝试以下Format事件代码时出现报错:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Me!YourRTFFieldName.Height = Me!YourRTFFieldName.TextHeight End Sub
解决方案
1. 修正Format事件代码
原代码报错的核心原因是TextHeight属性需要传入目标文本内容才能准确计算渲染高度,且需锁定控件宽度避免计算偏差。替换为以下代码(注意将YourRTFFieldName替换为实际的文本框控件名称,FIXED_WIDTH根据你的控件实际宽度调整单位为twip):
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) ' 锁定控件宽度,避免宽度变化干扰高度计算 Const FIXED_WIDTH As Integer = 600 Me!YourRTFFieldName.Width = FIXED_WIDTH ' 计算RTF文本的实际渲染高度 Dim actualHeight As Long actualHeight = Me!YourRTFFieldName.TextHeight(Me!YourRTFFieldName.Text) ' 设置控件高度,并让Detail节自动适配高度 Me!YourRTFFieldName.Height = actualHeight Me.Detail.Height = actualHeight + Me.Detail.TopMargin + Me.Detail.BottomMargin End Sub
2. 优化文本框属性设置
- 打开文本框属性窗口,将Enter Key Behavior设为Field Only,避免多余换行符导致的高度计算异常
- 调整文本框的Margin属性(上下边距),适当减小数值,确保内容能完全填充控件空间
3. 清理RTF文本冗余格式
若RTF文本本身包含大量不可见控制字符,会导致Access无法正确计算高度:
- 将字段中的RTF文本复制到Word中
- 使用Word的「清除格式」功能(快捷键Ctrl+Shift+N)
- 重新将文本粘贴回LONG TEXT字段(确保保留RTF格式)
内容的提问来源于stack exchange,提问作者GatorAdmiral03
相关产品推荐
相关产品推荐

