Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 operation must use an updateable query  [new]
UZ
Guest
привет, очень тупой вопроc. вот такой вот простой запросик нормально работает на SQL Server:

UPDATE Orders
SET PackageGroupID = (SELECT MAX(ID) FROM PackageGroups)
WHERE ID =2

однако, на Access выдаётся сообщение "operation must use an updateable query", в чёи дело??? заранее спасибо
15 июн 04, 18:19    [743491]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
paparome
Member

Откуда: Москва
Сообщений: 4312
Дело в том, что подзапрос не обновляем :(
15 июн 04, 18:21    [743495]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
UZ
Guest
paparome
Дело в том, что подзапрос не обновляем :(


это я понял, так можно ли как-то переписать этот элементарный запрос под Access?
15 июн 04, 18:22    [743498]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
paparome
Member

Откуда: Москва
Сообщений: 4312
Попробуй вместо подзапроса функцию DMax использовать?
Вдруг поможет :)

PS: не проверял
15 июн 04, 18:25    [743505]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
UZ
Guest
paparome
Попробуй вместо подзапроса функцию DMax использовать?
Вдруг поможет :)

PS: не проверял


ну хорошо, а если бы был такой подзапрос, для которого небыло бы подходящей функции? великий Access не поддерживает такую элементарную операцию?????
15 июн 04, 18:33    [743530]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
paparome
Member

Откуда: Москва
Сообщений: 4312
UZ

ну хорошо, а если бы был такой подзапрос, для которого небыло бы подходящей функции? великий Access не поддерживает такую элементарную операцию?????


Насчет хорошо - я даже не знаю, будет ли работать с функцией DMax!

Про сложный подзапрос:
1. Если с функцией работает, то кто вам мешает написать свою "сложную" функцию
2. Это всета-ки надо с конкретным запросом разбираться, ибо панацеи не существует
3. И в конце концов - можно результат сложного подзапроса сбрасывать во "временную" таблицу и уже на ее основе строить запрос на обновление
15 июн 04, 18:38    [743544]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
UZ
Guest
paparome
UZ

ну хорошо, а если бы был такой подзапрос, для которого небыло бы подходящей функции? великий Access не поддерживает такую элементарную операцию?????


Насчет хорошо - я даже не знаю, будет ли работать с функцией DMax!

Про сложный подзапрос:
1. Если с функцией работает, то кто вам мешает написать свою "сложную" функцию
2. Это всета-ки надо с конкретным запросом разбираться, ибо панацеи не существует
3. И в конце концов - можно результат сложного подзапроса сбрасывать во "временную" таблицу и уже на ее основе строить запрос на обновление


DMax работает, за это спасибо большое. Просто всё это показывает один большой недостаток Access SQL, я для SQL Server такие запросища огромные писал, строк на 100. А Access на самом элементарном обломал, жаль...
15 июн 04, 18:46    [743559]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
Про сложный подзапрос:
1. Если с функцией работает, то кто вам мешает написать свою "сложную" функцию
2. Это всета-ки надо с конкретным запросом разбираться, ибо панацеи не существует
3. И в конце концов - можно результат сложного подзапроса сбрасывать во "временную" таблицу и уже на ее основе строить запрос на обновление


Пример из жизни:


UPDATE [DocumentArchive] DA SET [document_name] = (SELECT [name] FROM [Document] D WHERE D.document_id = DA.document_id);

DMax тут не поможет.
Вопрос - как сделать пункт 3? Все это надо в гольном Jet SQL
16 июн 04, 17:31    [746175]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Никита А. Зимин

UPDATE [DocumentArchive] DA SET [document_name] = (SELECT [name] FROM [Document] D WHERE D.document_id = DA.document_id);

DMax тут не поможет.

UPDATE [DocumentArchive] DA SET [document_name] = dlookup("name","Document","document_id="&cstr(document_id))
16 июн 04, 17:34    [746191]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
А я уже нашел по-другому:

UPDATE [DocumentArchive], [Document] SET [DocumentArchive].document_name = [Document].[name]
WHERE [Document].document_id = [DocumentArchive].document_id;
16 июн 04, 17:40    [746212]     Ответить | Цитировать Сообщить модератору
 Re: operation must use an updateable query  [new]
paparome
Member

Откуда: Москва
Сообщений: 4312
Никита А. Зимин
А я уже нашел по-другому:

UPDATE [DocumentArchive], [Document] SET [DocumentArchive].document_name = [Document].[name]
WHERE [Document].document_id = [DocumentArchive].document_id;


И еще по другому

UPDATE [DocumentArchive] DA INNER JOIN [Document] D On DA.document_id = D.document_id
SET DA.document_name = D.[name];

И где тут не обновляемый запрос?
16 июн 04, 17:53    [746256]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить