powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос на обновление в Excel
3 сообщений из 3, страница 1 из 1
Запрос на обновление в Excel
    #37938367
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, почему не отрабатывает такой запрос на обновление? Выбрасывает ошибку -2147457259(80004005) В операции должен использоваться обновляемый запрос.
Используется Excel 2010 с библиотекой Microsoft ActiveX Data Objects 2.6 Library
Код: vbnet
1.
2.
3.
[/SRC]
    sCom = "Update [результат$] Left Join (Select [Код] As f1,[Наименование продукции] As f2,Sum([Кол-во]) As f3 From [источник данных$] Group By [Код],[Наименование продукции]) As t2"
    sCom = sCom & " On (([результат$].[Код]=t2.f1) And ([результат$].[Наименование продукции]=t2.f2)) Set [результат$].[Кол-во]=t2.f3"


Строка подключения
"Provider=Microsoft.ACE.OLEDB.12.0;Mode=Share Deny None;Data Source="...

Причём, если переделать его в Select запрос для Recordset, то выполняется.
Код: vbnet
1.
2.
    sSQL = "Select t1.[Код],t1.[Наименование продукции],t2.f3 From [результат$] As t1 Left Join (Select [Код] As f1,[Наименование продукции] As f2,Sum([Кол-во]) As f3 From [источник данных$] Group By [Код],[Наименование продукции]) As t2"
    sSQL = sSQL & " On ((t1.[Код]=t2.f1) And (t1.[Наименование продукции]=t2.f2))"
...
Рейтинг: 0 / 0
Запрос на обновление в Excel
    #37938479
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvgПодскажите, ........
---------
Я обычно использую обновляемый рекордсет + поиск или фильтр
...
Рейтинг: 0 / 0
Запрос на обновление в Excel
    #37940723
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R Dmitry ,
Спасибо!
Обходные пути вещь хорошая, но хотелось бы понять почему не работает тоже.
Импортировал таблицы в базу данных Access (движок Microsoft.ACE.OLEDB.12.0 то его). Получил тоже самое сообщение. В конечном счёте выяснилось, что нельзя использовать подзапрос для обновления никаким образом.
То есть создал в базе запрос subQ
Код: sql
1.
SELECT [источник данных$].[Код] AS f1, [источник данных$].[Наименование продукции] AS f2, Sum([источник данных$].[Кол-во]) AS f3 FROM [источник данных$] GROUP BY [источник данных$].[Код], [источник данных$].[Наименование продукции];


для выборки данных обновления, но запрос на обновление не сработал (получил ту же ошибку).
Код: sql
1.
UPDATE [результат$] LEFT JOIN subQ ON ([результат$].[Наименование продукции] = subQ.f2) AND ([результат$].Код = subQ.f1) SET [результат$].[Кол-во] = subQ.f3;


Пришлось создать запросом subQ таблицу tmpT. Вот по таблице обновление прошло успешно.
Так что пути решения моей задачи следующие, применительно к Excel.
1. Как вы предложили.
2. Создать временный лист и по его данным обновить.
3. Добавить на лист "результат" вспомогательный столбец с номерами строк. Используя Select с поздапросом вывести данные на лист, включая столбец номеров строк. Отсортировать по нему для восстановления порядка данных и удалить вспомогательный столбец (модель таблицы позволяет).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос на обновление в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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