Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1901
Сатир
2002-12-14 17:31
2003.01.02
Closets


4-1941
Cosmic
2002-11-14 19:04
2003.01.02
Как закрыть DOS-окно?


3-1755
LynxSS
2002-12-11 16:39
2003.01.02
Можно ли SQL-м соединить такие 2 таблицы.


8-1840
Медный чайник
2002-09-13 19:46
2003.01.02
Помогите чайнику!


14-1912
Almaren
2002-12-14 14:35
2003.01.02
Как узнать содержание активной записи в БД?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский