Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.02;
Скачать: CL | DM;

Вниз

Как обновить данные из связанной таблицы в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
1-1800
Olesia_K
2002-12-20 15:06
2003.01.02
Документация на русском по TreeView


4-1928
Dpoxa
2002-11-16 21:59
2003.01.02
Как мне сменить кодировку в моем почтовой программе ?


6-1848
nickolayLI
2002-10-21 07:16
2003.01.02
найти тачку в сети с заданным портом


14-1895
LongIsland
2002-12-13 21:41
2003.01.02
Что за ....?


4-1924
Loda
2002-11-12 15:53
2003.01.02
Список окон у MDI формы