在MS Access中为子窗体中的下拉框查找创建SQL查询?

时间:2013-06-18 18:44:55

标签: sql vba ms-access ms-access-2003

我有以下两个表,第一个叫做Projects,第二个叫做Parts:

enter image description here

enter image description here

然后我有一个表单(我们称之为表单1),它使用Projects作为其记录源,其子表单将Projects表上的Project链接到Parts表上的Project,并仅显示与所选Projects记录源关联的项目,像这样:

enter image description here

现在,我希望能够做的是在Form 1上有一个下拉列表,只有子窗体上列出的Items可以选择,但我似乎无法找到执行此操作的SQL代码。

我当前的下拉列表使用以下代码,但当然这仅显示所有项目,而不是仅显示在子表单上的项目:

SELECT [Parts].[ID], [Parts].[Item] FROM Parts ORDER BY [Item]; 

我想我想做的就是这样,但显然使用了正确的语法:

SELECT [Parts].[ID], [Parts].[Item] WHERE [Parts].[ID]= & Me![ID]  FROM Parts  ORDER BY [Item]; 

2 个答案:

答案 0 :(得分:1)

将它放在表单的Load事件中:

Me!MyCombo.RowSource = "SELECT [Parts].[ID], [Parts].[Item] FROM Parts WHERE [Parts].[ID]= '" & Me![ID] & "' ORDER BY [Item];"
Me!MyCombo.Refresh

如果Parts.ID是数字字段,则需要从中取出单引号,如果它是文本字段,则将它们保留。

答案 1 :(得分:1)

使用表单的“当前”事件来设置组合的RowSource属性,因此每当表单中的活动行发生更改时,您都会在组合中获得更新列表。

Me!MyCombo.RowSource = "SELECT Project, Item FROM Parts WHERE Project = '" & Me.Project & "' ORDER BY Item"

抱歉,user2174085:这应该是您回答的评论,但我没有选项可以提供评论。