无法明确引用报表上的控件(MS Access / VBA)

时间:2015-08-19 13:51:27

标签: vba ms-access access-vba ms-access-2010

如何明确引用报告的控件?隐含地按照预期工作:

Me.lblTest.Visible = True

但是,我引用控件显式的所有尝试都遇到了各种无意义的运行时错误。访问'最爱:

  

“您输入的报告名称'rptTest'拼写错误(它不是)或指的是未打开的报告(它是)或不是存在(它确实)。“

我已经尝试过来自MSDN和我能找到的其他任何地方的十几种语法变体,都会产生错误:

Reports!rptTest.lblTest.Visible = True
    ' ^--expected syntax, like Forms!frmName.ctlName.Property
Reports!("rptTest").lblTest.Visible = True
Reports![rptTest].lblTest.Visible = True
Reports("rptTest").Controls("lblTest").Visible = True
etc. etc.

这与引用表单的控件没什么区别,对吧?必须有一种方法可以明确地引用报告的控件。

1 个答案:

答案 0 :(得分:1)

检查Access认为已打开的报告的名称。

打开报告后,转到立即窗口。 Ctrl + g 会带你去那里。

function Example() { alert("Click Click click") } $('#btn1').click(function() { Example(); }); $('input[name=op]').click(function() { check = $('input[name=op]:checked').val(); if (check > 0) { $('#btn1').unbind("click"); }else{ $('#btn1').bind("click", Example); } }); 粘贴为一行,然后按 Enter 。 Access会在看到它们时告诉您打开报告的名称。

这是我系统中的一个立即窗口示例,其中包含一个报告 rptFoo ,打开...

for each rpt in reports : ? rpt.name : next

您遇到的问题是 rptTest 已打开,但Access不同意。这种差异至少可以通过三种方式引起:

  1. rptTest 是您在报告打开时看到的内容,但这是报告的for each rpt in reports : ? rpt.name : next rptFoo 属性,而不是其Caption
  2. rptTest 是包含在其他一些打开报告中的子报告。 Access查找开放式报告的Name集合仅包含已打开的“顶级”报告。如果您正在处理子报表,请通过其父报表引用它... Reports其中Reports!rptParent!SubreportControl!lblTest.Visible是包含 rptTest 的子报表控件的名称。要小心,因为该子报表控件的名称可能不是 rptTest ---您需要子报表控件的名称,而不是它包含的报表的名称。
  3. 如果 rptTest 包含在表单中的子表单/子报表控件中(而不是在报表中),则情况类似于#2,但您必须通过其父表单引用它。 。SubreportControl