2017-02-01 5 views
0

У меня есть три таблицы, в частности, что я работаю с:MS Access 2010 - Как настроить настраиваемый Row-Source для Form ComboBox с использованием критериев из другого элемента формы?

  • tblRooms [ID, Номер, Имя]
  • tblKeyed_Rooms [ID,room_id, key_number]
  • tblKeys [Key_Number]

Я пытаюсь создать форму с двумя, среди других, комбо-коробчатых элементов:

  • Key из tblCheckouts [key_number]
  • номер от tblKeyed_Rooms [Room_ID]

, где Номер Источник строки - любая строка в tblKeyed_Rooms, где Номер ключа = Ключ.

Я пробовал несколько различных запросов, основанных от того, что я нашел поиск в Интернете, большинство из которых были похожи:

SELECT tblRooms.ID, tblRooms.Name FROM tblRooms INNER JOIN tblKeyed_Rooms ON tblRooms.ID = tblKeyed_Rooms.[Room_ID] WHERE [Forms]![frmKeyList]![Key]=[tblKeyed_Rooms].[Key Number]); 

Так что в форме, он показывает с Key и Название.

Что я могу сделать для этого, используя Access 2010? Любая помощь будет оценена!

ответ

0

Похоже, вам нужно присоединиться к tblKeys к tblKeyed_Rooms, к tblRooms, а затем ограничить комнату, в которой вы работаете, на форме. И.Е.

SELECT 
    K.Number A KeyNumber, 
    R.Name + ' - ' + R.Number A Room 
FROM 
    tblKeys Keys 
INNER JOIN 
    tblKeyed_Rooms KR ON KR.Key_Number = Keys.Key_Number 
INNER JOIN 
    tblRooms R ON R.ID = KR.Room_ID 
WHERE 
    Keys.Key_Number = Forms![frmKeyList]![KeyNumber] 
ORDER BY 
    Keys.Key_Number 

Ваше WHERE условие является немного трудно понять, но в принципе это может быть любое поле из КЛЮЧИ, КР, или R псевдонимами таблиц, присоединяется к свободному полю на форме frmKeyList.

Я не понимаю, как подходит таблица Checkouts. Ключи, которые потенциально могут быть в этом RowSource, должны быть ограничены ключами, определенными в этом запросе для комнаты в форме.

+0

tblCheckouts был частью серии посторонней информации, которую я пропустил, сначала изъяв. Что означает K.Number A KeyNumber? У вас есть ссылка на какую-то документацию, которую я мог бы прочитать? –

+0

В вашем операторе JOIN вы можете «псевдонизировать» объединенную таблицу, а затем ссылаться на нее с помощью псевдонима в остальной части запроса. Поэтому, если я говорю «INNER JOIN tblKeys K», я могу ссылаться на поля в tblKeys как «K. [FieldName]» в другом месте в quwry. Это просто делает его более чистым. – DanielG