2016-05-31 99 views
0

我正在使用Access 2003数据库,并有2个组合框,我尝试使用。我已经完善了第一个盒子,这是不同表格(部件类别)的下拉菜单。一旦选择了该表,我希望能够通过下拉框选择来查看该类别内的部件号。从这里我希望能够使用该零件号码为该类别提取正确的报告,这样我就可以为每个零件号打印一份报告。我确信我必须编写某种VBA,Query或Macro AfterUpdate()代码,但我不知道如何用选定表格的零件编号填充第二个组合框。如何从组合框选择中选择表值?

Click here for an image of my Menu layout

这是我的第一个框查询,以显示我想要的表格:

SELECT Msysobjects.Name 
    FROM Msysobjects 
    WHERE (((Msysobjects.Name) not Like "MSYS*" 
    And (Msysobjects.Name) not like "_*" 
    And (Msysobjects.Name) not like "~*" 
    ) AND ((Msysobjects.Type)=1)) 
    ORDER BY Msysobjects.Name; 

而且我认为这是我需要打印的第二个框有它的选择之后:

Private Sub partnumberselect_AfterUpdate() 
    DoCmd.OpenTable Forms![_Datasheet Printing].Form.TagLabelSelection.Column(1), acViewNormal 
    End Sub 

如果您有任何问题,请提前致谢。

回答

0

请看下面的例子。

Private Sub cboCountry_AfterUpdate() 
    On Error Resume Next 
    cboCity.RowSource = "Select tblAll.City " & _ 
     "FROM tblAll " & _ 
     "WHERE tblAll.Country = '" & cboCountry.Value & "' " & _ 
     "ORDER BY tblAll.City;" 
End Sub 

enter image description here

您可以了解这个概念,和其他人,在下面的链接都看过。

http://www.fontstuff.com/access/acctut10.htm

+0

谢谢!该链接中的示例1是完美的,我只是输入了所有的情况 – cdomination

2

您正在尝试所谓的“级联组合框”,这意味着第二个框依赖于第一个的选择。

这是通过第二个组合框的控制源完成的。

您应该做的第一件事是编写一个查询,返回第二个组合框的所有可能选项,而不必过多关注如何根据第一个组合选择进行过滤。一旦你拥有了它返回正确的数据,您将添加一个WHERE条款的第二个框的控制源这是这样的:

WHERE Msysobjects.Name Like Forms![_Datasheet Printing]!TagLabelSelection.Value

这是引用您的第一个组合框的形式。因此,在第一个组合框中进行选择之后,第二个组合框的基础控制源将具有适当的标准以返回适当的选项。

然而,你将需要一些VBA添加到AfterUpdate()事件的第一组合框。一旦做出选择,您需要第二个框来刷新控制源以填充正确的选择。代码很简单:

Forms![_Datasheet Printing]![MySecondComboboxName].Requery

+0

这很有道理,所以谢谢!我对VB和Access完全陌生,因此编写查询以返回组合框的所有可能选项给我带来麻烦。如果我这样做: 从COM(其中一个表)中选择CATALOG 我从COM表中得到我想要的结果。问题是从另外的〜20个表中拉出目录列。 – cdomination

+0

@ChristinaDocenko听起来像你的表可能是非规范化的。你有没有组织桌子?无论哪种方式,请查看数据规范化,并在进一步开发之前评估您的结构是否正确。非规格化表使查询不必要地复杂,并且在某些情况下不可能构建。 – MoondogsMaDawg

+0

@ChristinaDocenko从多个表中提取目录号码是非常复杂的。如果您需要正常化帮助,请随时发起一个新问题。离别建议:看看20张桌子,他们或多或少都有相同的列?如果是这样,表名称唯一的区别是什么?表名所代表的类别是否可以移动到组合表的新列中? IE浏览器。 “螺丝刀”“钻头”“锯”作为单独的表格可以与“类别”字段组合,指定每行为螺丝刀,钻头或锯。 – MoondogsMaDawg