![]() |
Добавление новых значений связанных полей в Access
Пусть в базе данных Access (располагаю версией 2007) ключевое поле главной таблицы (скажем, текстового типа) связано с неключевым полем подчинённой таблицы по типу «один-ко-многим». Связь осуществилась с помощью Мастера подстановок. При создании связи пусть указано, как по умолчанию: «Ограничиться списком?» -> «Нет», т.е. целостность данных сознательно не обеспечена.
Создаётся форма на основании подчинённой таблицы. Пусть требуется с помощью этой формы создать новую запись. Выбирается через раскрывающийся список соответствующее связанному полю ключевое поле главной таблицы, а нужного значения ключевого поля пока нет. Видится 2 способа его добавления. 1. Закрыть форму, открыть главную таблицу и в ней добавить недостающее значение ключевого поля, что представляется не совсем удобным. 2. Т.к. целостность данных не обеспечена, можно в форме самим вручную написать новое значение поля. Понятно, через копирование и вставку это значение можно впоследствии перенести и в главную таблицу, там его проверка на уникальность автоматически и произойдёт. НО! Можно ли каким-либо образом сделать, чтобы это новое значение связанного поля, добавленное в форме, само подставилось именно в новую запись главной таблицы? Разумеется, если это значение ранее в ней не встречалось. Заранее благодарю. |
можно навесить код на VBA на SelectedIndexChanged. В коде проверить, есть ли в таблице выбранная запись. Если ее нет, то вызвать запрос с параметром(его написать заранее), который будет добавлять запись в таблицу.
|
Ну запрос с параметром - это понятно. Осталось узнать, как навесить код на VBA.
|
Цитата:
|
Осталось бы знать, какой код. Алгоритм представляю.
Индикатор = ложь Для всех записей в добавляемую таблицу: Если значение ключевого поля = значению добавленного текстового поля, то: Индикатор = истина Выход из цикла Конец условного оператора Конец цикла Если не(индикатор), то: Добавить в таблицу запись Значение ключевого поля = значение добавленного текстового поля Конец условного оператора *** Но не знаю, как бы это реализовать на VBA. |
Время: 07:13. |
Время: 07:13.
© OSzone.net 2001-