У меня есть форма оракула с блоком данных, который отображает 25 элементов.
В форме у меня есть полоса прокрутки и кнопка "удалить". Когда элемент в блоке данных выбран и нажата кнопка «Удалить», он удаляет выбранный элемент из базы данных, а затем выполняет запрос data_block.
По умолчанию это возвращает пользователя в начало списка.
Я пытаюсь перейти к записи непосредственно перед той, которая удалена из списка.
Это можно сделать с помощью встроенной функции GO_RECORD(число) (BIF) (при условии, что число является сохраненным значением :System.cursor_record).
И тут я столкнулся с проблемой. GO_RECORD BIF поместит запись в начало или конец отображаемого списка элементов. Это может привести к смещению списка вверх на 20 элементов без предупреждения.
например, отображаются записи 23–47 из блока данных, и выбрана запись 33. Если запись 33 удалена и мы используем функцию GO_RECORD(32), то отображаемые записи будут 32-56 (фактически сдвигая список вниз на 9 записей).
Я предполагаю, что для того, чтобы избежать этого сдвига, мне нужно будет каким-то образом определить положение записи на дисплее (в отличие от data_block).
Кто-нибудь знает, существует ли этот функционал?
Или у кого-нибудь есть другой подход, который может дать мне тот же результат?