【发布时间】:2012-09-14 03:49:14
【问题描述】:
在 Access 2007(或 2010)中,我需要使用 VBA 从主窗体设置嵌入在第一个子窗体中的子窗体的属性。为了清楚我说的是哪个表单,我将这个表单称为“subSubform”,就像我在代码中所做的那样(嗯,subSubform 实际上是子子表单控件的名称)。
当表单加载时,我的第一个子表单上有一个子表单控件,它是空白的(不包含表单源对象)。如果需要,我会使用有效表单的名称以及 LinkMasterFields 和 LinkChildFields 属性填写此控件的 SourceObject 属性。这一切似乎都很好,因为我确实得到了一个可扩展的加号,否则就不会出现。
接下来我尝试为 subSubform 设置 RecordSource,但出现错误:
2455 您输入的表达式对属性 Form/Report 的引用无效。
这是我正在使用的代码:
Me!subform1.Form!subSubform.Form.RecordSource = sSubformSQL
'and I've tried this with the same bad results
Me.subform1.Form.subSubform.Form.RecordSource = sSubformSQL
'and this too
Forms("frmQuery").subform1.Form.subSubform!Form.RecordSource = sSubformSQL
'And I've tried this. It fails too, on the last line with the same error:
Dim frm As Form
Set frm = Forms("frmQuery").subform1.Form
Dim frm2 As Form
Set frm2 = frm.subSubform.Form
我尝试设置一个计时器并等待一秒钟来运行上述代码,以防表单加载需要一些时间。但这并没有什么区别。
我尝试从第一个子窗体而不是主窗体运行代码,但这也无济于事。仍然失败并出现同样的错误。
FWIW,我的子表单和子子表单都是 DataSheet 视图。我认为这与我在这里尝试做的事情没有什么不同(尽管我很清楚所涉及的性能问题,所以不要对我大喊大叫)。
我知道这可能是一个非常奇怪的要求。但我正在创建一个需要这个的动态查询界面。
知道如何在子子表单上设置表单属性吗?
【问题讨论】:
-
有关此问题的实际答案,请参阅下面 Albert 回答下方的注释。