|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Добый вечер. Пожалуйста подскажите кто-нибудь, как сделать в 6-х формзах (ОЕБС R11) следующее: Есть таблица злодеев и таблица злых дел (вообще всех возможных). Нужно в форме злодеев сделать окно, выводящее все возможные злые дела для данного злодея на основе стандартной таблицы злых дел + поле чекбокс и, если чекбокс выбран, то данное злое дело совершено данным злодеем. Таким образом, форма отображает характеристики злодеев и их злые дела. Список злых дел должен соответствовать стандартной таблице злых дел. То-есть если вдруг в стандартную таблицу добавили строку, то в списке оно должно тоже появиться. Но при этом список должен сохранять прежние выборы, то-есть чекбоксы должны быть проставлены там, где надо. Я сначала думал конкатенировать в текстовое поле, теперь склоняюсь к parent-child таблице... Но в любом случае это не LOV, а отдельное окно/блок. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2014, 23:23 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
nub_ora13Есть таблица злодеев и таблица злых делРаз это отношение "многое ко многим", то нужна еще и таблица злодеяний злодеев. nub_ora13склоняюсь к parent-child таблицеДа, мастер-деталь, где мастер - злодеи, а деталь это вьюшка из таблицы злых дел + таблица злодеяний злодеев. Вьюшку обвесить instead of тригерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 15:14 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
мастер-детальВьюшку обвесить instead of тригерами. Нафига? Показ делаем на View + вытаскиваем ID из таблицы связки Обновление (DML) делаем на таблицу связки, у поля ID говорим, что это ключевое поле (для update) Остальные поля делаем недоступными для редактирования ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 15:29 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevНафига?Когда меняем состояние чекбокса, то для блока это будет update, а нам нужен insert в таблицу связки (установили крыжик) или delete (убрали крыжик) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 15:53 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Сорри, был не прав. 1) Вместо View, можно было бы банально использовать post_query триггер. Тогда делаем блок на таблице-связки, данные из справочной таблице подтягиваем в post_query триггере. С точки зрения абсолютной правильности, это менее правильно, чем View. Т.к. будет больше обращений к серверу базы данных. В случае View, все данные передадутся одним select'ом, в случае post-query для каждой строки будет еще один или несколько одиночных запросов. Хотя, существуют ситуации, когда post-query более производительно. 2) На самом деле, задача не так уж и просто. Как я понимаю, автор хочет автоматом высветить ВЕСЬ СПРАВОЧНИК, вне зависимости от того, что есть в таблице-связки. Стандартный подход, обычно, позволит высветить ТОЛЬКО данные из таблице связки. Можно придумывать разные навороты. Но наверное наиболее просто такое сделать полностью ручками. См. транзакционные триггеры. ON-SELECT, ON-LOCK, ON-DELETE. ON-INSERT, ON-UPDATE и так далее. Ну, или, действительно View и instead-of триггер. (ни разу instead-of не делал) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 15:54 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
мастер-детальКогда меняем состояние чекбокса, то для блока это будет update, а нам нужен insert в таблицу связки (установили крыжик) или delete (убрали крыжик) Да, уже сам заметил. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 15:58 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevнаверное наиболее просто такое сделать полностью ручками. См. транзакционные триггеры. ON-SELECT, ON-LOCK, ON-DELETE. ON-INSERT, ON-UPDATE и так далееСоглашусь только на ON-LOCK - действительно, очень полезно будет его сделать. В остальном, чем меньше подменяем стандартную функциональность, тем лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 16:11 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Самый простой и не очень правильный вариант (view + instead of правильнее): Делаем отдельное модальное окошко с одним блоком (так сделал бы я). Делаем блок по таблице справочника, поле с Check-box не базовое, заполняется на post-query ЗАПРЕЩАЕМ блоку сохраняться в таблицу. Поле DML Target None Делаем две кнопки Ok, Cancel ))) По кнопке Ok - в цикле проходимся по блоу, анализируем поле с Check-Box, обрабатываем, как нам нужно На кнопкке Cancel - все понятно Может иметь смысл, если трогать(создавать) объекты в БД не желательно, все на чистом Forms, просто и понятно. Во всех прочих случаях, признаю за вариантом с view и instead of триггерами одни плюсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 16:11 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
мастер-деталь Мы с тобой параллельно пишем ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 16:13 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
Нужно чтобы для каждого злодея выводился список всех злых дел( злодеи и злые дела - это стандартные таблицы) c чекбоксами, и чтобы при повторном выборе злодея этот список отображался также, со всеми злодействами с галочками напротив выбранных. Менять можно только состояние чекбоксов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 17:10 |
|
Сохранить только выбранные записи, вернуть выбранные и не выбранные
|
|||
---|---|---|---|
#18+
То-есть я правильно понимаю, что нужно будет создать таблицу соответствия evil_deeds(criminal_id, evil_deed_id, ...), и заполнять блок формы через вьюшку с фулл аутер джоином данной таблицы со стандартными. Где evil_deed_id not null - там чекбокс выбран. Правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2014, 17:24 |
|
|
start [/forum/topic.php?fid=51&msg=38712291&tid=1878157]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 158ms |
0 / 0 |