首页 文章

访问:以子表单更新查询

提问于
浏览
1

而不是使用 DoCmd.OpenQuery "qrySearch", , acReadOnly 查看查询结果我选择的标准 .

为此,我创建了两个表单:frmResults和frmSub

通过将frmSub从Forms选项卡拖到frmResults(在Design视图中打开),将frmSub放在frmResults中 .

在frmSub的属性下: -

  • 源对象已从frmSub更改为Query.qrySearch .

  • 在frmResultsSub设置的名称

由于现在不再使用原始的frmSub,我已经删除了它(至少,由于我的访问经验有限,我认为这样做是安全的,因为对于在frmResults中显示的查询没有任何影响 - 表单很好地显示字段和字段编号根据搜索条件而有所不同 .

Question: 如果用户执行另一次搜索,并且当前打开frmResults,为了更新结果,我必须关闭frmResults并再次打开它 . 这确实有效,但我不推荐的方式 - 是否有任何方法刷新frmResults,而它's still open? I'已尝试各种排列

Forms!frmResults!frmResultsSub.Requery / .Refresh

从搜索表单本身后面但没有任何作用 .

[仍然需要访问Access 2003合规性]

EDIT: 基于HansUp和Alexander的第一次回复......

Alexander:.Requery(/ frmResults显示)发生在用于接收用户搜索条件的表单上的搜索按钮后面的VBA末尾附近(frmSearch,上面未详述的单独表单)...

If CurrentProject.AllForms("frmResults").IsLoaded Then
    Forms!frmResults!frmResultsSub.Requery
Else: DoCmd.OpenForm "frmResults"
End If
  • 对于当前打开的frmResults表单上的新用户搜索,没有更新的 Forms!frmResults!frmResultsSub.Requery .

HansUp:取代上述内容

Forms!frmResults!frmResultsSub.Requery

Forms!frmResults!frmResultsSub.SourceObject = "Query.qrySearch"

......做了这个伎俩,效果很好 - 所有对已经打开的frmResults的新搜索都会更新,而无需重新打开表单 . 但我很困惑!...虽然我已经将子窗体的SourceObject设置为与上面详述的相同的值(在设计视图中的子窗体属性下) - 为什么Access不遵循此设置?

1 回答

  • 2

    在您的示例代码中......

    Forms!frmResults!frmResultsSub.Requery
    

    ... frmResultsSub 是一个子窗体控件,它包含一个查询而不是一个窗体 . 换句话说,它的 SourceObject 属性设置为"Query.qrySearch" .

    在这种情况下,子窗体控件的 Requery 无法识别对查询设计的更改 .

    将子窗体的 SourceObject 属性设置为其原始值足以使Access识别查询设计更改...

    Forms!frmResults!frmResultsSub.SourceObject = "Query.qrySearch"
    

相关问题