VBA Access重新查询当前窗体对象之外的查询



我正在MS Access 2007中处理一个复杂的项目。我很难找到正确的方法/语法来重新查询开放表单之外的查询。我还是VBA的新手,所以如果我犯了错误或我不正确,请原谅我。

我创建了一个查询,它使用表单中特定组合框的值作为WHERE条件的一部分。我已经测试过了,效果很好。现在,我正在为有问题的组合框处理一个"更新后"事件,这样当我更改该组合框的值时,它将自动告诉我的查询使用WHERE子句中的新值重新运行。

我最初想在VBA 中使用以下命令

DoCmd.Requery [Queries]![TestQuery]

但我不清楚我是否可以使用DoCmd.Requery,因为查询在打开的表单之外,并且没有嵌入其中。

我正在寻找如何最好地实现这种效果的选项,而不仅仅是VBA。因此,如果宏能更好地工作,请给我一个从工作的例子

更新为了让事情更清楚一点,这里是Select Query的实际SQL代码,我想在Update事件之后通过它进行查询。

SELECT ForcastTrans.Location, ForcastTrans.Client, ForcastTrans.Department, ForcastTrans.Account, ForcastTrans.Currency, ForcastTrans.Month1, ForcastTrans.Month2, ForcastTrans.Month3, ForcastTrans.Month4, ForcastTrans.Month5, ForcastTrans.Month6, ForcastTrans.Month7, ForcastTrans.Month8, ForcastTrans.Month9, ForcastTrans.Month10, ForcastTrans.Month11, ForcastTrans.Month12
FROM ForcastTrans
WHERE (((ForcastTrans.EntityID)=[Forms]![ReportSelect]![BusinessUnit]));

正如我之前所说的,这个查询本身工作得很好,我只需要能够发布一个更新后事件,告诉这个查询根据更新的WHERE条件重新运行。

丹科。

如何构建报告仍然很重要。我假设这个查询是报告的记录源,并且只有当您从您正在更新的表单中请求它时,才会生成报告。在这种情况下,当您加载报告时,查询应该自动获取更新的值;如果您希望在关闭表单后生成报告,那么一旦组合框被销毁,查询就无法工作。我仍然在猜测你到底想在这里做什么,但只要说一句,我不建议有一个依赖于表单中对象的存储查询

一种更干净的方法是在OpenReport调用中使用WhereCondition:

(在按钮内点击ReportSelect)

DoCmd.OpenReport "YourReportName", acViewPreview,,"EntityID=" & Me.BusinessUnit

这将打开按打开报表的窗体筛选的报表,但仍允许报表在关闭窗体时打开,显示所有数据。

Kevin

最新更新