Войти

Показать полную графическую версию : Добавление новых значений связанных полей в Access


Доярка
17-01-2013, 12:39
Пусть в базе данных Access (располагаю версией 2007) ключевое поле главной таблицы (скажем, текстового типа) связано с неключевым полем подчинённой таблицы по типу «один-ко-многим». Связь осуществилась с помощью Мастера подстановок. При создании связи пусть указано, как по умолчанию: «Ограничиться списком?» -> «Нет», т.е. целостность данных сознательно не обеспечена.
Создаётся форма на основании подчинённой таблицы. Пусть требуется с помощью этой формы создать новую запись. Выбирается через раскрывающийся список соответствующее связанному полю ключевое поле главной таблицы, а нужного значения ключевого поля пока нет. Видится 2 способа его добавления.
1. Закрыть форму, открыть главную таблицу и в ней добавить недостающее значение ключевого поля, что представляется не совсем удобным.
2. Т.к. целостность данных не обеспечена, можно в форме самим вручную написать новое значение поля. Понятно, через копирование и вставку это значение можно впоследствии перенести и в главную таблицу, там его проверка на уникальность автоматически и произойдёт.
НО! Можно ли каким-либо образом сделать, чтобы это новое значение связанного поля, добавленное в форме, само подставилось именно в новую запись главной таблицы? Разумеется, если это значение ранее в ней не встречалось.
Заранее благодарю.

Delirium
18-01-2013, 15:18
можно навесить код на VBA на SelectedIndexChanged. В коде проверить, есть ли в таблице выбранная запись. Если ее нет, то вызвать запрос с параметром(его написать заранее), который будет добавлять запись в таблицу.

Доярка
18-01-2013, 15:21
Ну запрос с параметром - это понятно. Осталось узнать, как навесить код на VBA.

Delirium
21-01-2013, 09:33
как навесить код на VBA. »
Свойства текстового поля в режиме конструктора формы. Ищем нужное свойство. Прописываем туда код.

Доярка
21-01-2013, 13:48
Осталось бы знать, какой код. Алгоритм представляю.
Индикатор = ложь
Для всех записей в добавляемую таблицу:
Если значение ключевого поля = значению добавленного текстового поля, то:
Индикатор = истина
Выход из цикла
Конец условного оператора
Конец цикла
Если не(индикатор), то:
Добавить в таблицу запись
Значение ключевого поля = значение добавленного текстового поля
Конец условного оператора
***
Но не знаю, как бы это реализовать на VBA.




© OSzone.net 2001-2012