Выпадающий список на форме операции.
На страницу 1, 2 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Neumann Участник со стажем
Вступление в Клуб: 31.01.2013
|
Ср Апр 17, 2013 09:43  Выпадающий список на форме операции. |
|
Полезность: Нет оценки
|
Всем привет!
Подскажите - дайте вариант как посадить выпадающий список на форму операции, определить нестколько строк в качестве варианта выбора. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
|
 |
Neumann Участник со стажем
Вступление в Клуб: 31.01.2013
|
Пт Апр 19, 2013 21:37   |
|
Полезность: 1
|
На всякий случай - может кому-нибудь пригодится.
1. Создаете справочник.
2. Создаете ссылку на этот справочник.
3. В типе где будет использоваться ссылка - создаете реквизит в качестве типа указываете данную ссылку.
4. В нужной операции - кнопка "экраная форма" выделяете рамку с названием - в контекстном меню ("Редактирование-преобразовать").
5. В контекстном меню - Панель представлений. Снять галку "По умолчанию" В списке Колонка - выбираем колонку. Сохраняемся.
Всё.
Поправте если что не так. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Апр 22, 2013 09:07   |
|
Полезность: Нет оценки
|
Только стоит учесть, что справочник это дополнительный локальный объект. _________________ всегда есть как минимум 2 выхода |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Апр 25, 2013 11:47   |
|
Полезность: Нет оценки
|
Alexsey пишет: | Только стоит учесть, что справочник это дополнительный локальный объект. |
Не надо справочник. Используйте DUMMY.
Сделайте представление для просмотра, которое дёргает значения из функций, описанных в операции где-нить тут же, в DUMMY, и делает это ровно count количество раз, значение тоже прочитать из функции.
Используйте ссылку на DUMMY.
Дальше дело техники.
Решение подходит для большинства случаев, где новый справочник нужен только для "плодежа" значений в комбо-боксе.
Это тоже лок.объекты, но их существенно меньше, особенно если переиспользовать. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Апр 25, 2013 12:44   |
|
Полезность: Нет оценки
|
Random пишет: |
Не надо справочник. |
А чем не подходит справочник "Универсальный справочник кодов/наименований" UD_CODE_NAME ?
И никаких локальных объектов. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Чт Апр 25, 2013 13:09   |
|
Полезность: Нет оценки
|
В принципе в базе есть примеры, например та же операция ::[TRC].[EDIT_ABONENT]. В качестве значений можно сделать запись в справочнике "Настройки."
Ни каких локальных объектов и при этом возможность редактирования.
В общем вариантов масса, главное знать чего хочешь. _________________ всегда есть как минимум 2 выхода |
|
 |
pas Профи
Вступление в Клуб: 20.11.2007
|
Ср Май 15, 2013 13:19   |
|
Полезность: Нет оценки
|
Neumann пишет: | На всякий случай - может кому-нибудь пригодится.
1. Создаете справочник.
2. Создаете ссылку на этот справочник.
3. В типе где будет использоваться ссылка - создаете реквизит в качестве типа указываете данную ссылку.
4. В нужной операции - кнопка "экраная форма" выделяете рамку с названием - в контекстном меню ("Редактирование-преобразовать").
5. В контекстном меню - Панель представлений. Снять галку "По умолчанию" В списке Колонка - выбираем колонку. Сохраняемся.
Всё.
Поправте если что не так. |
Разживал! |
|
 |
Peak Участник
Вступление в Клуб: 01.08.2013
|
Чт Авг 01, 2013 12:28   |
|
Полезность: Нет оценки
|
Random пишет: | Alexsey пишет: | Только стоит учесть, что справочник это дополнительный локальный объект. |
Не надо справочник. Используйте DUMMY.
Сделайте представление для просмотра, которое дёргает значения из функций, описанных в операции где-нить тут же, в DUMMY, и делает это ровно count количество раз, значение тоже прочитать из функции.
Используйте ссылку на DUMMY.
Дальше дело техники.
Решение подходит для большинства случаев, где новый справочник нужен только для "плодежа" значений в комбо-боксе.
Это тоже лок.объекты, но их существенно меньше, особенно если переиспользовать. |
Добрый день!
можете провести пример как использовать DUMMY?
не понял как использовать |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пн Авг 05, 2013 06:38   |
|
Полезность: Нет оценки
|
Peak пишет: | Random пишет: | Alexsey пишет: | Только стоит учесть, что справочник это дополнительный локальный объект. |
Не надо справочник. Используйте DUMMY.
Сделайте представление для просмотра, которое дёргает значения из функций, описанных в операции где-нить тут же, в DUMMY, и делает это ровно count количество раз, значение тоже прочитать из функции.
Используйте ссылку на DUMMY.
Дальше дело техники.
Решение подходит для большинства случаев, где новый справочник нужен только для "плодежа" значений в комбо-боксе.
Это тоже лок.объекты, но их существенно меньше, особенно если переиспользовать. |
Добрый день!
можете провести пример как использовать DUMMY?
не понял как использовать |
1. Делаем библиотеку с функциями типа:
Код: |
type arr_num is table of number;
type arr_str is table of varchar2(32767);
a$s arr_num;
a$id arr_num;
a$text arr_str;
function GetCount return number is
begin
return a$id.count;
end;
function GetId(p_rownum number) return number is
begin
if a$id.exists(p_rownum) then
return a$id(p_rownum);
end if;
return null;
end;
function GetSession(p_rownum number) return number is
begin
if a$s.exists(p_rownum) then
return a$s(p_rownum);
end if;
return null;
end;
procedure Clear is
begin
a$id.delete;
a$text.delete;
end;
function Add(p_session number, p_text varchar2) return number is
v$id number;
begin
select d(d.[id])
in ( select a(a%id+0:id)
in ::[DUMMY]
where rownum <= ::[DW0].[COMBO].GetCount + 1
minus
select b(::[DW0].[COMBO].GetId(rownum))
in ::[DUMMY]
where rownum <= ::[DW0].[COMBO].GetCount )
where rownum < 2
into v$id;
a$s(a$s.count + 1) := p_session;
a$id(a$id.count + 1) := v$id;
a$text(a$text.count + 1) := p_text;
return v$id;
end;
|
представление для просмотра типа
Код: | type main is
select a( ::[DUMMY].[COMBO].GetText(rownum) :text
, ::[DUMMY].[COMBO].GetSession(rownum):session
) in ::[DUMMY]
where a%id in (select b(::[DUMMY].[COMBO].GetId(rownum)) in ::[DUMMY] where rownum <= ::[DUMMY].[COMBO].GetCount)
; |
И пользуемся.
При запуске операции вызываем Clear, Add нужных данных с нужными фильтрами (сессиями). В переменных, с типом ссылка на DUMMY в фильтре вносим нужные сессии. Если переменная одна, то сессии в принципе не нужны, но кто сказал, что вы не захотите потом добавить ещё пару комбобоксов?
Размещаем переменные на форме, конвертируем в выпадающие списки, устанавливаем представление, колонку. В общем, как описано выше. |
|
 |
danzki Участник - экстремал
Вступление в Клуб: 30.09.2010
|
Ср Фев 25, 2015 15:54   |
|
Полезность: Нет оценки
|
Народ!
Снова возник вопрос по комбобоксу.
На форме операции Редактировать есть комбо, который формируется НЕ из представления.
Формируется в Проверке следующим образом:
Код: |
str [STRING_REC];
begin
if P_MESSAGE= 'DEFAULT' then
-- Формируем комбо бокс
V_ARR := next_value('seq_id');
for (
select c(c.R : R)
in (select a(вариант 1' : R)
in DUMMY
where rownum = 1
union all
select a('вариант 2' : R)
in DUMMY
where rownum = 1
)
) loop
str.[STRING] := c.R; -- заполняем имя отчета для combobox
V_ARR%insert(str);
end loop;
end if;
|
В продукте в Дополнительных свойствах сохраняется какой вариант выбран в Конструкторе.
Как затем заставить комбо отображать именно этот вариант?
В конструкторе я сохраняю 1 (если в комбо выбрали Вариант 1), 2 (если Вариант 2), в Редактировать в DEFAULT получаю это значение (1 или 2), но не могу заставить комбо при поднятии формы отображать Вариант 1 или Вариант 2.
Подскажите чего делать? |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Ср Фев 25, 2015 16:12   |
|
Полезность: Нет оценки
|
danzki пишет: | Народ!
Снова возник вопрос по комбобоксу.
На форме операции Редактировать есть комбо, который формируется НЕ из представления.
Формируется в Проверке следующим образом:
Код: |
str [STRING_REC];
begin
if P_MESSAGE= 'DEFAULT' then
-- Формируем комбо бокс
V_ARR := next_value('seq_id');
for (
select c(c.R : R)
in (select a(вариант 1' : R)
in DUMMY
where rownum = 1
union all
select a('вариант 2' : R)
in DUMMY
where rownum = 1
)
) loop
str.[STRING] := c.R; -- заполняем имя отчета для combobox
V_ARR%insert(str);
end loop;
end if;
|
В продукте в Дополнительных свойствах сохраняется какой вариант выбран в Конструкторе.
Как затем заставить комбо отображать именно этот вариант?
В конструкторе я сохраняю 1 (если в комбо выбрали Вариант 1), 2 (если Вариант 2), в Редактировать в DEFAULT получаю это значение (1 или 2), но не могу заставить комбо при поднятии формы отображать Вариант 1 или Вариант 2.
Подскажите чего делать? |
Как-то так должно:
Код: |
str [STRING_REC];
begin
if P_MESSAGE= 'DEFAULT' then
-- Формируем комбо бокс
V_ARR := next_value('seq_id');
for (
select c(c.R : R, c.c_num)
in (select a('вариант 1' : R, 1 : c_num)
in DUMMY
where rownum = 1
union all
select a('вариант 2' : R, 2 : c_num)
in DUMMY
where rownum = 1
)
) loop
declare
refStr ref [STRING_REC];
begin
str.[STRING] := c.R; -- заполняем имя отчета для combobox
refStr := V_ARR%insert(str);
if {СОХРАНЕННОЕ_ЗНАЧЕНИЕ} = c.c_num then
{ИМЯ_ПЕРЕМЕННОЙ_НА_ФОРМЕ} := refStr;
end if;
end;
end loop;
end if;
|
|
|
 |
danzki Участник - экстремал
Вступление в Клуб: 30.09.2010
|
Ср Фев 25, 2015 16:28   |
|
Полезность: Нет оценки
|
prankster пишет: | Как-то так должно:
|
Круто! Работает.
Есть клевая цитата из Lock, Stock and Two Smoking Barrels, которая подошла бы, но меня за нее забанят  |
|
 |
NewGirl Участник
Вступление в Клуб: 14.01.2016
|
Чт Янв 14, 2016 11:51   |
|
Полезность: Нет оценки
|
В продолжение вопроса с выпадающим списком: имеется справочник, пользователи хотят, чтобы при загрузке формы в выпадающем списке было 4 значения из этого справочника (все указаны). Если нужного среди них нет, то провалиться по кнопке в справочник и выбрать другое значение.
Список значений для списка беру из настройки и загоняю в переменную, далее при загрузке формы считываю в фильтре значение переменной и список готов. Делаю дублирующий объект в виде кнопки (чтобы можно было провалиться в справочник), после того как выбираю новую запись значение переменной с перечнем обновляется, а вот значения в списке не обновляются (там фильтр считан при загрузке). Вопрос к знатокам: как обновить список? |
|
 |
NewGirl Участник
Вступление в Клуб: 14.01.2016
|
Чт Янв 14, 2016 12:23   |
|
Полезность: Нет оценки
|
Вопрос снимается, коллеги нагуглили Combo.Refresh. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|