Access 2010:将窗体嵌入到导航窗体中



我有一个名为ClientSearch的表单,它提供了对Clients表中三个字段的基本搜索并显示结果。此表单绑定到Clients表(表单的"记录源"设置为"客户端")。要搜索Clients表,我的代码使用DoCmd。ApplyFilter命令。

然后,我制作了一个导航表单,并将ClientSearch表单拖到其中一个类别中。

现在,当我单击搜索按钮时,我的DoCmd。ApplyFilter不再工作。我收到一个运行时错误,告诉我我的表单没有绑定到特定的表,这是真的。导航表单没有绑定到任何表,也不可能绑定,因为它上会有多个用于不同表和查询的嵌入表单。我该如何解决这个问题?Access和VBA似乎不知道将哪个表用于ApplyFilter查询。

通常,人们进行搜索的方式是创建一个查询,该查询包含与另一个文本字段相关的条件字段。例如,[名字]的标准可能是:

Like [Forms]![frm_RecordSearch]![txtFirst] & "*"

如果文本框为空,它将显示所有结果,并允许人们根据部分匹配进行搜索。从那里,你所需要做的就是根据查询创建一个表单,并让具有搜索条件的表单调用显示表单。这将自动对其进行排序。如果你想避免每次再次搜索时关闭表单,你也可以使用Me.requery。例如,对于两个表单,搜索表单看起来像:

Private Sub cmdb_search_Click()
If CurrentProject.AllForms("frm_SearchResults").IsLoaded Then
Forms![frm_SearchResults].Form.Requery
Else
DoCmd.OpenForm "frm_SearchResults"
End If
End Sub

同样,您也可以使用类似的技术来使用子表单进行排序,尽管子表单是结果,文本框/组合框等包含在主表单上,并且有一个更新后查询或搜索按钮等来触发搜索。这种方法的缺点是,据我所知,形式不可能是连续的,但你仍然可以用这种方法得到一个好的结果。

我希望这能有所帮助。如果有什么不清楚的地方,请告诉我!

最新更新