Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / IG на основе сложного запроса / 10 сообщений из 10, страница 1 из 1
17.04.2017, 15:13
    #39439705
IG на основе сложного запроса
Начинаю разбираться с IG

Сделал Interactive Grid на основании запроса (упрощенно):

select id,dat, u.name , m.name model_name, t.name type_name
from u, model m, typ t
where u.model_id = m.model_id and u.typ_id = u.typ_id


Включил редактирование, меняю некоторые названия, нажимаю Save
Естественно не дает
Ajax call returned server error ORA-20987: APEX - ORA-01776: нельзя изменить более одной таблицы посредством связанного представления

Каким кодом можно подменить стандартное сохранение данных грида?
...
Рейтинг: 0 / 0
17.04.2017, 16:17
    #39439730
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
поставь в свойствах полей query only
...
Рейтинг: 0 / 0
17.04.2017, 16:44
    #39439751
IG на основе сложного запроса
"query only" так я ведь и сохранять в базу хочу(

Еще, через какой код принудительно задать вид грида как "Single Row"
...
Рейтинг: 0 / 0
17.04.2017, 19:51
    #39439827
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
Attributes > Edit > Enabled = Yes

Settings for your Save Interactive Grid Data process:

Settings > Set Target Type = PL/SQL Code
Settings > PL/SQL Code to Insert/Update/Delete =
begin
case :APEX$ROW_STATUS
when 'I' then -- Note: In EA2 this has been changed from I to C for consistency with Tabular Forms
insert into emp ( empno, ename, deptno )
values ( :EMPNO, :ENAME, :DEPTNO )
returning rowid into :ROWID;
when 'U' then
update emp
set ename = :ENAME,
deptno = :DEPTNO
where rowid = :ROWID;
when 'D' then
delete emp
where rowid = :ROWID;
end case;
end;

https://community.oracle.com/thread/3937159
тогда так
...
Рейтинг: 0 / 0
01.06.2017, 13:25
    #39463792
IG на основе сложного запроса
делаю как в представленном коде

коде
begin
case :APEX$ROW_STATUS
when 'U' then
update conf
set proc_value = :PROC_NUM
where conf_id = :CONF_ID;

изменяю поле :PROC_NUM в интерфейсе пишет "Changed saved"
В базе не сохраняется. Записываю ниже в коде значение поля :PROC_NUM в отдельную таблицу. Сохраняет старое значение поля, до изменения(
Как явно указать, что мне нужно измененное значение? Часть какой plsql записи являются все поля грида?
...
Рейтинг: 0 / 0
01.06.2017, 14:26
    #39463847
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
Никки Младшийselect id,dat, u.name , m.name model_name, t.name type_name
from u, model m, typ t
where u.model_id = m.model_id and u.typ_id = u.typ_id
попробуйте JOIN
Это более правильный синтаксис, чем мешанина таблиц через запятую во from
...
Рейтинг: 0 / 0
01.06.2017, 15:19
    #39463884
IG на основе сложного запроса
Petro123,
сейчас это просто вьюха. join должен заставить меняться полю на новое?
...
Рейтинг: 0 / 0
01.06.2017, 16:13
    #39463942
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
Никки МладшийPetro123,
сейчас это просто вьюха. join должен заставить меняться полю на новое?
вы пробуйте и потом тут расскажете.
Я знаю что текст запроса влияет на автоматический механизм апдейта таблиц.
При JOIN, ещё в 4-ке апекса в табуляр таблицах получалось редактировать.
И если хотите автомат, то вьюшку убрать на саму таблу.
Если руками писать UpdateSQL, то пофиг вообще текст запроса. Будет выполняться ваш текст при Update.
...
Рейтинг: 0 / 0
01.06.2017, 16:14
    #39463947
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
Никки Младшийjoin должен заставить
JOIN вместо вашего - это просто хороший стиль и практика
...
Рейтинг: 0 / 0
02.06.2017, 15:32
    #39464801
Migelle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IG на основе сложного запроса
Никки МладшийВ базе не сохраняется. Записываю ниже в коде значение поля :PROC_NUM в отдельную таблицу. Сохраняет старое значение поля, до изменения(
Как явно указать, что мне нужно измененное значение? Часть какой plsql записи являются все поля грида?
Как-то странно. Написал уже несколько гридов, обновляющихся таким методом, работают как часы. Всегда передается измененное поле. Я бы для начала попробовал пересоздать окно с гридом с нуля. Может там в процессе экспериментов что-то порушилось.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / IG на основе сложного запроса / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]