powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление из Excel
8 сообщений из 8, страница 1 из 1
Запрос на обновление из Excel
    #39926389
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею такую базу:

Хочется обновлять таблицы Access данными из таблицы Excel одним заходом. Написал такой запрос:
Код: plsql
1.
2.
3.
4.
SQL_UPDATE = "UPDATE MTSTAT INNER JOIN (MTDATA INNER JOIN MTMAIN ON MTDATA.KEY = MTMAIN.KEYDATA) ON MTSTAT.KEY = MTMAIN.KEYSTAT " & _
             "SELECT (TDI, TDII, TDIII) FROM [METEO_1] IN '" & pth_EXL & "' [Excel 12.0;HDR=YES;] AS TEMP " & _
             "SET MTMAIN.[TDI]=TEMP.[TDI], MTMAIN.[TDII]=TEMP.[TDII], MTMAIN.[TDIII]=TEMP.[TDIII] " & _
             "WHERE (((MTSTAT.STATION)='Станция') AND ((MTDATA.DATA)=#01.01.2019#))"


Однако получаю "ошибка синтаксиса". Это ошибка в запросе или таким макаром вообще обновлять нельзя?
Поправьте запрос если возможно.

пс.
pth_EXL - это путь к файлу Excel
METEO_1 - это таблица Excel с полями TDI, TDII, TDIII
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39926519
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уж, оказывается....

В Microsoft Office Access 2003 или Microsoft Access 2002 запрещается вносить изменения, добавлять или удалять данные, источником которых являются книги Excel.
Из-за возникающих юридических вопросов корпорация Майкрософт отключила функции в Access 2003 и в Access 2002, которые позволяли пользователям изменять данные в связанных таблицах, которые указывали на диапазон в книге Excel.


Значит придется через временную табличку Акса делать.
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39926523
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу собственный пост изменить, как-то это неправильно.

Хотел добавить подправленный запрос, с которым и получил ошибку, пролившую свет на проблему.
Код: plsql
1.
2.
3.
4.
SQL_UPDATE = "UPDATE (SELECT TDI, TDII, TDIII FROM [METEO_1] IN '" & pth_EXL & "' [Excel 12.0;HDR=YES;]) AS TEMP, " & _
             "MTSTAT INNER JOIN (MTDATA INNER JOIN MTMAIN ON MTDATA.KEY = MTMAIN.KEYDATA) ON MTSTAT.KEY = MTMAIN.KEYSTAT " & _
             "SET MTMAIN.[TDI]=TEMP.[TDI], MTMAIN.[TDII]=TEMP.[TDII], MTMAIN.[TDIII]=TEMP.[TDIII] " & _
             "WHERE (((MTSTAT.STATION)='Станция') AND ((MTDATA.DATA)=#01.01.2019#))"


Именно эта ошибка дала понять где проблема.
"ОШИБКА: -2147467259 (Невозможно изменить это поле, поскольку оно находится в связанной электронной таблице Excel. Возможность изменения данных в связанной электронной таблице Excel отсутствует в этом выпуске Access.)"
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39926536
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman

Хочется обновлять таблицы Access данными из таблицы Excel одним заходом. Написал такой запрос:


bormman
"ОШИБКА: -2147467259 (Невозможно изменить это поле, поскольку оно находится в связанной электронной таблице Excel. Возможность изменения данных в связанной электронной таблице Excel отсутствует в этом выпуске Access.)"


Когнитивный диссонанс детектед.

ЗЫ. Не надо придумывать собственный синтаксис update

Код: sql
1.
2.
3.
update t set поле = x.значение
  from Таблица as t
          inner join Excel as x on ...
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39926832
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222

ЗЫ. Не надо придумывать собственный синтаксис update

Код: sql
1.
2.
3.
update t set поле = x.значение
  from Таблица as t
          inner join Excel as x on ...


Этот синтаксис работает в SQL Server, в Access он не работает.
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39927368
bormman, у вас в запросах неправильное представление критерия даты. Должно быть #01/01/2019#. В первом варианте указано:
"SELECT (TDI, TDII, TDIII) FROM [METEO_1] IN '" & pth_EXL & "' [Excel 12.0;HDR=YES;] AS TEMP " & _
а надо
" , ( SELECT (TDI, TDII, TDIII) FROM [METEO_1] IN '" & pth_EXL & "' [Excel 12.0;HDR=YES;] ) AS TEMP " & _

В любом случае ваш запрос не взлетит. Таблица Excel у вас никак не связана с другими таблицами. Это делает запрос не обновляемым, что для UPDATE смертельно. А если на листе не одна строка с данными, а несколько, то тогда вообще не понятно, чем вы собираетесь обновлять. Надо сказать, что даже если с таблицей Excel будет INNER JOIN, то запрос тоже будет не обновляемым, т.к. из-за отсутствия уникального индекса предполагается связь многие-ко-многим.

Можно прилинковать таблицу и в запросе применять DLookup к ее полям.
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39927403
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чё связь уже отменили?
...
Рейтинг: 0 / 0
Запрос на обновление из Excel
    #39929688
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий
Да, спасибо за правку. Дату у меня формирует функция, а тут я просто вставил дату (забыл изменить представление).
Но в любом случае не взлетит (причину указал во втором посте). Так, что просто заюзал временную таблицу - туда сливаю все что нужно обновить, а уже с нее обновляю... то же отлично фурычит.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление из Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]