Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Можно ли в блоке использовать вьюху на основе более чем одной таблицы? / 7 сообщений из 7, страница 1 из 1
20.09.2010, 15:38
    #36855675
MikTar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
Доброе время суток всем!
Собственно сабж
Forms 6 под OeBS. Формочка, в ней два блока мастер-деталь на вьюхах.
Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден. Во вьюхе добавлял поля типа ROWID и в Item указал субкласс для него ROW_ID, но не помогло...
Получается в блоках можно использовать вьюху на основе только одной таблице? А данные из полей других таблиц брать в виде селекта:

select a.id, a.name
,(select b.name from task b where b.project_id= a.id)
.......
FROM project b.....
...
Рейтинг: 0 / 0
20.09.2010, 16:28
    #36855839
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
Нет, не получается. Можно использовать вьюху на основе более чем одной таблицы.

В свое время подробно "для чайников" описывал как делать. Но найти не смог. Можешь попытаться поискать сам.

Поиском за 5 минут выловил следующие обсуждения:

http://www.sql.ru/forum/actualthread.aspx?tid=168281
/topic/163299

+ ссылка из пред. ссылки (подробно не читал, лениво. Но вопросы делания запросов обновляемыми, статься раскрывает)

http://jon-d.narod.ru/ora/BlockOnAJoinRus.pdf
...
Рейтинг: 0 / 0
21.09.2010, 12:25
    #36857213
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
MikTarДоброе время суток всем!
Собственно сабж
Forms 6 под OeBS. Формочка, в ней два блока мастер-деталь на вьюхах.
Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден.

Можно указать какие столбцы являются первичными ключами.
Можно сделать триггер на вью...
...
Рейтинг: 0 / 0
21.09.2010, 12:26
    #36857223
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
gpuMikTarДоброе время суток всем!
Собственно сабж
Forms 6 под OeBS. Формочка, в ней два блока мастер-деталь на вьюхах.
Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден.

Можно указать какие столбцы являются первичными ключами.
Можно сделать триггер на вью...

Забыл >
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.
...
Рейтинг: 0 / 0
23.09.2010, 13:47
    #36862312
MikTar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
gpu
Можно указать какие столбцы являются первичными ключами.
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.

Триггеры ессно есть- иначе вьюхи не обновишь. И ключи указал. И Relation создано. Ошибка появляется видимо когда после обновления идет попытка перечитать данные...
...
Рейтинг: 0 / 0
23.09.2010, 15:48
    #36862707
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
MikTargpu
Можно указать какие столбцы являются первичными ключами.
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.

Триггеры ессно есть- иначе вьюхи не обновишь. И ключи указал. И Relation создано....


Триггеры совершенно не обязательны.

У нас например (примерно) была такая конструкция. Редактировались данные в таблицы A, а значение из справочников, таблица B, брались через View.

Тогда Query Data Source - view
DML Target - таблица А
Столбцы с первичным ключом - столбцы с primary key из таблицы A
Столбцы из других таблиц (таблицы B), вычисляемые и т.д. - Query only.

Все замечательно редактируется и без всяких триггеров. (не для OeBS, в OeBS обычно все через триггеры).

MikTar
...Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден...
...Ошибка появляется видимо когда после обновления идет попытка перечитать данные...
[quot MikTar]

1)
Если указаны столбцы с первичным ключом, по логике, ROWID ему нафиг не нужен. Forms должен работать через первичный ключ, а не через ROWID.

Но указанной информации не достаточно, что бы делать вывод, где именно у тебя ошибка IMHO.

2)
Насколько я помню, никакой попытки перечитать данные после обновления Forms не делает. При блокировке, возможен запрос с проверкой, проверить, что данные в БД никто не менял. Триггер ON_LOCK (или как-то так) может помочь.

Или см. п. 1 про первичный ключ.

[quot gpu]
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.

+ ON-LOCK

Еще что нибудь забыли? Я Forms уже больше года не запускал.
...
Рейтинг: 0 / 0
23.09.2010, 15:48
    #36862709
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
MikTargpu
Можно указать какие столбцы являются первичными ключами.
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.

Триггеры ессно есть- иначе вьюхи не обновишь. И ключи указал. И Relation создано....


Триггеры совершенно не обязательны.

У нас например (примерно) была такая конструкция. Редактировались данные в таблицы A, а значение из справочников, таблица B, брались через View.

Тогда Query Data Source - view
DML Target - таблица А
Столбцы с первичным ключом - столбцы с primary key из таблицы A
Столбцы из других таблиц (таблицы B), вычисляемые и т.д. - Query only.

Все замечательно редактируется и без всяких триггеров. (не для OeBS, в OeBS обычно все через триггеры).

MikTar
...Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден...
...Ошибка появляется видимо когда после обновления идет попытка перечитать данные...


1)
Если указаны столбцы с первичным ключом, по логике, ROWID ему нафиг не нужен. Forms должен работать через первичный ключ, а не через ROWID.

Но указанной информации не достаточно, что бы делать вывод, где именно у тебя ошибка IMHO.

2)
Насколько я помню, никакой попытки перечитать данные после обновления Forms не делает. При блокировке, возможен запрос с проверкой, проверить, что данные в БД никто не менял. Триггер ON_LOCK (или как-то так) может помочь.

Или см. п. 1 про первичный ключ.

gpu
определить триггеры ON_INSERT, ON-UPDATE на блоке и делать все самому.

+ ON-LOCK

Еще что нибудь забыли? Я Forms уже больше года не запускал.
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Можно ли в блоке использовать вьюху на основе более чем одной таблицы? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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