powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление данными, взятыми из Запроса с группировкой
5 сообщений из 5, страница 1 из 1
Запрос на обновление данными, взятыми из Запроса с группировкой
    #32298748
Ташка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, All!
Мне необходимо обновить таблицу данными из другой таблицы, при этом не просто данными из другой таблицы, а сгруппированными данными.
Есть запрос с группировкой, в котором я подсчитываю некоторые суммы по каждому клиенту. Эти самые суммы мне необходимо записать в таблицу Клиенты. Таблицы связаны между собой "один ко многим".
Пытаюсь выполнить запрос на обновление:

UPDATE Клиенты INNER JOIN ЗапросПроводки ON Клиенты.КлиентID = ЗапросПроводки.КлиентID SET Клиенты.Сумма = ЗапросПроводки.SumСумма;
где "ЗапросПроводки" - это запрос с группировкой, который подсчитывает сумму.

Ничего не получается! Говорит, что "В операции должен использоваться обновляемый запрос", а как он может быть обновляемым, если в нем используется запрос с группировкой? Если я выкидываю объединение таблицы с запросом:
UPDATE Клиенты SET Клиенты.Сумма = ЗапросПроводки.SumСумма;
то у меня просят ввести параметр "ЗапросПрододки.SumСумма"!

Уже хоть плач, а ничего не получается! Подскажите, пожалуйста, как можно обновить таблицу данными, взятыми из запроса с группировкой.
...
Рейтинг: 0 / 0
Запрос на обновление данными, взятыми из Запроса с группировкой
    #32298834
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак.
Скидывать во временную табличку - потом обновлять.
А структуру базы наверное лучше по-другому строить - IdClient, Summa - вот и табличка с итогами или ещё с чем угодно...
А для отчёта вязать клиенты с итогами по проводкам.
...
Рейтинг: 0 / 0
Запрос на обновление данными, взятыми из Запроса с группировкой
    #32298850
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, как можно обновить таблицу данными, взятыми из запроса с группировкой.
В аксесе (mdb) одним SQL-запросом - никак
Можно кодом. Наподобие следующего

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim rstSource As Recordset
Set rstSource = CurrentDb.OpenRecordset( "ЗапросПроводки" )

Dim qryUpdateClients As Recordset
Set qryUpdateClients = CurrentDb.CreateQueryDef( "" , " Parameters prmClientID Long, prmNewSum IEEEDouble ; " & _
    " Update [Клиенты] Set [Клиенты].[Сумма] = prmNewSum Where [Клиенты].[КлиентID]=prmClientID")

Do Until rstSource.EOF
    qryUpdateClients.Parameters!prmClientID = rstSource![КлиентID]
    qryUpdateClients.Parameters!prmNewSub = rstSource![SumСумма]
    qryUpdateClients.Execute dbFailOnError

    rstSource.MoveNext
Loop   

qryUpdateClients.Close : Set qryUpdateClients = Nothing
rstSource.Close : Set rstSource = Nothing


Писано на коленке, если что не так - сильно меня не пинать.

Можно еще временные таблицы использовать. Туда просуммированные данные скинуть, потом с ней джойнить.
...
Рейтинг: 0 / 0
Запрос на обновление данными, взятыми из Запроса с группировкой
    #32298854
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наполовину апаздал.
...
Рейтинг: 0 / 0
Запрос на обновление данными, взятыми из Запроса с группировкой
    #32299274
Ташка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Списибо огромнейшее!!! Все получилось :-) Сделала программным путем. Просто я думала, что как-то можно выполнить такое одним запросом и у меня не получается только из-за отсутствия хоть чего-нибудь в голове :-)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление данными, взятыми из Запроса с группировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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