|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Доброго дня! Вопрос такой. Имеется многострочный блок. В одном из полей данного блока содержатся значения процентной ставки. Сумма всех строк этого поля в данном блоке должна быть равна некой величине из родительского блока(:XX_ADD_OGP_CT_KZ.CT_KZ_KAZ_DOLYA) Написал триггер WHEN-MOUSE-CLICK: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
То есть, глобальной переменной при обращении к каждой строке присваивается максимально допустимое значение. Если текущая строка = 2, то это значение = :XX_ADD_OGP_CT_KZ.CT_KZ_KAZ_DOLYA - сумма поля procent по всем строкам, которые были до текущей. Все хорошо работает, но вот только хотелось бы, чтобы такой же алгоритм отрабатывал при перемещении к данному полю посредством табуляции. Не знаю, как это осуществить, учитывая, что использую go_record. Буду признателен за помощь Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2012, 16:10 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Алгоритм - г.... Т.ч. делать не советую. Но если очень хочется, то всегда можно использовать таймер. Создаешь триггер на таймер, в нем прописываешь логику, в нужном месте запускаешь таймер (однократно). В таймере можно использовать в том числе и go_item, go_record. Примеры искать в лом. Идею описал. Но честно говоря, я бы такое старался не использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2012, 17:25 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Вопроссс, если честно не совсем понял что нужно, но ваш код мягко сказать вызывает подозрение... например можно использовать Program Units там создать пакет в котором рекорд сделать вида: rec_num cur_procent и по when-new-record-instance и другим событиям (например post-query) поддерживать этот рекорд в актуальном состоянии, и анализировать именно его... или POST в БД и потом делать SUM(field) , короче вариантов масса... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2012, 18:24 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Спасибо за помощь! Совсем недавно в формсами работаю, поэтому и такой алгоритм, наверное) Подскажите пожалуйста, как можно было бы сделать иначе. Суть такова - имеется два блока - типа headers и lines. В одном из полей в headers проставляется процентная ставка, а в lines для каждой строки headers вроде расшифровки этой процентной ставки, то есть что туда входит. Когда пользователь проставляет в блоке lines процентные ставки(которые в сумме по всем строкам должны быть равны headers.процентная ставка), то: в 1-ой строке должен быть доступен список и чисел с 1 до headers.процентная ставка во второй - с 1 до headers.процентная ставка - процент из первой строки и т.д. Сделал группу записей и lov для этого поля. Для хранения значения использовал глобальную переменную(:global.procent). Можно было бы запись коммитить каждую, а потом из базы извлекать, но кажется было бы лучше сделать все на форме, чтобы не плодить лишний транзакции. Как бы это реализовать правильно? Спасибо заранее! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 08:04 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Увидел этот топик, сопоставил с появившимся аналогичным ранее... Похоже, несмотря на то, что вы там отписались "уже сделал" - ничего не получилось, так? Кстати, а вам известно, что в интерфейсе в блок на стадии ввода строку вставлять можно не только в конец, а и пихать внутри, между уже существующими? И ваша красивая теория "предыдущих строк" трещит по швам, потому что тогда вы в вашей сумме не учтёте нижележащие строки. Навскидку, по-человечески, ваша задача проверки суммы ставок на непревышение максимума делается с полпинка. 1. Создаете в каком-нить single record блоке item, выставляете у него calculation mode = summary; summary function = sum,; summary block = lines; summary item = <ставка или что там у вас>. Этот item будет автоматически(!) считать сумму ставок по строкам вашего lines. 2. На поле ставки в блоке lines делаете триггер when-validate, например а-ля: Код: plsql 1. 2. 3. 4. 5. 6.
- ЗЫ. Повторно настоятельно рекомендую вам отказаться от идеи ввода ставки методом выпадающего списка... ЗЗЫ. ... и настоятельно советую вам почитать литературу по формсу. Кстати, тут в каком-то соседнем топике давали ссылки недавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 13:00 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
-=APS=-, Спасибо огромное за совет! Кажется, очень действенный. Выпадающий список - глупо, согласен. Но почему-то необходимо сделать именно так. А насчет "Все сделал" - так и есть, "ничего не получилось". Благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 14:24 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Решил ради интереса попробовать, будет ли это удобно. Вот, примерчик, выкладываю (Forms 6i). Возможно, при небольших значениях максимальной процентной ставки, это частично упростит ввод. Но, все равно... Решение, имхо, через одно место... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 15:19 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Спасибо! Никак не могу ошибку при компиляции победить: FRM-30425: Summarized database item must reside in a block with Query All Records or Precompute Summaries set to Yes. Сравнил все поля с вашим шаблоном, кажется, что все одинаково. Если несложно, посмотрите ссылочку, там форма. Блок - LINES_PROC_SUM http://files.gw.kz/8a6bz5d5d3.html Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 15:43 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
-=APS=-, хотя в вашем примере в "Запросить все записи" на блоке Headers стоит "Нет", у себя попробовал поменять на "Да" следуя тексту ошибки, но ничего не изменилось ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 15:45 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Просьба выложить файл сюда, т.к. по вашей ссылке сходить не могу из-за сетевых политик безопасности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2012, 18:32 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Приложил ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2012, 07:45 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
Похоже, не прикладывается по серым ником, пришлось пароль вспомнить) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2012, 07:52 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
DENIS_PR, так установите на блоке XX_ADD_OGP_KAZ_SOD query all или precompute summaries. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2012, 11:55 |
|
Повторить алгоритм из WHEN-MOUSE-CLICK при перемещении tab-ом
|
|||
---|---|---|---|
#18+
-=APS=-, Хм, а я все в однострочный блок смотрел. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2012, 12:46 |
|
|
start [/forum/topic.php?fid=51&msg=37653985&tid=1878543]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 187ms |
0 / 0 |