Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Как вносить новые данные в БД Access?


Автор: kazus 2.9.2007, 16:54
Имеется БД (Access 2003) состоящая из 3-х связанных (заполненных) таблиц. Каким образом в неё можно внасить новые записи? Как дополнять БД?
Заранее благодарю.

Автор: kazus 2.9.2007, 17:10
Сделала Общую форму для добавления, добавляю след. новую запись, выдает ошибку: "Невозможно добавление или изменение запси. Для обеспечения целостности данных необходимо наличие связанной записи в таблице 2."
????? Помогите, пожалуйста, разобраться.

Автор: Anark1 2.9.2007, 17:26
Проблема в том, что на таблицы БД наложено ограничение ссылочной целостности. Ошибка типа "Violating of foreign key".
Сначала стоит узнать, что это такое.

Автор: Akina 2.9.2007, 19:12
Каскадное добавление всегда начинается с таблиц на стороне "один". Ты же пытаешься сразу добавить данные в таблицу на стороне "много".

Автор: kazus 2.9.2007, 21:27
Прошу прощения, за полное отсутствие знаний в этой области, только сегодня села за Access,действовала по рекомендациям из самоучителя- все получилось, кроме запроса на добавление (объединение таблиц)- ошибка: ...нарушение уникальности ключа;
и, совершенно не понятно, как добавлять новые данные в таблицу. Из комментариев выше - не ясно как делать надо?!
Если не затруднит, опишите порядок действий для чайников. Чувствую, что просто должно быть...
Очень благодарю. 

Автор: ТоляМБА 3.9.2007, 09:25
Сервис -> Схема данных
Посмотри с какой таблицей связана твоя, открой ту таблицу, посмотри значения и в свою таблицу в соответствующее поле (видно в схеме данных) вноси только те записи которые есть в той таблице.

Автор: Akina 3.9.2007, 18:41
Цитата(ТоляМБА @  3.9.2007,  10:25 Найти цитируемый пост)
Сервис -> Схема данных

Хорошо, но мало.

Надо еще смотреть макет таблиц - там могут быть поля подстановки.

Автор: kazus 6.9.2007, 19:56
Общая форма для заполнения содержит все поля из первой и второй таблиц.
Например:
"№ (ключ, типа- счетчик)", "ФИО", "группа" - поля Табл.1;
"№ (ключ, типа- счетчик)", "адрес", "тел." - поля Табл.2;
Связь- один к одному полей "№(ключ, типа- счетчик)" между Табл.1 и Табл.2;
Пусть БД из этих двух таблиц состоит.
Как новые данные туда внести????????????????
  smile   smile   smile   smile   smile  smile   smile 
Кто-нибудь знает???

Автор: Anark1 6.9.2007, 21:52
Такие таблицы ты никогда не свяжешь (вернее это реально, но это в корне не правильно). Почему? Потому что у тебя оба поля связи автоинкрементны. Во второй таблице создай некоторое поле Table1_Id. Потом создай внешний ключ и добавляй записи INSERTом. Сначала в главную таблицу, потом в подчиненную. В поле Table1_id добавляешь значение из № таблицы1.

Автор: bopoha 7.9.2007, 23:47
Anark1, очень сложно решение.

Дейстительно в таблицу необходимо добавить поле внешнего ключа Table1_Id - куда будут записываться коды из первичного ключа "№ (ключ, типа- счетчик)" из Таблицы 1.

Дальше делаются две формы. Для таблицы1 и таблицы2 - форма1 и форма2. На форма2 будет подчиненной (надеюсь ты знаешь как добавлять подчиненные формы на форму). Далее в свойствах элемента увпраленя подчиненной формы на вкладке "Даные" необходимо указать отношения между полями. Подчиненные поля - Table1_Id, Основные поля - "№ (ключ, типа- счетчик)".

Все пользователь со спокойной душой может добавить несколько записей.

Автор: Anark1 8.9.2007, 15:21
bopoha, 
в чем сложность ?

Автор: kazus 9.9.2007, 01:41
bopoha, Anark1, спасибо!

Автор: bopoha 10.9.2007, 09:39
Anark1, сложность заключается в том, что записи нужно не только добавлять, но и удалять. Писать каждый раз (если принять этот метод для всех подобных случаев) подобный код утомительно (прикинь полей эдак 50-т INSERT-ом). 

Можно воспользоваться стандартными возможностями. Быстрее, проще, работает!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)