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

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

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

Уже хоть плач, а ничего не получается! Подскажите, пожалуйста, как можно обновить таблицу данными, взятыми из запроса с группировкой.
...
Рейтинг: 0 / 0
20.10.2003, 17:18
    #32298834
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление данными, взятыми из Запроса с группировкой
Никак.
Скидывать во временную табличку - потом обновлять.
А структуру базы наверное лучше по-другому строить - IdClient, Summa - вот и табличка с итогами или ещё с чем угодно...
А для отчёта вязать клиенты с итогами по проводкам.
...
Рейтинг: 0 / 0
20.10.2003, 17:26
    #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
20.10.2003, 17:26
    #32298854
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление данными, взятыми из Запроса с группировкой
Наполовину апаздал.
...
Рейтинг: 0 / 0
21.10.2003, 08:24
    #32299274
Ташка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление данными, взятыми из Запроса с группировкой
Списибо огромнейшее!!! Все получилось :-) Сделала программным путем. Просто я думала, что как-то можно выполнить такое одним запросом и у меня не получается только из-за отсутствия хоть чего-нибудь в голове :-)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление данными, взятыми из Запроса с группировкой / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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