vba - 子表单引用抛出错误 2455 : You entered an expression that has an invalid reference to the property Form/Report

标签 vba ms-access

昨天,一个长期以来对我来说运行良好的表单/子表单突然开始抛出错误2455:您输入的表达式对属性 Form/Report 的引用无效。

以下是我对问题的诊断。感觉就像一个错误。

我的问题是:你们中有人见过这个吗?如果您有兴趣,可以尝试复制这个问题,并让我知道您发现了什么吗?

问题:

  • 我有一个完美独立运行的表单,为其每个子表单设置记录源
  • 但是,当将表单放入子表单控件时,它会失败,在尝试设置 SubForm.Form.RecordSource 属性时,每个 子表单都会抛出错误 2455(但同样,仅当表单本身为子表单)

经过大量实验,我将范围缩小到:

  1. 子表单控件太短,无法显示表单的详细信息部分。只有标题可见。
  2. 由于表单的详细信息不可见,静默 Access 禁用表单下的所有子表单!!!

我的解决方法:始终确保至少部分表单的详细信息部分在子表单控件中可见。要么:

  • 增加子窗体控件的高度
  • 将控件从表单标题移至详细信息,并使标题更短或不可见,以便仅显示详细信息。

你能复制这个吗?这很奇怪,所以我想要对此问题进行一些独立确认。因此,如果您有一点时间,请尝试以下步骤:

  1. 制作一个表格:
    • 保存孙窗体的子窗体控件
    • 标题部分,高度 0.5 英寸
  2. 将此表单添加为父子表单控件中的子表单
  3. 工作案例:
    • 将父级的子表单高度设置为 0.6 英寸,以便子级的详细信息部分可见
    • 在代码中,引用子窗体的 subform.Form.RecordSource 属性(孙窗体)。
    • 期望:没有错误
  4. 失败案例:
    • 现在,将父子表单高度设置为 0.4 英寸,这样细节就看不到
    • 重新运行涉及子表单的 subform.Form.RecordSource 属性的代码。
    • 预期:运行时错误 2455

我的“孙子”表单在加载时没有 RecordSource。记录源在父/子表单加载后在代码中设置。

请指出您正在运行的 Access 版本以及您得到的结果。我正在运行 Access 版本 14.0.7128.5000,它看起来相当最新。

最佳答案

尽管这是一个旧线程,并且 OP 的答案肯定是其他内容,但我分享此内容是希望它能为其他遇到“错误 2455:您输入的表达式包含对属性(property)表格/报告的引用无效”。这可能非常令人困惑,并且与错误的实际原因相去甚远。

我今天在 Access 2016 上遇到了这种情况。在对项目进行一些更改时,其中一个表单突然开始在其 Form_Load() 事件中抛出错误 2455,其中包含一行代码:

Private Sub Form_Load()
    Set mevtReferenceToSubform = Me.frmASubform.Form
End Sub

正如 stackoverflow.com/questions/5023631/... 中指出的在问题的评论中:

"Controls bound to the recordsource of the parent form (including subforms with LinkChild/LinkMaster properties) do not load when there are no records."

显然,对于未绑定(bind)的子表单也是如此。如果父表单的 RecordSource 查询不返回任何记录,则子表单的“.Form”属性将无法从其父表单 Access !

就我而言,罪魁祸首是 TempVar 声明,我已将其替换为代码中其他位置的另一个解决方案。但没有注意到删除的 TempVar 甚至被现在失败的父表单的查询使用,该查询没有返回任何结果......

关于vba - 子表单引用抛出错误 2455 : You entered an expression that has an invalid reference to the property Form/Report,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29830292/

相关文章:

vba - 动态添加公式到 Excel 单元格

excel - 删除不在日期范围内的内容

vba - 嵌套的 "if"和使用 "if x and y and z and .."在速度方面有区别吗?

SQL Server 2008 : should I be using Windows auth or SQL Server auth?

python - objAccess.Application.Quit 在尝试使用 python 关闭 Access 数据库时没有完全工作

sql - 选择此 id 的计数总和不为 0 的所有行

java - 将 Csv 文件写入类似矩阵的结构

vba - 更快的 VBA 隐藏行

arrays - 如何在 VBA 中声明数组变量?

sql - 使用GROUP BY选择多个(非聚合函数)列