Access подстановка значения
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)
Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.
При использовании подстановки нужно в источник строк написать такой запрос:
SELECT Персонал.ФИО FROM Персонал, Преподает WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;
Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.
Цитата: BlackAnton
Есть три таблицы.
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)
Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.
При использовании подстановки нужно в источник строк написать такой запрос:
SELECT Персонал.ФИО FROM Персонал, Преподает WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;
Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)
Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.
При использовании подстановки нужно в источник строк написать такой запрос:
SELECT Персонал.ФИО FROM Персонал, Преподает WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;
Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.
Используйте inner join
Вопрос в другом, как получить значения предмета текущей (которая вводится сейчас) строки, чтобы ее в запрос записать.
Цитата: BlackAnton
Вопрос в другом, как получить значения предмета текущей (которая вводится сейчас) строки, чтобы ее в запрос записать.
используйте поиск по форуму - как формировать строку запроса писалось сотни и тысяч раз. И формулируйте нормально свои вопросы. Хз как вы вводите вашу строку.
Вот вариант решения, от новичка новичкам:
1. Создайте в таблице поле автоподстановки с помощю мастера. В выпадающем списке отображаются все возможные значения (что нас не устраивает);
2. Создайте автоформу на основе этой таблицы;
3. Для этой формы, в окне свойств поля с автоподстановкой нажмите кнопку с тремя точками напротив свойства "источник строк". Откроется составленный мастером запрос на автоподстановку в режиме конструктора запросов;
4. В конструкторе запросов для нужного поля заполните строку "условие отбора", выбрав пункт контекстного меню "построить";
5. В открывшемся построителе выражений найдите поле с условием на новой форме и нажмите "вставить". Получившееся выражение и есть ваш пресловутый "ПРЕДМЕТ";
6. Закройте конструкторы. В свойстве "источник строк" содержится примерно следующее
Код:
SELECT зпреподсподгруппами.преподаватель, зпреподсподгруппами.предмет FROM зпреподсподгруппами WHERE (((зпреподсподгруппами.предмет)=[Forms]![Форма1]![предмет]));
7. Перейдите на вкладку "события" окна свойств поля с автоподстановкой и создайте обработчик события "получение фокуса" с примерно таким кодом
Код:
Private Sub преподаватель_GotFocus()
Me.преподаватель.Requery
End Sub
Me.преподаватель.Requery
End Sub
8. Все. Теперь при переходе к новой записи поле автоподстановок содержит только нужные значения. Не забудте при изменении имени формы изменить его и в источнике строк поля с автоподстановкой.
9. Если на вкладке "макет" свойств формы выбрать "режим по умолчанию" - таблица, а "кнопки перехода" и т. д. - нет, то форма будет выглядеть как таблица.