Forms Access 2013-通过表单上的组合框筛选的嵌入式查询

Forms Access 2013-通过表单上的组合框筛选的嵌入式查询,forms,ms-access,vba,ms-access-2013,Forms,Ms Access,Vba,Ms Access 2013,我刚接触Access,这就是我遇到的问题:我有四个表——Task、Person、Role和TaskPerson(映射表)。我有一个表单,顶部有一个未绑定的组合框,显示Person中的人员列表。在表单主体中,我有一个从作为数据表嵌入的Task和TaskPerson表中提取的查询。TaskPerson中的字段对Person和Role执行查找以显示实际值。每个任务可以分配多人,每个人可以有多个角色。我希望在数据表更新时从组合框中选择一个名称,以仅显示与该人员相关的任务(即,将组合框中的名称与表单上人员

我刚接触Access,这就是我遇到的问题:我有四个表——Task、Person、Role和TaskPerson(映射表)。我有一个表单,顶部有一个未绑定的组合框,显示Person中的人员列表。在表单主体中,我有一个从作为数据表嵌入的Task和TaskPerson表中提取的查询。TaskPerson中的字段对Person和Role执行查找以显示实际值。每个任务可以分配多人,每个人可以有多个角色。我希望在数据表更新时从组合框中选择一个名称,以仅显示与该人员相关的任务(即,将组合框中的名称与表单上人员字段(这是一个查找)中的名称进行匹配,并仅显示这些任务)

我已尝试调整查询的记录源,以便使用

'Forms![Task Form]![Combo11]'
但这并没有奏效。我也尝试过这样一个版本:

Private子表单_SelectionChange()
'如果组合框已清除,请清除表单筛选器。
如果Nz(形式)=“那么
Me.Form.Filter=“”
Me.FilterOn=False
'如果选择了组合框项目,请筛选精确匹配项。
'使用ListIndex属性检查该值是否为列表中的项目。
ElseIf Me.Combo11.ListIndex-1那么
Me.Form.Filter=“[Combo11]”和_
替换(Me.Combo11.Text,“,”)&“
Me.FilterOn=正确
如果结束
端接头
虽然代码没有停止,但它也没有从组合框中获取所选名称,因此不会更新。一个可能的因素是,当我键入Me.Combo11.Text时,它实际上并没有将Combo11显示为一个选项。我试着把它输入,希望能工作,但我知道这有点愚蠢

如有详细答复,将不胜感激。我仍然在学习,我很容易迷路


史蒂夫。

第一种方法比较简单。
在您的查询中

WHERE TaskPerson = Forms![Task Form]![Combo11]
请注意,组合引用周围没有。使用
表单![任务表]![Combo11]'
整个过程被解释为字符串,因此它不起作用

然后在
Combo11\u AfterUpdate
中,您只需

Me.Requery
这种方法的缺点是:您必须始终选择一个人,否则表单将为空


第二种方法:

查询列出所有记录,组合框应用过滤器。或者,如果用户清除组合框,则将其删除

我建议回到您使用的,只替换
Combo11


[ReportedLOB]
[TaskPerson]


代码没有进入
表单选择更改()
,而是进入
组合11\u AfterUpdate()

是的,我现在看到了。你对我如何做这项工作有什么建议吗?就这点而言,我将事件应用到的是嵌入式查询上的事件,还是查询中的某个字段(即person字段)或其他地方?哇。我在解释自己时一定做得很糟糕。简而言之,我想从组合框中选择一个名称,将该名称传递到查询中,然后查询只列出属于该名称的任务。我该怎么做?我会提供你要求的任何细节。你的组合框的记录来源是什么?它有多少列?哪列是绑定列?当你说你的第一次尝试“没有成功”是什么意思?你得到了什么样的结果与你期望的结果相比?它产生了错误吗?您能否为您的查询显示不起作用的SQL,以及组合框(如果可用)的recordsource的SQL,并指示哪一列是绑定列?Andre,我已经取得了一定的成功,对此我表示感谢。我使用了第一种解决方案,确保不包含“标记”。但是,它仍然无法从组合框中获取文本。如果我只是在条件中输入一个人的名字,它会过滤数据。但是,如果我进入表格![任务表]![11]那就不是了。想一想为什么?然后我们回到Gene的问题:你的组合框的记录来源是什么?它有多少列?哪列是绑定列?请显示查询的SQL,它是表单的记录源。事实证明,我需要将标准与PersonId相匹配,因为这是用于查找并显示在表单上的内容。一旦我与之匹配,它就像一个符咒。谢谢你的帮助!!
Me.Requery