我想在Access 2007中链接到彼此的下拉列表

时间:2009-08-17 15:37:31

标签: ms-access ms-access-2007

我正在尝试创建一个包含多个类别和子类别的表单。

有没有办法可以在第一个下拉列表(主要类别)中选择的内容与第二个下拉列表中显示的内容(子类别)之间创建关系?

我不想一次列出所有子类别。我只想要与主类别中选定的指定相关的那些....

谢谢!

1 个答案:

答案 0 :(得分:2)

这是最常见的访问问题之一。

方法1:在第二个组合框的WHERE子句中,使用对第一个组合框的引用作为标准:

  PARAMETERS [Forms]![MyForm]![cmbCategories] Long;
  SELECT SubCategory
  FROM tblSubCategories
  WHERE CategoryID = [Forms]![MyForm]![cmbCategories]
  ORDER BY SubCategory;

(将控件引用定义为97之后的Access版本中的参数非常重要,因为这些版本的Access不会像97那样处理Null,之前也是如此)

然后,在第一个组合框的AfterUpdate事件中,重新查询第二个:

  Private Sub cmbCategories_AfterUpdate()
    Me!cmbSubCategories.Requery
  End Sub

方法2:不是硬连接第二个组合框的rowsource来包含对第一个组合框的引用,而是在第一个组合框的AfterUpdate中动态编写其rowsource:

  Private Sub cmbCategories_AfterUpdate()
    Dim strRowsource As String

    strRowsource = "SELECT SubCategory FROM tblSubCategories WHERE CategoryID = "
    strRowsource = strRowsource & Me!cmbCategories
    strRowsource = strRowsource & " ORDER BY SubCategory;"

    Me!cmbSubCategories.Rowsource = strRowsource
  End Sub

我倾向于做后者,因为除了过滤到第一个组合框之外我经常需要做其他事情,但对于大多数人来说,采用第一种方法可能更容易。