Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Access подстановка значения

28K
11 июня 2008 года
BlackAnton
8 / / 14.08.2007
Есть три таблицы.
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)

Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.

При использовании подстановки нужно в источник строк написать такой запрос:
SELECT Персонал.ФИО FROM Персонал, Преподает WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;

Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.
1
11 июня 2008 года
kot_
7.3K / / 20.01.2000
Цитата: BlackAnton
Есть три таблицы.
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)

Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.

При использовании подстановки нужно в источник строк написать такой запрос:
SELECT Персонал.ФИО FROM Персонал, Преподает WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;

Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.


Используйте inner join

28K
11 июня 2008 года
BlackAnton
8 / / 14.08.2007
Вопрос в другом, как получить значения предмета текущей (которая вводится сейчас) строки, чтобы ее в запрос записать.
1
13 июня 2008 года
kot_
7.3K / / 20.01.2000
Цитата: BlackAnton
Вопрос в другом, как получить значения предмета текущей (которая вводится сейчас) строки, чтобы ее в запрос записать.


используйте поиск по форуму - как формировать строку запроса писалось сотни и тысяч раз. И формулируйте нормально свои вопросы. Хз как вы вводите вашу строку.

49K
09 февраля 2010 года
ironegg
9 / / 16.06.2009
сталкивался с подобной проблеммой. Я так понял, в акцессе нет простого способа обратиться к текущей записи в таблице.
Вот вариант решения, от новичка новичкам:

1. Создайте в таблице поле автоподстановки с помощю мастера. В выпадающем списке отображаются все возможные значения (что нас не устраивает);
2. Создайте автоформу на основе этой таблицы;
3. Для этой формы, в окне свойств поля с автоподстановкой нажмите кнопку с тремя точками напротив свойства "источник строк". Откроется составленный мастером запрос на автоподстановку в режиме конструктора запросов;
4. В конструкторе запросов для нужного поля заполните строку "условие отбора", выбрав пункт контекстного меню "построить";
5. В открывшемся построителе выражений найдите поле с условием на новой форме и нажмите "вставить". Получившееся выражение и есть ваш пресловутый "ПРЕДМЕТ";
6. Закройте конструкторы. В свойстве "источник строк" содержится примерно следующее
 
Код:
SELECT зпреподсподгруппами.преподаватель, зпреподсподгруппами.предмет FROM зпреподсподгруппами WHERE (((зпреподсподгруппами.предмет)=[Forms]![Форма1]![предмет]));

7. Перейдите на вкладку "события" окна свойств поля с автоподстановкой и создайте обработчик события "получение фокуса" с примерно таким кодом
 
Код:
Private Sub преподаватель_GotFocus()
    Me.преподаватель.Requery
End Sub

8. Все. Теперь при переходе к новой записи поле автоподстановок содержит только нужные значения. Не забудте при изменении имени формы изменить его и в источнике строк поля с автоподстановкой.
9. Если на вкладке "макет" свойств формы выбрать "режим по умолчанию" - таблица, а "кнопки перехода" и т. д. - нет, то форма будет выглядеть как таблица.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог