|
|
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Не нашел документированных вариантов такой кастомизации "от вендора". Варианты от кулибиных типа Update Apex Tabular form with PLSQL преподносят сюрпризы: я не могу "look for the names of the controls, e.g. "f03_0001". Для формы выбран PK = ROWID. Есть в списке полей и реальный ID, но он "show = 0" (т.е. в html не выводится никак). И как мне идентифицировать запись, в которой произошли изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:10 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльНе нашел документированных вариантов такой кастомизации "от вендора". Варианты от кулибиных типа Update Apex Tabular form with PLSQL преподносят сюрпризы: я не могу "look for the names of the controls, e.g. "f03_0001". Для формы выбран PK = ROWID. Есть в списке полей и реальный ID, но он "show = 0" (т.е. в html не выводится никак). И как мне идентифицировать запись, в которой произошли изменения? Уверен что никак не выводится? Если поле hidden, это не означает что его нет, и к нему нельзя обратится в PL/SQL блоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:18 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльНе нашел документированных вариантов такой кастомизации "от вендора". Варианты от кулибиных типа Update Apex Tabular form with PLSQL преподносят сюрпризы: я не могу "look for the names of the controls, e.g. "f03_0001". Для формы выбран PK = ROWID. Есть в списке полей и реальный ID, но он "show = 0" (т.е. в html не выводится никак). И как мне идентифицировать запись, в которой произошли изменения? Изначально не понял вопроса, тебе нужно именно строки в которых произошли изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:19 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangel, Вообще-то хотелось бы выявить именно изменившиеся записи. Но 2-м сортом пойдет и так. Я нашел идентификатор в массиве: apex_application.g_frowid(i). Но вот какая фигня - апекс не дает удалить старый процесс ApplyMRU... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:32 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Ага, это решилось - надо было последовательность изменить (не дает удалить только первый процесс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:39 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Ага! теперь ошибка • ORA-01722: invalid number (Row 1) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:46 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльАга! теперь ошибка • ORA-01722: invalid number (Row 1) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ты чекбоксишь строчки? Цикл бежит только по отмеченным записям. у тебя примерно так должно быть. Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:51 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelты чекбоксишь строчки? Цикл бежит только по отмеченным записям. у тебя примерно так должно быть. Код: plsql 1. 2. 3. 4. 5. 6. Не чекбоксю. Юзеру не дозволено удалять строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:54 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, Т.е для понимания, отмеченная галочкой строчка, она может быть ROWID=3, а в цикле она встретится на первом витке и оракл попытается сделать как то так Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:54 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдльblkangelты чекбоксишь строчки? Цикл бежит только по отмеченным записям. у тебя примерно так должно быть. Код: plsql 1. 2. 3. 4. 5. 6. Не чекбоксю. Юзеру не дозволено удалять строки. Тогда у тебя проблемы :) Тогда тебе необходимо организовывать цикл по другому полю, которое будет всегда заполнено например всегда "1". Или тут ты можешь сделать, так что при изменение записи туда единица писалась и тогда ты решишь проблему "Измененной строчки". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:58 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangel, чекбоксов перед строками нет. Только поля данных и ячейки со статическим текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:58 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдльblkangel, чекбоксов перед строками нет. Только поля данных и ячейки со статическим текстом. Я говорю про скрытое "служебное поле". Кстати говоря, ты его лучше id строки заполняй, так меньше гемороя в последствии. а на строчке со статическим текстом, добавь в атрибут. Код: javascript 1. Выделенное красным заменить на заголовок твоего служебного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:10 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдльblkangelты чекбоксишь строчки? Цикл бежит только по отмеченным записям. у тебя примерно так должно быть. Код: plsql 1. 2. 3. 4. 5. 6. Не чекбоксю. Юзеру не дозволено удалять строки. А может просто юзверу кнопку "Удалить" скрыть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:23 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangel, А я разве не могу сравнить текущее содержание поля записи с ячейкой массива и принять решение "изменилась / не изменилась"?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:23 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
В общем, я вкурил почти все премудрости кастомной MRU Вот что не вкурил: не срабатывает Код: plsql 1. также как Код: plsql 1. но в моем случае срабатывает Код: plsql 1. Возможно из-за того, что F01 у меня hidden Если ни одно поле не меняется - цикл не стартует. Но если меняется хоть одно поле в одной строке - цикл пробегает по всем записям. В простейшем случае отрабатывает такой блок: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 20:34 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльВ общем, я вкурил почти все премудрости кастомной MRU Вот что не вкурил: не срабатывает Код: plsql 1. также как Код: plsql 1. но в моем случае срабатывает Код: plsql 1. Возможно из-за того, что F01 у меня hidden Если ни одно поле не меняется - цикл не стартует. Но если меняется хоть одно поле в одной строке - цикл пробегает по всем записям. В простейшем случае отрабатывает такой блок: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Мне сложно сказать, не видя структуру табуляра, запроса и т.д. Добавь в начале процедуры вот это, и картина станет более понятной. Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:26 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, Строчки поочередно включай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:27 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдльblkangel, А я разве не могу сравнить текущее содержание поля записи с ячейкой массива и принять решение "изменилась / не изменилась"?.. Можешь, но это лишнее обращение к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:31 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Коллеги! Спасибо за дельные советы. Но я оценил "за" и "против" и предпочел перенести логику в триггер. (Задача была заполнить одно поле данными, получившимися в результате замысловатого анализа других полей). Я не могу позволить себе длительные изыскания "лучшей практики" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:53 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльКоллеги! Спасибо за дельные советы. Но я оценил "за" и "против" и предпочел перенести логику в триггер. (Задача была заполнить одно поле данными, получившимися в результате замысловатого анализа других полей). Я не могу позволить себе длительные изыскания "лучшей практики" :) Может тогда не триггер? А вычисляемое поле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:55 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, В любом случае, это уже вопрос не Апекса :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 09:56 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльНо я оценил "за" и "против" и предпочел перенести логику в триггер. +1 тоже переношу максимально в триггер, чтобы клиент был как можно тоньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 10:05 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelМожет тогда не триггер? А вычисляемое поле? А что, у табулярной формы есть вычисляемое и сохраняемое поле?!! Тогда я - лох! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 11:03 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльblkangelМожет тогда не триггер? А вычисляемое поле? А что, у табулярной формы есть вычисляемое и сохраняемое поле?!! Тогда я - лох! :) Вычисляемое поле есть в БД (11g) А в табуляре ты его выводить можешь просто. Ты же его не меняешь? А если меняешь, тогда триггер зачем не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:06 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelВычисляемое поле есть в БД (11g) угу. Опплевался от предыдущего программиста. Нет поддержки при бэкапе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:12 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelВычисляемое поле есть в БД (11g) А в табуляре ты его выводить можешь просто. Ты же его не меняешь? А если меняешь, тогда триггер зачем не понимаю. Вручную я это поле не меняю. Но триггер - временное решение. Этой БД пользуются и другие АС, у которых могут быть иные взгляды на это поле. Хотелось решить проблемы "клиента" - на самом "клиенте". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:30 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльХотелось решить проблемы "клиента" - на самом "клиенте". Ты же так и не ответил, я предложил самое простое решение. Скрыть у юзвера кнопку удалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:32 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelТы же так и не ответил, я предложил самое простое решение. Скрыть у юзвера кнопку удалить. И что, оставить на форме чекбоксы, которые непонятно для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:34 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльblkangelТы же так и не ответил, я предложил самое простое решение. Скрыть у юзвера кнопку удалить. И что, оставить на форме чекбоксы, которые непонятно для чего? Тогда у тебя стандартные апексовые процессы будут работать, и не нужно будет придумывать велосипеды... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:37 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangel, Ну прикинь: юзер мучительно заполнял все поля, а потом снял галку с чекбокса по недоумию. И нажал "сохранить"... Или озаглавить колонку чекбоксов "Не тронь, дурак!"? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:40 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, При изменении чекбокс отщелкивать не надо, только при удалении. Кстати, а как же у тебя не у юзверов есть возможность удалить строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:42 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, вариант фальшивого поля в самом SQL запросе не проходит? Или было? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 12:44 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelКурдль, Кстати, а как же у тебя не у юзверов есть возможность удалить строки? Такой возможности нет. Строки в табулярной форме соответствуют метрикам аудита. Удалить можно только весь аудиторский отчет целиком. Добавлять строки тоже нельзя: сколько метрик - столько строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 13:23 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Petro123Курдль, вариант фальшивого поля в самом SQL запросе не проходит? Или было? Коллеги! Я выкрутился из ситуации триггером. Но при желании мог бы кастомизировать процесс MRU. Я ж написал, что я его вкурил :) Да, будут лишние обращения к БД и риски, связанные с использованием недокументированной функции. Простейший случай (когда не надо ничего вычислять внутри процесса и не обязательно выявлять изменившиеся строки) - я изобразил в коде. Желающие могут дополнять его "обвеской". Мой пост 17201428 можно считать подсказкой тем, кто захочет это сделать. Далее мы только засоряем тему, отдаляясь от целей форума - помогать друг другу находить правильные решения :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 13:34 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльblkangelКурдль, Кстати, а как же у тебя не у юзверов есть возможность удалить строки? Такой возможности нет. Строки в табулярной форме соответствуют метрикам аудита. Удалить можно только весь аудиторский отчет целиком. Добавлять строки тоже нельзя: сколько метрик - столько строк. Вообще тогда не понимаю, где затык, все должно стандартными процессами работать. Не вижу смысла в кастомном сохранении. Если дело в вычисляемом значении, ну так вызывай функцию в запросе, которая будет возвращать нужное тебе значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 13:36 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльPetro123Курдль, вариант фальшивого поля в самом SQL запросе не проходит? Или было? Коллеги! Я выкрутился из ситуации триггером. Но при желании мог бы кастомизировать процесс MRU. Я ж написал, что я его вкурил :) Да, будут лишние обращения к БД и риски, связанные с использованием недокументированной функции. Простейший случай (когда не надо ничего вычислять внутри процесса и не обязательно выявлять изменившиеся строки) - я изобразил в коде. Желающие могут дополнять его "обвеской". Мой пост 17201428 можно считать подсказкой тем, кто захочет это сделать. Далее мы только засоряем тему, отдаляясь от целей форума - помогать друг другу находить правильные решения :) Цель не оправдывает средства... Либо я не до конца ее понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 13:39 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
Курдль, OK я тебе верю)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 13:43 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelЦель не оправдывает средства... Либо я не до конца ее понял. Ок! Допускаю, что я мог заморочиться там, где выход гораздо проще и прозрачнее (для профессионалов). Для чистоты экскреперимента сформулирую простейшие абстрактные условия. Существует таблица TABLE с полями А и В. Пользователю в виде Tabular Form представляется интерфейс для изменения подмножества записей TABLE, посредством редактирования поля А. После утверждения изменений (нажатия кн. SUBMIT) перед COMMIT-ом должно заполниться поле В именем пользователя (:APP_USER). Каково простейшее решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 14:02 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльblkangelЦель не оправдывает средства... Либо я не до конца ее понял. Ок! Допускаю, что я мог заморочиться там, где выход гораздо проще и прозрачнее (для профессионалов). Для чистоты экскреперимента сформулирую простейшие абстрактные условия. Существует таблица TABLE с полями А и В. Пользователю в виде Tabular Form представляется интерфейс для изменения подмножества записей TABLE, посредством редактирования поля А. После утверждения изменений (нажатия кн. SUBMIT) перед COMMIT-ом должно заполниться поле В именем пользователя (:APP_USER). Каково простейшее решение? Построчный триггер, со стандартными процессами в апекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 14:13 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
blkangelПострочный триггер, со стандартными процессами в апекс. ЧТД Но сначала я нашел отсылки к документации по старым АПЕКСам. Там была довольно изящная документированная функция обработки множества строк в табулярной форме. Покопался в новом АПЕКСе и понял, что триггер - предпочтительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 14:26 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльПосле утверждения изменений (нажатия кн. SUBMIT) перед COMMIT-ом должно заполниться поле В именем пользователя (:APP_USER). если это реальное ТЗ, то полю B на клиенте (в коде APEX) вообще нечего делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 14:31 |
|
||
|
Кастомизация процесса Multi Row Update
|
|||
|---|---|---|---|
|
#18+
КурдльНо сначала я нашел отсылки к документации по старым АПЕКСам. Там была довольно изящная документированная функция обработки множества строк в табулярной форме. Покопался в новом АПЕКСе и понял, что триггер - предпочтительнее. Я открою тебе тайну, интерактивный и стандартный репорт можно менять и сохранять :) Функция работы с табулярной формой, ничто иное как создание массивов по индексам F01-F50, передача этих массивов в pl/sq. А дальше, крути верти как хочу Вот только остается понять, чем же наполняет этот массив Апекс и каким образом. :) Как говорит Petro123, удачи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2015, 14:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=50&tid=1875107]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 498ms |

| 0 / 0 |
