MS Access - 构建一个组合框,根据以前的组合框选择返回多个值

时间:2018-03-13 01:30:58

标签: ms-access combobox

我有两个表共享研究方案标题(字符串)。在一个表格"研究事件"中,我存储了与每个研究方案相关的报销信息,但我们关注的是两列,"协议"和" EventDefinition"。在此表中,我可以定义多个"事件"单一研究方案。

在另一个表格"研究访问和交互"中,我有与研究事件发生时间相关的信息,并为最终用户开发了一个输入该数据的表格。在该形式中,存在组合框,#34;研究协议",其允许用户从数据库中的唯一协议列表中进行选择。然后我有第二个组合框,我想填充" EventDefinition"可用于所选协议的字段。

我对我的RowSource语句使用以下查询:

SELECT [Study Events].EventDefinition
FROM [Study Events]
WHERE Protocol= [Me].[Study Protocol];

当我在编辑器中将[Study Protocol]定义为协议名称之一时,查询将返回正确的信息。但是当我以实际形式尝试时,没有任何回报。

如果在ControlSource表中将字符串定义为字符串,我是否使用了不正确的语法来引用Combobox值?

1 个答案:

答案 0 :(得分:0)

要根据第一个组合框的选择过滤第二个组合框,您需要一些VBA代码在第一个组合框更改时刷新第二个组合框。

以下假定第一个组合框名称为cboStudyProtocol,第二个为cboEventDefinition

cboEventDefinition的RowSource应类似于以下内容:

SELECT [Study Events].EventDefinition
FROM [Study Events]
WHERE Protocol = [cboStudyProtocol];

然后,为第二个组合框添加一个事件:

Private Sub cboStudyProtocol_AfterUpdate()
    cboEventDefinition.Requery
End Sub

当第一个组合框中的选择发生更改时,这会更新第二个组合框中的值列表。