![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обновить данные из связанной таблицы в Access? [D6, Access]
Anatoliy © (2002-12-11 13:53:00)ACCESS
В общем есть две таблицы "Ценник" и "Наличие основной". "Наличие основной" - связанная таблица (внешняя) - текстовый файл. Ценник - основная. Нужно обновить поле "Количество" в "Ценник" из "Наличие основной".
Пишу нормальный запрос:
UPDATE Ценник INNER JOIN [Наличие основной] ON Ценник.Код = [Наличие основной].Код SET Ценник.Основной = [Наличие основной].Количество;
- ошибка: нельзя изменять связанные таблицы (!я же не изменяю связанную!)
Пишу тоже вроде нормальный запрос:
UPDATE Ценник SET Ценник.Основной = [Наличие основной].Количество
FROM [Наличие основной]
WHERE (((Ценник.Код)=[Наличие основной].Код));
- ошибка: нельзя писать FROM в UPDATE !!!
Операция до тупости простая, но как в Access это сделать?
sniknik (2002-12-11 18:18:00) [1]> почему не получается такой вариант.
а черт его знает вернее микрософт... :о). можно поискать у них на сайте.
Anatoliy (2002-12-11 17:53:00) [2]Извиняюсь за неточность. Я очень хотел обойтись без временных таблиц и добавления данных в БД. Очень она разростается после этого.
Спасибо.
А можно узнать причину, почему не получается такой вариант. Вроде все по честному!
sniknik (2002-12-11 17:42:00) [3]> неправильно выразился
да ты вообще молчал об этом, как партизан ей богу. со связаной точно не выйдет. перегоняй во временную.
> идет через ODBC
нет это сам Jet. Переброс из текста.
SELECT * INTO [Наличие основной] FROM [Наличие основной#Txt] IN "D:\" "Text;"
Anatoliy (2002-12-11 17:24:00) [4]
> связанная таблица (внешняя)
Может я неправильно выразился. Таблица [Наличие основной] на самом деле текстовый файл, присоединенный к БД через мастер присоединенных таблиц.
Anatoliy (2002-12-11 17:17:00) [5]
> 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?
sniknik (2002-12-11 17:07:00) [6]Дико извиняюсь, первый вариант (с INNER JOIN) у меня тоже работает, а я не проверил :((. (но ты зря положил вольный перевод ошибки вместо оригинала, может быть и обратил внимание)
sniknik (2002-12-11 16:57:00) [7]Не скажи эффект другой. То была ошибка синтаксиса, и связанные таблици, а теперь "конструкция не поддерживается Исамом".
Подходим к вопросу чем пользуешся? я работаю через Jet 4.0 сервис пак 6, соответствено Mdac 2.7, подключаюсь через ADO.(можно и BDE но алиас ODBC должен все одно "смотреть" в Jet).
короче ставь Udate Jet-у.
Anatoliy (2002-12-11 16:44:00) [8]Тот же эффект "Updating data in a linked table is not supported by this ISAM". Хотя во всех вариантах нигде не указывается изменение внешней таблицы.
sniknik (2002-12-11 15:01:00) [9]говорил же примерно. не понимает Аксесс From.
UPDATE Ценник t, [Наличие основной] s SET t.Основной = s.Количество WHERE t.Код = s.Код
так должно
Anatoliy (2002-12-11 14:32:00) [10]
> как же не изменяеш связанную join то делаеш, что это если
> не связь?
> SET Ценник.Основной = [Наличие основной].Количество;
Я изменяю только таблицу Ценник. [Наличие основной] проходит только как источник данных.
Anatoliy (2002-12-11 14:29:00) [11]Так тоже пробовал. При запуске спрашивает значение переменной [Наличие основной].Количество Хотя это поле!
sniknik (2002-12-11 14:26:00) [12]как же не изменяеш связанную join то делаеш, что это если не связь?
во втором, тоже правильно ругается, надо так примерно
UPDATE [Наличие основной] SET Ценник.Основной = [Наличие основной].Количество WHERE (((Ценник.Код)=[Наличие основной].Код))