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

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

интересно, ты ставишь апдейт на таблицу заказы а поменять хочешь temp1.cena, это как?
...
Рейтинг: 0 / 0
10.05.2004, 16:58
    #32512155
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
А что должен делать этот Sum? Это ведь запрос без группировки.
...
Рейтинг: 0 / 0
10.05.2004, 17:43
    #32512186
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Общая картина такая: в таблицу temp1 выкатывается некоторый набор данных, с которыми пользователь будет потом работать. В принципе все делается одним запросом , но при этом возникает очень большая пауза. Вот я и решил разделить заполнение таблицы на этапы, при этом пользователь получает некие сообщения...вообщем не скучает. :)
Сначала в таблицу попадают "базовые" данные(запрос на добавление ), а потом идет серия запросов на обновление , которые помещают в таблицу остальные данные. Все запросы работают, кроме этого. Его логика такая: в таблице Заказы найти записи у которых КодЗаписи совпадает с имеющимися в таблице temp1, в этих записях Цену умножить на Количество, добавить Доплату. Так как в табл.Заказы может быть несколько записей с одним значением КодЗаписи, то суммировать результат и поместить его в поле [Cena] таблицы temp1.
...
Рейтинг: 0 / 0
10.05.2004, 18:00
    #32512204
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Код: plaintext
1.
2.
3.
Update temp1  SET temp1.Cena = 
               (select Sum([Заказы]![Price]*[Заказы]![Quantity]+[Заказы]!Doplata]    
               from  Заказы 
               where Заказы.КодЗаписи =temp1.КодЗаписи);
...
Рейтинг: 0 / 0
10.05.2004, 19:06
    #32512264
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
2 Sfagnum:
нельзя апдейтить таблицу которая используется в выборке...
Не понял: если не включить нужную таблицу в запрос, то как ее можно обновлять(речь идет об Конструкторе запроса Аксесса)? Может речь идет о случаях использования групповых операций в обновлении?
2(с)VIG
Дословное повторение твоего совета(+ исправление ошибок с непарными скобками) вызывает сообщение:
"В операции должен использоваться обновляемый запрос". Но что интересно: сам подчиненный запрос (при введении параметра с клавиатуры) возвращает правильные данные.
...
Рейтинг: 0 / 0
11.05.2004, 10:27
    #32512669
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Продолжаю биться с запросом. С логической стороны вроде все правильно(в варианте от (с)VIG), а работать не хочет. Кто-нибудь использовал подобную конструкцию?
...
Рейтинг: 0 / 0
11.05.2004, 11:25
    #32512790
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
VIG прав. Недостающая скобка в конце второй строки.
...
Рейтинг: 0 / 0
11.05.2004, 11:28
    #32512800
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Не понял кто и в чем прав - недостающую скобку ведь я доставил, но это ничего не решило, и не помогло - по прежнему получаю сообщение о необновляемом запросе. :(((
...
Рейтинг: 0 / 0
11.05.2004, 11:42
    #32512834
Geo
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
11.05.2004, 12:11
    #32512892
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
C дополнительными времянками, понятно, будет работать. Но хочется докопаться - почему этот вариант не работает?
...
Рейтинг: 0 / 0
11.05.2004, 12:16
    #32512900
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
М.б. потому, что подзапрос необновляемый?
...
Рейтинг: 0 / 0
11.05.2004, 12:30
    #32512924
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Вот эта вот хрень в подзапросе
Код: plaintext
where Заказы.КодЗаписи =temp1.КодЗаписи
это по сути INNER JOIN. А JOIN с запросом где SUM ясное дело даст необновляемый запрос.
...
Рейтинг: 0 / 0
11.05.2004, 12:37
    #32512935
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
А почему, когда открываешь запрос на обновление в режиме таблицы, у него вид как у обновляемого - значек перехода на новую запись доступен?
...
Рейтинг: 0 / 0
11.05.2004, 12:43
    #32512947
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
Согласен: подч.запрос - не обновляемый, но он то причем тут? Ведь обновляется таблица, подч.запрос только поставляет данные для этого и данные поставляет правильные - открывал его одного, и число записей и их значение правильные.
...
Рейтинг: 0 / 0
11.05.2004, 12:53
    #32512958
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
А каким боком подчиненный запрос связывается с основным, т.е. с той таблицей, к-ая должна обновиться? ИМХО, здесь идет что-то типа неявного джойна. И как следствие весь запрос становиться необновляемым. Но это только ИМХО, подчеркну (прошу "отцов" не бить больно )
...
Рейтинг: 0 / 0
11.05.2004, 13:16
    #32513013
Dsum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
jetSQL крив. И это надо принять за факт. Используйте Dsum() И прочие функции D. (После T-SQL обычно всегда накалываешься на такие траблы).
...
Рейтинг: 0 / 0
11.05.2004, 13:17
    #32513016
Roma R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе на обновление.
А если использовать функцию DSum

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


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