1

我有一个记录源是查询的报告,比如 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 个字符。表单的文本框是未绑定的,因此没有基础表来限制长度。有谁知道为什么会发生这种情况或者是否有解决方法?

4

1 回答 1

0

最有可能将来自字段的数据转换为文本类型而不是备忘录。确实没有办法将文本显式转换为备忘录(尽管使用 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生成时只会使用一行。我不确定是选择第一行/最后一行,还是随机行——因为它们都是一样的,所以没关系。

于 2012-05-30T15:30:25.530 回答