Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c