powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в запросе на обновление.
20 сообщений из 20, страница 1 из 1
Ошибка в запросе на обновление.
    #32512055
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка выполнить запрос:
Код: plaintext
1.
UPDATE DISTINCTROW Заказы INNER JOIN temp1 ON Заказы.КодЗаписи = temp1.КодЗаписи 
SET temp1.Cena = Sum([Заказы]![Price]*[Заказы]![Quantity]+[Заказы]![Doplata]);
Ошибка: "Попытка выполнить запрос, который не включает выражение Cena как часть статистической функции или группы".
Как бы это обойти? Убрать суммирование никак нельзя - теряется часть данных.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512060
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нельзя апдейтить таблицу которая используется в выборке...
так что не бейся ни хрена не получится. как вариант либо работать с RecordSets, либо с промежуточной/темповой таблицей...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512096
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор UPDATE DISTINCTROW Заказы .....SET temp1.Cena = Sum....

интересно, ты ставишь апдейт на таблицу заказы а поменять хочешь temp1.cena, это как?
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512155
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А что должен делать этот Sum? Это ведь запрос без группировки.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512186
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Общая картина такая: в таблицу temp1 выкатывается некоторый набор данных, с которыми пользователь будет потом работать. В принципе все делается одним запросом , но при этом возникает очень большая пауза. Вот я и решил разделить заполнение таблицы на этапы, при этом пользователь получает некие сообщения...вообщем не скучает. :)
Сначала в таблицу попадают "базовые" данные(запрос на добавление ), а потом идет серия запросов на обновление , которые помещают в таблицу остальные данные. Все запросы работают, кроме этого. Его логика такая: в таблице Заказы найти записи у которых КодЗаписи совпадает с имеющимися в таблице temp1, в этих записях Цену умножить на Количество, добавить Доплату. Так как в табл.Заказы может быть несколько записей с одним значением КодЗаписи, то суммировать результат и поместить его в поле [Cena] таблицы temp1.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512204
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Update temp1  SET temp1.Cena = 
               (select Sum([Заказы]![Price]*[Заказы]![Quantity]+[Заказы]!Doplata]    
               from  Заказы 
               where Заказы.КодЗаписи =temp1.КодЗаписи);
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512264
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sfagnum:
нельзя апдейтить таблицу которая используется в выборке...
Не понял: если не включить нужную таблицу в запрос, то как ее можно обновлять(речь идет об Конструкторе запроса Аксесса)? Может речь идет о случаях использования групповых операций в обновлении?
2(с)VIG
Дословное повторение твоего совета(+ исправление ошибок с непарными скобками) вызывает сообщение:
"В операции должен использоваться обновляемый запрос". Но что интересно: сам подчиненный запрос (при введении параметра с клавиатуры) возвращает правильные данные.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512669
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю биться с запросом. С логической стороны вроде все правильно(в варианте от (с)VIG), а работать не хочет. Кто-нибудь использовал подобную конструкцию?
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512790
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
VIG прав. Недостающая скобка в конце второй строки.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512800
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял кто и в чем прав - недостающую скобку ведь я доставил, но это ничего не решило, и не помогло - по прежнему получаю сообщение о необновляемом запросе. :(((
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512834
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/72695

Предлагаю воспользоваться еще одной временной таблицей, для расчета суммы, а уж данные из нее перекладывать в temp1:

Код: plaintext
Delete * from temp2;

Код: plaintext
insert into temp2 (КодЗаписи, Cena)\nselect Заказы.КодЗаписи, Sum(Заказы.Price*Заказы.Quantity+Заказы.Doplata)\nfrom Заказы\ngroup by Заказы.КодЗаписи;

Код: plaintext
update temp1 inner join temp2 on temp1.КодЗаписи=temp2.КодЗаписи\nset temp1.Cena=temp2.cena;
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512892
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C дополнительными времянками, понятно, будет работать. Но хочется докопаться - почему этот вариант не работает?
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512900
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.б. потому, что подзапрос необновляемый?
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512924
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эта вот хрень в подзапросе
Код: plaintext
where Заказы.КодЗаписи =temp1.КодЗаписи
это по сути INNER JOIN. А JOIN с запросом где SUM ясное дело даст необновляемый запрос.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512935
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему, когда открываешь запрос на обновление в режиме таблицы, у него вид как у обновляемого - значек перехода на новую запись доступен?
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512947
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен: подч.запрос - не обновляемый, но он то причем тут? Ведь обновляется таблица, подч.запрос только поставляет данные для этого и данные поставляет правильные - открывал его одного, и число записей и их значение правильные.
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32512958
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким боком подчиненный запрос связывается с основным, т.е. с той таблицей, к-ая должна обновиться? ИМХО, здесь идет что-то типа неявного джойна. И как следствие весь запрос становиться необновляемым. Но это только ИМХО, подчеркну (прошу "отцов" не бить больно )
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32513013
Dsum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jetSQL крив. И это надо принять за факт. Используйте Dsum() И прочие функции D. (После T-SQL обычно всегда накалываешься на такие траблы).
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32513016
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если использовать функцию DSum

UPDATE temp1 SET temp1.Cena = DSum("Price*Quantity+Doplata","Заказы","КодЗаписи =" & КодЗаписи);
...
Рейтинг: 0 / 0
Ошибка в запросе на обновление.
    #32514313
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Заработало!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в запросе на обновление.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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