访问报告字段截断为 255 个字符

Posted

技术标签:

【中文标题】访问报告字段截断为 255 个字符【英文标题】:Access report field truncating at 255 characters 【发布时间】:2012-05-30 13:18:33 【问题描述】:

我有一个记录源是查询的报告,比如 qryRecords。在报告标题中,我想添加一个冗长的注释字段(超过 255 个字符)。我已经设置了一个表格来保存这些注释(字段类型为“备忘录”),并且由于该表格与报告的记录源是分开的,所以我打算使用 VBA 代码将注释字段放入报告中。

在报表的打开事件中,我添加了这段代码:

Dim rst as Recordset
Dim sql_qry as String

sql_qry = "SELECT notes FROM tblNotes WHERE id = 1;"
Set rst = CurrentDb.OpenRecordset(sql_qry)

rst.MoveFirst
Me.txtNote = rst![notes]  'I get the run-time error on this line

不幸的是,我收到了一个运行时错误(“你不能给这个对象赋值”)。我在表单上发现了一个有类似问题的人,建议将代码从 open 事件移动到 OnCurrent 事件,但报告中不存在该事件。有什么建议么?谢谢。

--- 原始问题---

我有一个带有未绑定文本框 (txtNotes) 的表单,当用户打开表单时,文本框会填充超过 255 个字符的文本(它连接数据库中的各个字段)。这没有问题。

窗体上有一个打开报表的按钮,在报表中,我将一个文本框的Control Source设置为Forms![frmMain]![frmSub]![txtNotes],也就是上面提到的文本框.这也有效,但由于某种原因,报告中的文本被截断为 255 个字符。表单的文本框是未绑定的,因此没有基础表来限制长度。有谁知道为什么会发生这种情况或是否有解决方法?

【问题讨论】:

您使用什么数据库来存储数据? 我正在使用同一个 Microsoft Access 数据库中的表。抱歉,我知道我在文章中没有提到这一点。 【参考方案1】:

最有可能来自字段的数据被转换为文本类型而不是备忘录。确实没有办法将文本显式转换为备忘录(尽管使用 CStr,您可以反过来)。在尝试这种情况时,我也遇到了表单截断问题。

我建议您可能以错误的方式在表单上生成此字段。美元到甜甜圈,您可以在查询中生成它(在表单的控制源中使用),而不是将其连接在一起并放入未绑定的字段中。同样,您可以使用相同的查询作为您正在打开的报告的控制源。

如果这一切真的不可能,我建议您将表单中的值转储到专门用于报告的表格中,然后将该表格用作报告的控制源。

---- 编辑----

我仍然认为您可以将其添加到报告的数据源中。在下面的示例中,我已将 tblNotes 添加到 Bar 表上的选择中。

SELECT bar.f0, bar.f1, bar.f2, bar.f3, tblNotes.notes 
FROM bar, tblNotes 
WHERE tblNotes.id = 1;

是的,如果有 300 行 Bar,您将获得 300 个相同 Notes 字段的副本,但这是一个小问题。

在那里,您只需将 txtNote 的数据源设置为 tblNotes.Notes 列。 txtNote当然可以存在于报表/页眉中,MS Access生成时只会使用一行。我不确定是选择第一行/最后一行,还是随机行 - 因为它们都是一样的,所以没关系。

【讨论】:

我认为这是一个很好的建议!不幸的是,报表上的这些文本字段充当实际数据上方的注释,因此报表的记录源必须是不同的查询。我确实尝试将数据放入表格中,然后从表格中填充报告上的文本框,但 Access 不允许我这样做。我使用:“Me.txtNote = rst![notes]”,得到一个错误:“你不能给这个对象赋值。”代码在报告的打开事件中。有什么建议么?我可以将文本框设置为具有与整体报表的记录源不同的控制源吗?谢谢! 也许您可以编辑问题,并包含一个示例,说明您的源数据是什么样的(如果您愿意,可以匿名),以及您希望报告是什么样的。 我已经编辑了这个问题,试图更好地解释我的新问题。感谢您的帮助!

以上是关于访问报告字段截断为 255 个字符的主要内容,如果未能解决你的问题,请参考以下文章

访问:最少超过 255 个字符

RODBC::sqlSave() 创建表,警告:在列中截断为 255 个字节?

RODBC :: sqlSave()创建表,警告:在列中截断为255个字节?

Ubuntu 中的 RODBC 将文本字符串截断为 255 个字符

Ubuntu中的RODBC将文本字符串截断为255个字符

使用 Access 2016 中的表创建查询时,仅保留长文本字段的前 255 个字符