Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

update sql с подзапросом   Найти похожие ветки 

 
nod ©   (2007-04-19 15:00) [0]

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

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


 
Sergey13 ©   (2007-04-19 15:03) [1]

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

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


 
nod ©   (2007-04-19 15:10) [2]

ADOQuery1.execsql;

базы dbase


 
Sergey13 ©   (2007-04-19 15:18) [3]

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

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


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

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


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

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

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


 
sniknik ©   (2007-04-19 15:33) [6]

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

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

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

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

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


 
nod ©   (2007-04-19 15:37) [7]

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


 
nod ©   (2007-04-19 16:05) [8]

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



Страницы: 1 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1182587570
Ezorcist
2007-06-23 12:32
2007.07.22
Расстояние между строками?


2-1182855821
Vazhik
2007-06-26 15:03
2007.07.22
Консольное приложение


15-1182343810
Сатир
2007-06-20 16:50
2007.07.22
Удаление альтернативных обозревателей интренета


2-1182855558
Nikfel
2007-06-26 14:59
2007.07.22
Как освободить память программы


3-1177079096
roman_ln
2007-04-20 18:24
2007.07.22
TDBNavigator как обработать событие кнопки