Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

update sql с подзапросом


nod ©   (2007-04-19 15:00:00) 

ADOQuery1.SQL.Text:='update base set fond005 = (select sum(pension.summa) from pension where
pension.cex=1 group by pension.cex) ';
ошибка - в операции должен использоваться обновляемый запрос  

поясните из-за чего такая ошибка? проверял селект выводит только одну строку


nod   (2007-04-19 16:05:00) [1]

еще вопрос как написать, что бы в предыдущем запросе
set base.pension = pension.summa';  было не pension.summa, а sum(pension.summa) group by cex


nod   (2007-04-19 15:37:00) [2]

спасибо за помощь.
пришлось обойти проблему так
 ADOQuery1.SQL.Text:='update base left join pension on base.cex=pension.cex set base.pension = pension.summa';
но думаю я к ней еще вернусь


sniknik   (2007-04-19 15:33:00) [3]

В операции должен использоваться обновляемый запрос. (Ошибка 3073)
Попытка запустить, открыть или изменить запрос, который не является обновляемым.

Возможные причины:

Попытка запустить запрос, в котором предпринимается попытка обновить необновляемое поле. Например, создан запрос, в котором предпринимается попытка обновить поле на стороне «один» отношения «один-ко-многим».
Попытка использовать устаревший метод OpenQueryDef для запроса, находящегося в базе данных, открытой с доступом только для чтения.
База данных может быть доступной только для чтения по одной из следующих причин:

База данных была открыта только для чтения с помощью метода OpenDatabase или элемента управления Data Visual Basic.
Файл базы данных определен с доступом только для чтения в сетевой операционной системе.
Пользователь не имеет привилегий записи в этот файл базы данных в сетевой среде.
Закройте базу данных, снимите ограничение доступа только для чтения и вновь откройте файл с доступом для чтения/записи.

Отсутствуют разрешения на внесение изменений в запрос. Для изменения разрешений обратитесь к системному администратору или создателю таблицы или запроса.


nod   (2007-04-19 15:28:00) [4]

к сожалению нет, а запрос написан просто для теста, но даже он не работает... собственно сами подзапросы при update  уменя не работают, одна и таже ошибка постоянно


sniknik   (2007-04-19 15:28:00) [5]

> в операции должен использоваться обновляемый запрос  
по какойто причине (могут быть разные) jet считает, что запись ведется в ридонли таблицу... (группировка одной + обьеденение с другой тоже может посчитать что обе нередактируемые)

> проверял селект выводит только одну строку
зачем тогда группировка? убери


Sergey13   (2007-04-19 15:18:00) [6]

> [0] nod ©   (19.04.07 15:00)

А тебе надо во все записи base посадить одно и то-же число?


nod   (2007-04-19 15:10:00) [7]

ADOQuery1.execsql;

базы dbase


Sergey13   (2007-04-19 15:03:00) [8]

> [0] nod ©   (19.04.07 15:00)

Ты случаем не ADOQuery1.Open делаешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо