|
сложная валидация (pls help)
|
|||
---|---|---|---|
#18+
как сделать валидацию формы, затрагивающую несколько блоков ? на каких триггерах лучше реализовать ? пример-1: BLOCK_1.FIELD_1 = 10 -- нормально для этого блока BLOCK_2.FIELD_2 = 99 -- тоже может быть нормально для этого блока но когда эти два поля одновременно принимают такие значения это должно считаться ошибкой пример-2: сумма всех значений DETAIL_BLOCK.FIELD_1 для каждой данной записи в MASTER_BLOCK не должна превышать 100. WHEN-VALIDATE-ITEM / WHEN-VALIDATE-RECORD подходят плохо так как не дают выйти из поля или записи а нужна свободная навигация по форме, кроме может быть перехода на другую запись в самом главном мастер-блоке. потому что может потребоваться исправить несколько полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2013, 10:57 |
|
сложная валидация (pls help)
|
|||
---|---|---|---|
#18+
grokкак сделать валидацию формы, затрагивающую несколько блоков ? На кнопку ОК ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2013, 12:13 |
|
сложная валидация (pls help)
|
|||
---|---|---|---|
#18+
На кнопке "ОК". Вот таким макаром Код: plsql 1. 2. 3.
Еще могу предложить вам "прятать" от пользователя айтемы, в которые ввод вдруг запрещен (или открывать). При помощи вызова вот таких (красивых) процедур. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Если у вас в форме есть много полей с валидацией, то Вы можете написать такие процедуры (набор) для всех полей формы. И после этого, у вас появится отличная возможность для написания простого и понятного кода:, например: У вас есть бизнес-правило, как то: Если в FIELD_1 ввели VALUE_1 то бизнес_правило_1 запрещает ввод значений в FIELD_2 и FIELD_3 Вы в итоге пишете вот такой красивый программный код, который легко читать и отлаживать. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вызов этих процедур делается в двух местах: 1. в триггере уровня блока PRE_BLOCK зная набор бизнес-правил, мы в этом тригерре УЖЕ, заранее прячем от юзера поля и кнопки если ему это не положено Это почти на 50% закрывает все проблемы.. валидации вообще. 2. в триггере уровня блока WHEN-FALIDATE-ITEM просто вызываем процедуру комплексной проверки состояний всех бизнес правил, что автоматом открывает/прячет поля и кнопки. Код: plsql 1. 2. 3. 4. 5. 6.
3. Предельно минимизируем вывод юзеру каких-либо алертов и сообщений. (когда поля прячутся и так все ясно.. и очень даже красноречиво). Зачем "прятать поля" ?? Ну просто , что бы не писать процедуры валидации для каждого айтема. В смысле писать то можно, а вот потом отлаживать и сопровождать код.. Б-р-р. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 15:41 |
|
сложная валидация (pls help)
|
|||
---|---|---|---|
#18+
grokкак сделать валидацию формы, затрагивающую несколько блоков ? на каких триггерах лучше реализовать ? Если допускается отложить валидацию до нажатия на "Сохранить", то используйте POST-FORMS-COMMIT. Кстати сложную валидацию в этом триггере делать проще. Не нужно "ходить" по записям детального блока, чтобы сумму посчитать. Т.к. команды insert, update, delete уже выполнены, можно пользоваться select-ами. В случае аварийного завершения в POST-FORMS-COMMIT выполняется rollback. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 10:07 |
|
|
start [/forum/topic.php?fid=51&fpage=13&tid=1878380]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 172ms |
0 / 0 |