SQL查询 - 在建筑物中显示房间

时间:2013-12-21 17:07:29

标签: ms-access ms-access-2010

我正在尝试创建仅列出用户选择的建筑物中的房间的功能。所以如果他们选择建筑他们只看到Rm。 1,2,3。如果他们选择2楼,他们将看到rm 1,2,3,4,5。

表1 - 地点

|location id|Building|room|
|1          |123     | 1  |
|1          |123     | 2  |
|1          |123     | 3  |
|1          |456     | 1  |
|1          |123     | 4  |
|1          |456     | 2  |

表2 - 存储区

|Storage id|Storage Name|Building|Room|
|  1       |storage rm 1|123     |118

查询1 - Get_Buildings

 SELECT DISTINCT Locations.Building
 FROM Locations;

此查询只是从表1中“建筑物”列中选择一个不同的建筑物编号,表2中使用了“建筑物”列。

我需要能够根据我选择的建筑物编号显示房间号码。这可以在数据库视图中完成还是仅在表单视图中完成?如果是这样,有人可以指出我正确的方向或给我一些关键词谷歌,这将指向我正确的方向。

1 个答案:

答案 0 :(得分:0)

你可能想要这样的东西:

SELECT locations.room
FROM locations
WHERE (((locations.Building)=123));

如果在VBA中,

strSql = "SELECT locations.room " & vbCrLf & _
         "FROM locations " & vbCrLf & _
         "WHERE (((locations.Building)=123));"

然后将字符串转换为记录集

Dim rstSQL As Recordset
Set rstSQL = CurrentDb.OpenRecordset(strSQL)

然后将记录集用作列表框中的行源

me.listbox.rowsource = rstSQL

但是,我建议将您的第一张桌子分成三个不同的桌子。 tblLocation,tblBuilding,& tblRooms

然后你可以利用适当的一对多关系。 1个位置可以有很多建筑, 1栋建筑可以有很多房间。