powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
7 сообщений из 7, страница 1 из 1
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
    #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
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
    #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
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
    #36857213
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikTarДоброе время суток всем!
Собственно сабж
Forms 6 под OeBS. Формочка, в ней два блока мастер-деталь на вьюхах.
Если вьюха состоит более чем из одной табалицы, то при попытке вставки или апдейта возникает ошибка, что ROWID не найден.

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

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

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

Триггеры ессно есть- иначе вьюхи не обновишь. И ключи указал. И Relation создано. Ошибка появляется видимо когда после обновления идет попытка перечитать данные...
...
Рейтинг: 0 / 0
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
    #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
Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
    #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
7 сообщений из 7, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Можно ли в блоке использовать вьюху на основе более чем одной таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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