2013-12-21 60 views
0

我正在嘗試創建僅列出用戶選擇的建築物中的房間的功能。所以如果他們選擇建築物,他們只能看到Rm。 1,2,3。如果他們選擇2號樓,他們會看到rm 1,2,3,4,5。SQL查詢 - 顯示房間中的房間

表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中的「建築」列。

我需要能夠根據我選擇的建築物號碼來顯示房間號碼。這可以在數據庫視圖中完成,還是隻在表單視圖中完成?如果有的話,有人可以指引我正確的方向,或給我一些谷歌的關鍵詞,這將使我指向正確的方向。

回答

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個建築物可以有多個房間。