Как создать и использовать список с множественным выбором в APEX ORACLE? - PullRequest
0 голосов
/ 27 мая 2018

У меня есть таблица с именем Employees с столбцами Employee_id и Employee_Name.Теперь я хочу создать страницу с флажком напротив каждого имени сотрудника, выбрать нужные, сохранить их во временной таблице и использовать для дальнейших операций.Проблема, с которой я сталкиваюсь, заключается в том, как создать этот список множественного выбора и сохранить выбранные значения в таблице.Есть ли пункт для выбора нескольких?Если нет, то как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

В oracle apex 5.1 есть возможность создания списка множественного выбора.Создайте элемент страницы типа: «выберите список».Сделайте «Разрешить множественный выбор» на «Да».Напишите SQL-запрос для вашего списка выбора под атрибутом «Список значений».Тогда список выбора будет отображаться на основе нашего запроса.Формат запроса: выберите [displayValue], [returnValue] из ... где ... упорядочить по ...

Теперь, когда вы выбираете множественное значение из списка выбора (используя Ctrl + щелчок), они сохраняютсяв виде разделенных ':' значений в элементе страницы списка выбора.

0 голосов
/ 28 мая 2018

Несколько раз назад я создал видео, посвященное вашей проблеме.Это пошаговое руководство по созданию флажков и их обработке.

Видео доступно здесь: https://www.youtube.com/watch?v=T-LXRMWQbPk

С уважением

0 голосов
/ 27 мая 2018

Есть Шаттл .С левой стороны вы бы отобразили список всех сотрудников.Кнопки элементов позволяют перемещать все (или только некоторые из них) к правой стороне элемента.После отправки страницы список идентификаторов сотрудников сохраняется в столбце таблицы в виде значений, разделенных двоеточиями, например

6547:8879:5587:9987

. Это простой способ сделать это.Однако, как только вам нужно что-то сделать с этими значениями, вы должны разделить их на строки.Не проблема, хотя.Вот запрос:

SQL> with emps (shuttle_item) as
  2    (select '6547:8879:5587:9987' from dual)
  3  select regexp_substr(shuttle_item, '[^:]+', 1, level) one_item
  4  from emps
  5  connect by level <= regexp_count(shuttle_item, ':') + 1;

ONE_ITEM
---------------------------------------------------------------------
6547
8879
5587
9987

SQL>

Или вы можете создать табличную форму, которая также отображает всех сотрудников и имеет флажки в начале каждой строки.Затем вы создадите процесс, который - в цикле - сохранит выбранные значения во временную таблицу , которую вы упомянули.Например:

-- F01 = row selector. If you check 1st and 3rd row, f01.count = 2 (2 rows checked)
--       f01(1) = 1 (row #1), f01(2) = 3 (row #3)
-- F02 = EMP_ID. f02(1) = EMP_ID that belongs to employee in 1st row, 
--       f02(3) = EMP_ID that belongs to emplyee in 3rd row
declare
  l_id number;
begin
  for j in 1 .. apex_application.g_f01.count
  loop
    l_id := apex_application.g_f02(apex_application.g_f01(j));

    insert into temp_table (emp_id) values (l_id);
  end loop;
end;
...