在MS Access中如何根据我在第一行中选择的内容获取同一表中另一行的数据?

时间:2015-02-18 02:04:11

标签: ms-access

我是MS Access的初学者。我想知道根据我从同一个表中的另一行中选择的内容自动获取数据的可能方法是什么。我的桌子如下所示。

ID(自动编号) 航空公司(简短文字) FlightNumber(短文)

从上述情况来看,航空公司可能会有很多航班号。因此,在我的表格中,我输入了同一航空公司的许多航班号。我想做的是,当我在下拉列表中选择航班号时,我想根据我在表格中输入的数据选择正确的航空公司。

任何举行都将非常感谢。感谢

1 个答案:

答案 0 :(得分:0)

你需要的是,级联组合框。其中ComboBoxes基于之前所做的选择进行级联。我正在扩展你的榜样。为简单起见,我有一个只有两个ComboBox控件的表单。包含航班信息的表格为 tbl_FlightInfo 。我们说它有以下结构。

flightID    |   flightCompany   |   flightName
------------+-------------------+--------------
1           |   British Airways |   BA500
2           |   British Airways |   BA707
3           |   Qatar Airways   |   QA200
4           |   Virgin Atlantic |   VA303
5           |   Virgin Atlantic |   VA404

第一个ComboBox(flightCompanyCombo),将RowSource作为,

SELECT flightCompany FROM tbl_FlightInfo GROUP BY tbl_FlightInfo;

这将列出您在表中的所有公司,第二个ComboBox(flightNameCombo)可以有一个RowSource,

SELECT flightName FROM tbl_FlightInfo;

现在这是为了确保ComboBox最初填充了所有Flight名称。然后在 flightCompanyCombo 的AfterUpdate事件中,您可以重新查询 flightNameCombo ,代码就像是,

Private Sub flightNameCombo_AfterUpdate()
    Me.flightNameCombo.RowSource = "SELECT flightName FROM tbl_FlightInfo " & _
                                   "WHERE flightCompany = '" & Me.flightNameCombo & "'"
    Me.flightNameCombo.ReQuery
End Sub

这样,如果您在公司名称组合中选择 英国航空公司 ,则航班名称组合将具有 BA500 BA707

了解更多信息:

  1. http://www.utteraccess.com/wiki/index.php/Cascading_Combo_Boxes
  2. http://www.fmsinc.com/microsoftaccess/forms/combo-boxes/cascading.html
  3. http://www.fontstuff.com/access/acctut10.htm