Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
ВнизКак обновить данные из связанной таблицы в Access? Найти похожие ветки
← →
Anatoliy (2002-12-11 13:53) [0]ACCESS
В общем есть две таблицы "Ценник" и "Наличие основной". "Наличие основной" - связанная таблица (внешняя) - текстовый файл. Ценник - основная. Нужно обновить поле "Количество" в "Ценник" из "Наличие основной".
Пишу нормальный запрос:
UPDATE Ценник INNER JOIN [Наличие основной] ON Ценник.Код = [Наличие основной].Код SET Ценник.Основной = [Наличие основной].Количество;
- ошибка: нельзя изменять связанные таблицы (!я же не изменяю связанную!)
Пишу тоже вроде нормальный запрос:
UPDATE Ценник SET Ценник.Основной = [Наличие основной].Количество
FROM [Наличие основной]
WHERE (((Ценник.Код)=[Наличие основной].Код));
- ошибка: нельзя писать FROM в UPDATE !!!
Операция до тупости простая, но как в Access это сделать?
← →
sniknik (2002-12-11 14:26) [1]как же не изменяеш связанную join то делаеш, что это если не связь?
во втором, тоже правильно ругается, надо так примерно
UPDATE [Наличие основной] SET Ценник.Основной = [Наличие основной].Количество WHERE (((Ценник.Код)=[Наличие основной].Код))
← →
Anatoliy (2002-12-11 14:29) [2]Так тоже пробовал. При запуске спрашивает значение переменной [Наличие основной].Количество Хотя это поле!
← →
Anatoliy (2002-12-11 14:32) [3]
> как же не изменяеш связанную join то делаеш, что это если
> не связь?
> SET Ценник.Основной = [Наличие основной].Количество;
Я изменяю только таблицу Ценник. [Наличие основной] проходит только как источник данных.
← →
sniknik (2002-12-11 15:01) [4]говорил же примерно. не понимает Аксесс From.
UPDATE Ценник t, [Наличие основной] s SET t.Основной = s.Количество WHERE t.Код = s.Код
так должно
← →
Anatoliy (2002-12-11 16:44) [5]Тот же эффект "Updating data in a linked table is not supported by this ISAM". Хотя во всех вариантах нигде не указывается изменение внешней таблицы.
← →
sniknik (2002-12-11 16:57) [6]Не скажи эффект другой. То была ошибка синтаксиса, и связанные таблици, а теперь "конструкция не поддерживается Исамом".
Подходим к вопросу чем пользуешся? я работаю через Jet 4.0 сервис пак 6, соответствено Mdac 2.7, подключаюсь через ADO.(можно и BDE но алиас ODBC должен все одно "смотреть" в Jet).
короче ставь Udate Jet-у.
← →
sniknik (2002-12-11 17:07) [7]Дико извиняюсь, первый вариант (с INNER JOIN) у меня тоже работает, а я не проверил :((. (но ты зря положил вольный перевод ошибки вместо оригинала, может быть и обратил внимание)
← →
Anatoliy (2002-12-11 17:17) [8]
> UPDATE Ценник INNER JOIN [Наличие основной] ON Ценник.Код
> = [Наличие основной].Код SET Ценник.Основной = [Наличие
> основной].Количество;
В этом варианте была аналогичная ошибка.
Я еще попробовал
UPDATE Ценник SET Ценник.Основной = (SELECT [Наличие основной].Количество FROM [Наличие основной] WHERE (Ценник.Код=[Наличие основной].Код));
теперь ругается "Operation must be use an updatable query."
До Delphi я еще не дошел. Все тестировал прямо в Access.
Среда аналогичная Jet 4.00.6019.00 MDAC 2.7
Я думаю проблема в связанной таблице.
устанавливаемый драйвер ISAM
Специально задаваемый драйвер, который позволяет получить доступ к внешним базам данных в таких форматах как dBASE, Microsoft® Excel и Paradox. ISAM является сокращением от Indexed Sequential Access Method. Ядро базы данных Microsoft Jet устанавливает (загружает) эти драйверы ISAM, когда на них ссылается конкретное приложение. Расположение этих драйверов регистрируется в реестре Microsoft Windows®.
Я думал доступ к текстовому файлу (связаная таблица) идет через ODBC?
← →
Anatoliy (2002-12-11 17:24) [9]
> связанная таблица (внешняя)
Может я неправильно выразился. Таблица [Наличие основной] на самом деле текстовый файл, присоединенный к БД через мастер присоединенных таблиц.
← →
sniknik (2002-12-11 17:42) [10]> неправильно выразился
да ты вообще молчал об этом, как партизан ей богу. со связаной точно не выйдет. перегоняй во временную.
> идет через ODBC
нет это сам Jet. Переброс из текста.
SELECT * INTO [Наличие основной] FROM [Наличие основной#Txt] IN "D:\" "Text;"
← →
Anatoliy (2002-12-11 17:53) [11]Извиняюсь за неточность. Я очень хотел обойтись без временных таблиц и добавления данных в БД. Очень она разростается после этого.
Спасибо.
А можно узнать причину, почему не получается такой вариант. Вроде все по честному!
← →
sniknik (2002-12-11 18:18) [12]> почему не получается такой вариант.
а черт его знает вернее микрософт... :о). можно поискать у них на сайте.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c