我有一个名为 ClientSearch 的表单,它在三个字段中提供对 客户端 表的基本搜索并显示结果。此表单绑定到 Clients 表(记录源设置为表单的“客户端”)。要搜索 客户端 表,我的代码会在搜索按钮的事件处理程序中使用 DoCmd.ApplyFilter 命令
然后,我创建了一个导航表单,并将 ClientSearch 表单拖到其中一个类别中。
现在,当我点击搜索按钮时,我的 DoCmd.ApplyFilter 将不再有效。我收到运行时错误,告诉我我的表单没有绑定到特定的表,这是真的。导航表单不绑定到任何表,也不能绑定,因为不同的表和查询上会有多个嵌入表单。 我该如何解决这个问题?似乎Access和VBA不知道哪个表用于 ApplyFilter 查询。
答案 0 :(得分:0)
通常人们搜索的方式是创建一个查询,其中包含与另一个文本字段相关的条件的字段。例如[名字]的标准可能是:
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
同样,您可以使用类似的技术来使用子表单进行排序,但子表单是结果,文本框/组合框等包含在主表单上,并具有触发后更新重新查询或搜索按钮等搜索。这种方法的缺点是,据我所知,形式不能连续,但你仍然可以通过这种方式获得良好的结果。
我希望有所帮助。如果有什么不清楚,请告诉我!