|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Есть запрос с подзапросами. Не работает и выдает ошибку "В операции должен использоваться обновляемый запрос". Если результаты хранимого запроса сохранить в таблицу и использовать ее в самом последнем запросе, все работает. Но хотелось бы по-человечески. В чем смысл данного сообщения об ошибке и как его избежать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:05 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Смысл в том, что данный запрос необновляемый, а требуется обновляемый. Чтобы этого избежать, надо использовать обновляемый запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:07 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Владимир Саныч , а в чем разница? У меня сейчас нет доступа к нормальному HELP. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:08 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Обновляемый = updatable. Такой, в котором можно менять данные. Необновляемый - такой, в котором нельзя. Пример. select * from A, B Если в обеих таблицах по 2 записи, то всего будет показано 4. Но редактировать это нельзя - Аксесс не поймет, к какой именно записи относятся изменения. И добавлять данные он тоже не даст. Это даже на экране видно - он не покажет внизу строчку со звездочкой. Вот это и есть необновляемый запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:15 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Не понял я ничего. Почему же с temp-таблицей прошло? Ведь там те же данные, что и в хранимом подзапросе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:24 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
2 Varan Какая разница, какие там данные?:) Смысл в том, что в таблице можно данные редактировать, а в этом запросе нет. Написали уже, для того, чтобы данные можно было редактировать - нужен обновляемый источник данных для формы, ваш запрос таковым не является. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:36 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Таблица всегда обновляемая. Есть разница, физические ли данные перед нами (прямо из таблицы) или результат хитрого запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:37 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
а необновляемым бывает: запрос с group by / distinct запрос по прилинкованной таблице (файлу) драйвер у которой не поддерж обновления любые их комбинации явно что-нибудь еще ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:39 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Ну как же, у тебя теперь есть таблица и выборка по ней стала обновляемая. Если продолжать аналогию Саныча - , мы из A и B создаем общую временную таблицу и теперь простая выборка (по сути возвращающая те же записи) будет уже обновляемая. У Гетца в главе про SQL всегда написана какие команды какие выборки возращают: обновляемые или необновляемые. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:40 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Надо будет устранить пробел в знаниях в этом вопросе. А пока обойдусь темп таблицей. Вообще мне хотелось бы обсудить этот запрос в упрощенном варианте, он достаточно интересный. Если вы не против, попозже я здесь это сделаю ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 14:48 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Ну так а что его обсуждать... тем более в упрощенном виде. Просто есть запросы которые возвращают необновляемые наборы. Это не какое-то шаманство, есть ряд характерных признаков, который приведет к тому что запрос станет не обновляемым. Их надо просто знать применительно к Access. Ну и просто логическим путем можно домыслить, что большинство таких не обновляемых наборов получается тогда , когда выводимые записи уже не соответствуют исходной таблице. Например ты применяешь группировку, естветственно полученная запись никак не может быть соотнесена ни с одной записью из таблицы. Просто задайся вопросом, если в показаном запросе я изменю значение одного из поля, как Access догадается в какой реальной записе надо поменять значение. Бывают конечно исключения, когда вроде бы по идее есть прямое соответствие, а запрос - необновляемый. Просто на какую-то команду SQL команду Access всегда возвращает необновляемый набор, программисты мелкософта решили перестраховаться. Ну такие варианты надо просто знать. На мой взгляд обсуждать требуется именно конкретные задачи. Когда надо из работающего необновляемого запроса кровь из носу получить обновлямый. Вот эта задачка... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 15:47 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Кстати, в исходном вопросе я ожидал, что будет приведен селект. И будет спрошено, как привести его к обновляемому виду. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 15:52 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Я приведу Select, (вернее Update), только таблицы и поля переименую и еще раз подумаю над всем этим делом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 16:11 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Я приведу Select, (вернее Update), Ну родной, Update ты каким макаром должен сделать обновляемым???? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 16:35 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Вернее как он получился необновляемым то...?! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 16:42 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Update - обновляет записи в талблице - что ты хочешь обновить в самом запросе и как ты себе это представляешь?:) Оновляемой может быть инструкция SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 16:51 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
2 SergeySV авторКогда надо из работающего необновляемого запроса кровь из носу получить обновлямый. Вот эта задачка... Обычно не получается переписать запрос на обновляемый. Решения: Создаём дополнительные формы для обработки информации по критериям и в запросе но на однозначных талицах либо на обновляемых запросах. Либо темповая таличка - самый распространнённый вариант (много тем про кростабы на форуме тому пример). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 16:55 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Hummer, "Ну родной, Update ты каким макаром должен сделать обновляемым" Я хочу, чтобы моя цепочка запросов, последний из которых - запрос на обновление, отработала без сообщений об ошибках. Сейчас, если не использовать временной таблицы, запрос на обновление не работает, выскакивает сообщение "В операции должен использоваться обновляемый запрос" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 18:35 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Вы писали :Я хочу, чтобы моя цепочка запросов, последний из которых - запрос на обновление, отработала без сообщений об ошибках можно пошутить (хорошее настроени) повесь последний запрос на кнопку и "отключи обработчик ошибок" тогда всё будет работать как ты хочешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 18:43 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
vlad_707, :-) Тестовый пример лежит тут Тексты внешних запросов Нерабочий: UPDATE t2 INNER JOIN (qryOldPercent INNER JOIN t3 ON qryOldPercent.t4_fk = t3.t4_fk) ON (t2.t2_id = t3.t2_fk) AND (t2.t1_FK = qryOldPercent.t1_FK) SET t3.t3_Value = [t2]![t2_Value]*[qryOldPercent]![t3_Persent], t3.t3_Persent = [qryOldPercent]![t3_Persent] WHERE (((t2.isActive)=True)); Рабочий: UPDATE (temp INNER JOIN t2 ON temp.t1_FK = t2.t1_FK) INNER JOIN t3 ON (t2.t2_id = t3.t2_fk) AND (temp.t4_FK = t3.t4_fk) SET t3.t3_Value = [t2]![t2_Value]*[Temp]![t3_Percent], t3.t3_Persent = [Temp]![t3_Percent] WHERE (((t2.isActive)=True)); ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 21:10 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Получилось. Я убрал из апдейта запрос qryOldPercent, который был нужен только для извлечения новых значений, и обратился к нему через DLookUp. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Отдаю себе отчет, что DLookUp - это медленно. Но зато работает. Кроме того, я несколько упростил запрос qryOldPercent. Я убрал из него одну лишнюю таблицу и одно лишнее поле. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2004, 22:58 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Владимир Саныч, Большое спасибо. Дойду до компа, посмотрю Ваш вариант повнимательнее. И все-таки - почему оно не работало, что именно ему там не нравилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2004, 11:49 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Не работало потому, что там в Join'ы был включен запрос с группировкой. Естественно, что в таком запросе каждая запись соответствует группе записей из таблицы, а не одной конкретной записи. Вот Аксесс и не знает, в какой записи менять данные. P.S. Валера, предлагаю все-таки на "ты". :^))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2004, 02:38 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
Такая же проблема - из-за группировки не работал запрос. Решил проблему через временную таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 14:35 |
|
В операции должен использоваться обновляемый запрос
|
|||
---|---|---|---|
#18+
А можно все-таки подробнее как решить эту проблему? Сделал такой запрос Код: vbnet 1.
- с явной передачей запроса. Не вышло, как ожидалось. Код: vbnet 1. 2.
- ошибка как раз насчет обновляемого запроса. Подскажите кодом как решить ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2020, 15:34 |
|
|
start [/forum/topic.php?fid=45&fpage=19&tid=1610172]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 308ms |
total: | 453ms |
0 / 0 |