|
|
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Задача такая: в pl sql функции валидации на Tabular form column пройтись по всем строкам на форме и получить значения column-ов в этих других строках. Как обращаться к column-ам строки, на которой находится column, для которого пишем валидацию понятно - это просто :COLUMN_NAME. Вот нашла, что в apex 4.1 есть встроенные столбцы, среди которых есть "APEX$ROW_NUM". Может, с помощью него можно перемещаться по строкам? Пожалуйста, помогите. В Oracle® Application Express Application Builder User's Guide Release 4.1 для обращения к другим строкам не могу найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 16:53 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
итак, в валидации на каламне мне нужно каждый раз просматривать значения этого же каламна во всех строках (а именно - считать сумму), имеющихся в данной сессии на форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 18:14 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Rikki-Tikki, Еще раз, если :COLUMN_NAME не подходит SvDevДля этого предназначено apex_item api. И коллекции apex_application.g_fxx. Гуглите. apex_application.g_fxx рекомендуется использовать совместно с apex_item api, т.к. порядок нумерации коллекций не документирован. (может поменяться в след. версиях). Но можно прямо через apex_application.g_fxx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 11:48 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Rikki-Tikki, И с чем сравнивать получившуюся сумму? Я похожую проверку делал полностью на клиенте через javascript: пробегался по каждой колонке, подсчитывал сумму, сравнивал с рассчитанным заранее значением. Тут только нужно учитывать особенности обработки чисел с плавающей запятой в js (>>> 1.1+2.2 =3.3000000000000003) + значение, с которым идет сравнение, хранится на странице и его можно ручками править ( в моем случае некритично, иначе передавать ajax-ом и сравнивать на базе) Рано или поздно все равно придется делать вставки js+ajax, т.к. стандартных апексовых фич становится недостаточно при возрастании сложности логики/интерфейса. Хоть написание вручную и занимает больше времени чем next-next-next в мастерах, по итогу все работает быстрее + тратиться меньше времени на отладку/поддержание кода. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 11:55 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Привет SvDev, haXbat. Благодарю за отклик. SvDev, насколько я поняла, apex_item - пакет, который позволяет создавать итемы на форме. Чем он мне поможет для обращения к уже существующим каламнам на табличной форме - не понятно. В любом случае, документацию читаю дальше. Что смутило насчет apex_application.g_fxx: http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21676/apex_app.htm#CHDDADIE Referencing Values Within an On Submit Process You can reference the values posted by an HTML form using the PL/SQL variable APEX_APPLICATION.G_F01 to APEX_APPLICATION.G_F50. Because this element is an array, you can reference values directly, for example: FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP htp.p('element '||I||' has a value of '||APEX_APPLICATION.G_F01(i)); END LOOP; То есть провернуть этот цикл из примера можно только выполнив сабмит? А мне нужно выполнять это обращение к значениям каламнов при каждом редактировании каламна (валидация). haXbat, haXbatИ с чем сравнивать получившуюся сумму? Со значением из базы данных. haXbatРано или поздно все равно придется делать вставки js+ajax, т.к. стандартных апексовых фич становится недостаточно при возрастании сложности логики/интерфейса. Это понятно. Но я js+ajax я полнейший ноль, к сожалению, а время поджимает. Большое спасибо за код. Скажите, пожалуйста, я могу вызвать эту js функцию из функции валидадии каламна? И куда эту функцию поместить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 13:00 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Rikki-TikkiА мне нужно выполнять это обращение к значениям каламнов при каждом редактировании каламна (валидация). Может, для моего случая больше подходит APEX_UTIL.GET_SESSION_STATE (p_item IN VARCHAR2) RETURN VARCHAR2, ведь мне нужны значения, которые пользователь видит в своей сессии. Только вот имени итема у меня-то нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 13:23 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Rikki-TikkiПривет SvDev, haXbat. Благодарю за отклик. SvDev, насколько я поняла, apex_item - пакет, который позволяет создавать итемы на форме. Чем он мне поможет для обращения к уже существующим каламнам на табличной форме - не понятно. Он в том числе и для реализации manual tabular forms используется. Помочь может тем, что установит фиксированные переменные коллекций. Впрочем по началу советую особо не заморачиваться с ним. Проще забить. Rikki-TikkiЧто смутило насчет apex_application.g_fxx: http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21676/apex_app.htm#CHDDADIE Referencing Values Within an On Submit Process You can reference the values posted by an HTML form using the PL/SQL variable APEX_APPLICATION.G_F01 to APEX_APPLICATION.G_F50. Because this element is an array, you can reference values directly, for example: FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP htp.p('element '||I||' has a value of '||APEX_APPLICATION.G_F01(i)); END LOOP; То есть провернуть этот цикл из примера можно только выполнив сабмит? А мне нужно выполнять это обращение к значениям каламнов при каждом редактировании каламна (валидация). Вся валидация в апексе сделана через validations, которые срабатывают на Submit. Можно отказаться от этого впользу аякса и килограммов js кода. Вперед и с песней. Если вас не устраивает сабмит, то js вроде того что предлагает haXbat единственные вариант. Ничего сложного там нет, нужны лишь небольшие навыки в работе с HTML технологиями. Другое дело за 5 минут не изучишь это да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 13:29 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
SvDevВся валидация в апексе сделана через validations, которые срабатывают на Submit. Хотя теоретически можно ведь плагины написать. Которые существенно упростят процесс js валидации. Я пока этим не заморачивался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 13:35 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
SvDevВся валидация в апексе сделана через validations, которые срабатывают на Submit. Можно отказаться от этого впользу аякса и килограммов js кода. В моем случае выполнение валидации до сабмита не критично, так что, если я правильно вас понимаю, мне будет быстрее разобраться и применить "PL/SQL variable APEX_APPLICATION.G_F01 to APEX_APPLICATION.G_F50" в pl sql коде апексовой валидации, чем с нуля разбираться в javascript. Таким образом, я сделаю валидацию на уровне страницы, которая будет считать сумму и сравнивать со значением из БД, а при нарушении валидации после сабмита формы пользователь увидит сообщение вроде "сумма такого-то столбца превышает такое-то число". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 14:05 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Не получилось у меня Js-ом значения прочитать :-( кто знает как??? haXbatRikki-Tikki, И с чем сравнивать получившуюся сумму? Я похожую проверку делал полностью на клиенте через javascript: пробегался по каждой колонке, подсчитывал сумму, сравнивал с рассчитанным заранее значением. Тут только нужно учитывать особенности обработки чисел с плавающей запятой в js (>>> 1.1+2.2 =3.3000000000000003) + значение, с которым идет сравнение, хранится на странице и его можно ручками править ( в моем случае некритично, иначе передавать ajax-ом и сравнивать на базе) Рано или поздно все равно придется делать вставки js+ajax, т.к. стандартных апексовых фич становится недостаточно при возрастании сложности логики/интерфейса. Хоть написание вручную и занимает больше времени чем next-next-next в мастерах, по итогу все работает быстрее + тратиться меньше времени на отладку/поддержание кода. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2013, 21:12 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
В итоге вот что получилось : Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2013, 18:35 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
на Report навешен DA OnChange и с помощью APEX_ITEM сделан SELECT_LIST_FROM_QUERY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2013, 18:37 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
Rikki-TikkiВ моем случае выполнение валидации до сабмита не критично, так что, если я правильно вас понимаю, мне будет быстрее разобраться и применить "PL/SQL variable APEX_APPLICATION.G_F01 to APEX_APPLICATION.G_F50" в pl sql коде апексовой валидации P.S. На всякий случай поясняю: Между сообщениями интервал более 1 года. G_F тут больше не к месту делается 2-мя validations, например PL/SQL Function Returning Boolean и Function Returning Error Text (или тоже самое через page processes + APEX_ERROR.ADD_ERROR) Первый привязываем к табличной форме с Execution Scope: All Submitted Rows (чтобы всегда выполнялся тот же TRUNCATE_COLLECTION) Тут проходим для каждой строки и собираем данные в коллекцию, (в примере 3 столбца, ID, COL1_N, COL2_C): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. второй - общий, уровня страницы, где собственно сам процесс валидации (в примере ограничение по столбцу COL1_N, сумма всех строк меньше 100) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. G_F плох тем, что после апгрейда индексы опять могут сместиться, да и не дело, когда из-за порядка следования столбцов ломается код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 10:47 |
|
||
|
Apex 4.1 Tabular form Обращение к column -ам из других строк таблицы.
|
|||
|---|---|---|---|
|
#18+
SvDevG_F плох тем, что после апгрейда индексы опять могут сместиться Для 5.0 в Statement of Direction одним из направлений для развития указано изменение табличных форм. Хотят ввести "более лучшую" реализацию, которая будет позволять создавать сразу несколько табличных форм на странице декларативно. Подозреваю, что будут самостоятельно с APEX_COLLECTIONS синхронизировать табличные формы. Или что-то аналогичное введут. В общем, вероятность изменения индексов или механизма работы с ними очень большая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 14:46 |
|
||
|
|

start [/forum/topic.php?fid=50&fpage=47&tid=1875623]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 368ms |

| 0 / 0 |
