Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
ЕвгенийКот
3 / 3 / 0
Регистрация: 17.04.2013
Сообщений: 57
#1

Update бд из данных связанной таблицы - MS Access

17.04.2013, 09:17. Просмотров 1626. Ответов 7
Метки нет (Все метки)

Помогите разобраться, при апдейте выдает сообщение "обновление данных в присоединенной (или связанной) таблице не поддерживается этим драйвером ISAM" - понимаю смысл сообщения, аксесс думает что я пытаюсь изменить связанную таблицу

test - связанная таблица из txt
бд - бд в аксессе

запрос такой:

SQL
1
2
3
UPDATE test LEFT OUTER JOIN бд
ON test.Номер_договора = бд.Номер_договора
SET бд.срок = test.срок, бд.Номер_договора = test.Номер_договора, бд.Сумма_по_договору = test.Сумма_по_договору, бд.Кредитный_продукт = test.Кредитный_продукт;
Я же SETом обновляю поля бд, а не testа, почему она ругается?
если я заменю SET на поля не из test (присоединенной бд) допустим
бд.срок = 1, бд.Номер_договора = 2, бд.Сумма_по_договору = 3, бд.Кредитный_продукт = 4

то все работает на ура! в чем засада и как ее победить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 09:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Update бд из данных связанной таблицы (MS Access):

Добавление данных в форму из таблицы связанной с другой формой.
У меня есть две формы, они связаны с разными таблицами. Как сделать, чтобы при...

Запрос для копирования данных из связанной таблицы и изменения формата даты
Добрый день, впервые сталкиваюсь с работой в Access'e, хотел бы спросить очень...

Автоматическое заполнение данных в поле таблицы при заполнении формы по связанной таблице
Добрый день! Прошу помощи: сама в Access на уровне пользователя, но жизнь...

UPDATE данных таблицы из другой таблицы другой базы данных
Добрый день! Прочитал на форму много на похожие темы, но у меня пока не...

Перенос данных из одной таблицы в другую при помощи Update
Добрый деннь! Есть 2 таблицы в одной базе. 1-я - Фирмы, 2-я Выборка. В...

Имя связанной таблицы
Есть таблица в одной базе с именем 'X'. С ней установлена связь из другой базы...

7
mobile
Эксперт MS Access
22494 / 12812 / 2612
Регистрация: 28.04.2012
Сообщений: 14,014
17.04.2013, 09:39 #2
Названная ошибка только первая в цепи. Даже если бы ее не было, джет завопит о необновляемом запросе. И будет прав, поскольку в соединении Left Join нет гарантии однозначности связанных записей.
Но можно применить длукапы. Они решат проблему, хотя и медленнее
Запрос, в предположении, что Номер_договора числовое поле
SQL
1
2
3
4
UPDATE бд
SET срок = dlookup("срок","test", "Номер_договора = " & бд.Номер_договора),
Сумма_по_договору =dlookup("Сумма_по_договору","test", "Номер_договора = " & бд.Номер_договора), 
Кредитный_продукт = dlookup("Кредитный_продукт","test", "Номер_договора = " & бд.Номер_договора)
Обновление поля [Номер_договора] убрано из запроса. Оно не нужно и не логично. Связь с test по этому полю, что ж его обновлять.
0
ЕвгенийКот
3 / 3 / 0
Регистрация: 17.04.2013
Сообщений: 57
17.04.2013, 10:10  [ТС] #3
Спасибо, но эффект не тот! Смысл запроса в том что в testе изменяется срок договоров и его нужно менять в бд, а также появляются новые договоры, по ктр. нужно добавлять все поля в т.ч. и Номер_договора.

Работает очень долго-да, но получает пустые значения(((

Добавлено через 10 минут
P.s. Номер договора - текст
0
mobile
Эксперт MS Access
22494 / 12812 / 2612
Регистрация: 28.04.2012
Сообщений: 14,014
17.04.2013, 10:30 #4
Цитата Сообщение от ЕвгенийКот Посмотреть сообщение
Спасибо, но эффект не тот! Смысл запроса в том что в testе изменяется срок договоров и его нужно менять в бд, а также появляются новые договоры, по ктр. нужно добавлять все поля в т.ч. и Номер_договора.
Новые записи - запросом на вставку. Но не на обновление

Цитата Сообщение от ЕвгенийКот Посмотреть сообщение
Работает очень долго-да(((
Это так, длукапы медленные

Цитата Сообщение от ЕвгенийКот Посмотреть сообщение
P.s. Номер договора - текст
SQL
1
2
3
4
UPDATE бд
SET срок = dlookup("срок","test", "Номер_договора = '" & бд.Номер_договора & "'"),
Сумма_по_договору =dlookup("Сумма_по_договору","test", "Номер_договора = '" & бд.Номер_договора & "'"), 
Кредитный_продукт = dlookup("Кредитный_продукт","test", "Номер_договора = '" & бд.Номер_договора & "'")
1
ЕвгенийКот
3 / 3 / 0
Регистрация: 17.04.2013
Сообщений: 57
17.04.2013, 10:38  [ТС] #5
Около 10000 записей...(((((
0
ЕвгенийКот
3 / 3 / 0
Регистрация: 17.04.2013
Сообщений: 57
10.07.2013, 19:35  [ТС] #6
Кто предложит вариант побыстрее?
0
mobile
Эксперт MS Access
22494 / 12812 / 2612
Регистрация: 28.04.2012
Сообщений: 14,014
10.07.2013, 20:13 #7
Значительно быстрее будет если сделать в 2 этапа: сначала запросом на создание таблицы (или вставку) сделать таблицу в БД из текстового файла. А затем уже запросом, аналогичным запросы из первого поста (только с INNER JOIN), апдейтить
SQL
1
SELECT * INTO testDB FROM test
SQL
1
2
3
4
5
UPDATE testDB INNER JOIN бд ON testDB.Номер_договора = бд.Номер_договора
SET бд.срок = testDB.срок, 
бд.Номер_договора = testDB.Номер_договора, 
бд.Сумма_по_договору = testDB.Сумма_по_договору, 
бд.Кредитный_продукт = testDB.Кредитный_продукт;
1
ЕвгенийКот
3 / 3 / 0
Регистрация: 17.04.2013
Сообщений: 57
11.07.2013, 10:15  [ТС] #8
Блин, как же элементарно! Спасибо!))))))
0
11.07.2013, 10:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 10:15
Привет! Вот еще темы с решениями:

Обновление связанной таблицы
Есть форма Заказы, в которой указываются данные клиента, сделавшего заказ. Как...

Сумма значений связанной таблицы
Здравствуйте, подскажите, пожалуйста, как реализовать: необходимо, чтобы в...

Запрос пароля связанной таблицы
Всем привет! Создал базу на работу...И для работы сделал связь с основной базой...

Удаление таблицы, связанной с формой
Доброго времени суток. Ребята подскажите пожалуйста как обойти след....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru