【发布时间】:2016-02-01 06:15:11
【问题描述】:
我没有使用DoCmd.OpenQuery "qrySearch", , acReadOnly 查看查询结果,而是使用表单来帮助演示,包括用于导出到 Excel 等的几个命令按钮。
请注意,查询可以根据用户选择的条件显示可变数量的字段。
为此,我创建了 2 个表单:frmResults 和 frmSub
通过将 frmSub 从 Forms 选项卡拖到 frmResults(在设计视图中打开),将 frmSub 放置在 frmResults 中。
在 frmSub 的属性下:-
源对象已从 frmSub 更改为 Query.qrySearch。
在 frmResultsSub 中设置的名称
由于现在不再使用原始的 frmSub,因此我已将其删除(至少,以我有限的访问经验,我认为这样做是安全的,因为对显示在 frmResults 中的查询似乎没有影响 -表单显示良好,字段和字段编号根据搜索条件而有所不同。
问题: 如果用户执行另一个搜索,并且 frmResults 当前处于打开状态,为了更新结果,我必须关闭 frmResults 并再次打开它。这确实有效,但我认为这不是推荐的方式 - 有没有办法在 frmResults 仍然打开时刷新它?我已经尝试了各种排列的
Forms!frmResults!frmResultsSub.Requery/.Refresh
从搜索表单本身后面,但没有任何效果。
[仍需要 ms Access 2003 合规性]
编辑:基于 HansUp 和 Alexander 的第一个回复...
Alexander:.Requery(/frmResults 显示)发生在 VBA 末尾附近的搜索按钮后面用于接受用户搜索条件的表单(frmSearch,一个单独的表单不是以上详述)...
If CurrentProject.AllForms("frmResults").IsLoaded Then
Forms!frmResults!frmResultsSub.Requery
Else: DoCmd.OpenForm "frmResults"
End If
--> 是 Forms!frmResults!frmResultsSub.Requery 没有针对当前打开的 frmResults 表单上的新用户搜索进行更新。
HansUp:替换上一行
Forms!frmResults!frmResultsSub.Requery
到
Forms!frmResults!frmResultsSub.SourceObject = "Query.qrySearch"
...成功了,并且运行良好 - 已打开的 frmResults 上的所有新搜索都会更新,而无需重新打开表单。但是我很困惑!...虽然我已经将子窗体的 SourceObject 设置为与上面详述的值相同的值(在设计视图中的子窗体属性下) - 为什么 Access 不支持此设置?
【问题讨论】:
-
请发布您放置 .Requery 语句的完整上下文。通常,表单中的 Me.Requery 或 Forms!frmResults.Requery 应该可以工作。如果您只想重新查询子表单,您可能需要使用:Forms!frmResults!frmResultsSub.Form.Requery,因为 frmResultsSub 只处理子表单在主表单中所在的字段。
-
感谢 Alexander,请参阅我的编辑:我的原始帖子中的 cmets。
标签: ms-access