2011-07-14 121 views
1

我有几个MS Access 2010报告包含引用其他报告上的其他控件的控件。因此,举例来说,如果报告1有一个名为 report1_textBox一个文本框,该文本框获取其值从文本框中 report0称为 report0_textBox,然后我设置 report1_textBox的控制源财产到:MS Access:报告引用其他报告

= [Reports]![report0]![report0_textBox]

我创建的形式,当用户选择依赖于其他报表的报表,用户可以用它来选择报表打开,而且,我的代码将打开在打开之前,本身这些报告报告。这在某些情况下工作正常,但在其他情况下,我得到一些奇怪的行为。

让我们回到上面的例子中,我遇到这样的情况,即使我打开 report0的情况下,再打开报告1,文本框 report1_textBox显示#错误仿佛 report0被关闭或不存在。但是,如果我然后只需要点击 report0并改变其观点,再改回来,然后回去报告1和滚动了一下,在文本框中 report1_textBox“神奇地”从变化#错误为适当的值。打开报告后,我尝试点击“全部刷新”按钮,但没有更新文本框。

有没有人知道一种方法来解决这个问题或至少解决它?

谢谢!

添加:理想情况下,我不想打开多个报告,就像我现在所做的那样。如果用户想查看报告,我只想打开该报告,但是从我的理解,如果选择的报表需要来自另一个报表的数据,那么需要打开其他报表,我最终可以通过编写VBA代码来执行查询来解决这个问题,但是我想避免这种情况,尤其是因为我已经有了我需要的数据 - 这是只是在另一个报告。有没有人知道是否有可能实现这种理想的情况?谢谢!)

+1

您有设计错误 - 任何报告都不应该依赖来自其他报告的数据。以其他方式获取数据。 –

回答

0

我会建议与VBA代码为此。

您的问题实际上包含一个答案(部分) - 如果您需要来自其他报告的数据,那么报告必须首先打开。但是,下面的代码可能会有所帮助。 您可以打开报告(S)为隐藏:

... 
DoCmd.OpenReport "report0", acViewReport, , , acHidden 
... 

但同样,我建议编写VBA代码来拉或者使用现有查询的其他报告中的数据或创建新的[查询]。