我有一个报告,其记录来源是查询,比如qryRecords。在报告标题中,我想添加一个冗长的备注字段(长度超过255个字符)。我已经设置了一个表来保存这些注释(使用字段类型“memo”),并且因为该表与报告的记录源是分开的,所以我将使用VBA代码将Notes字段放在报告中。 / p>
在报告的公开活动中,我添加了以下代码:
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个字符(它连接数据库中的各个字段)。这没有问题。
表单上有一个按钮,用于打开报表,在报表中,我将文本框的控件源设置为Forms![frmMain]![frmSub]![txtNotes],这是上面提到的文本框。这也有效,但由于某种原因,报告上的文本被截断为255个字符。表单的文本框是未绑定的,因此没有基础表来限制长度。有人知道为什么会发生这种情况或是否有解决方法?
答案 0 :(得分:0)
最有可能的情况是,来自该字段的数据被转换为文本类型而不是备忘录。真的没有办法明确地将文本作为备忘录(你可以通过CStr反过来)。在尝试使用此方案时,我也遇到了在表单上截断的问题。
我建议您可能以错误的方式在表单上生成此字段。美元到甜甜圈你可以在查询中生成它(在表单的控制源中使用),而不是将它连接在一起并放入一个未绑定的字段。同样,您可以使用相同的查询作为您要打开的报告的控制源。
如果所有这些都是不可能的,我会指出您将表单中的值转储到专门用于报告的表中,然后使用该表作为报告的控制源。
----编辑----
我仍然认为您可以将其添加到报告的数据源中。在下面的例子中,我已经将tblNotes添加到Bar表上的select。
SELECT bar.f0, bar.f1, bar.f2, bar.f3, tblNotes.notes
FROM bar, tblNotes
WHERE tblNotes.id = 1;
是的,如果有300行Bar,您将获得相同Notes字段的300份副本,但这是一个小问题。
在那里,您只需将txtNote的数据源设为tblNotes.Notes列。 txtNote当然可以存在于报表/页眉中,当MS Access生成它时,它只会使用一行。我不确定是选择第一行/最后一行还是随机行 - 从来没有那么少,因为它们都是一样的,没关系。