как установить направление для списка значений 'LOV' в oracle формах - PullRequest
1 голос
/ 03 марта 2020

как я могу изменить направление LOV, используя set_item_property? Я хочу изменить направление на основе значения параметра, если set_item_property недоступен, есть ли у вас какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Если вы подразумеваете упорядочение перечисленных значений в порядке возрастания или убывания под словом direction , вы можете управлять им с помощью Set_Lov_Property .

. вызывать существующий LOV из текстового поля (вызывать tf1).

Добавьте флажок (вызов cb1) рядом с tf1.

Forms создает Record Group как LOV, создаваемое с тем же именем, что и по умолчанию (вызов 'mylov01'). Предположим, что в Record Group есть оператор выбора с предложением order by col0 asc.

Вручную создайте дополнительный Record Group с именем mylov01_desc, имеющий предложение order by col0 desc.

Добавьте KEY-CLRBLK вызвать это поле с кодом

declare
    v_lov varchar2(50) := 'mylov01'; 
    v_grn varchar2(50);     
begin   
    if    Checkbox_Checked('cb1') then
        v_grn := v_lov||'_desc';
    else    
        v_grn := v_lov; 
    end if; 

    Set_Lov_Property( v_lov, group_name, v_grn );   
    list_values;
end;    

. Вызвать LOV, нажав F7, когда курсор находится в tf1.

Список будет возвращать строки в порядке убывания для столбца col0, если установлен флажок cb1, в противном случае будет в порядке возрастания.

PS KEY-LISTVAL по умолчанию триггер для вызова LOV и запускается с помощью Ctrl+L комбинации клавиш. Я предпочитаю отключить это поведение по умолчанию, добавив триггер KEY-LISTVAL для tf1 с кодом null;, чтобы вызвать LOV от нажатия только одной клавиши F7.

0 голосов
/ 03 марта 2020

используйте предложение ORDER BY в конце запроса. используя AS C для восходящих данных 'ABCD' или DES C для нисходящего порядка 'ZYX', например

SELECT *
  FROM table
ORDER BY parameter ASC

ИЛИ

SELECT *
  FROM table
ORDER BY parameter DESC
...