powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle Forms
27 сообщений из 27, показаны все 2 страниц
Oracle Forms
    #33478107
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите с деревом, please!
Я уже много чего попробывал, может быть я какойто сути не уловлю, получилось одним способомтолько с помощью Add_tree_node.
А пробовал вот так:

DECLARE

v_ignore NUMBER;

find_node ftree.NODE;

BEGIN



Ftree.Set_Tree_Property('B.T', Ftree.RECORD_GROUP, 'RG1');

v_ignore := Populate_Group('RG1');

Ftree.Populate_Tree('B.T');


find_node := Ftree.Find_Tree_Node('B.T', '', Ftree.FIND_NEXT_CHILD,

Ftree.NODE_LABEL, Ftree.ROOT_NODE, Ftree.ROOT_NODE);


:system.message_level:='10';

end;
...
Рейтинг: 0 / 0
Oracle Forms
    #33478151
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что пробовал-то? Чего хочешь от дерева? Из вопроса не очень понятно...
...
Рейтинг: 0 / 0
Oracle Forms
    #33478352
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу в дерево залить данные, чтобы отображались колонки как узлы в дереве, а их данные как child этого узла, а пробывал через add_tree_data, с recordgroup, но пишет "нет данных для заполнения", , запрос в группе вроде правильный типа:"select 1, level, Firm_name, NULL, Firm_ID from FIRM". А также заполнял с помощью add_tree_node - но у меня на один узел выдавало одну запись, хоть и циклом выбирал. Помоги пожалуста, или хоть пример приведи...
...
Рейтинг: 0 / 0
Oracle Forms
    #33478547
Фотография John.D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sqaimesselect 1, level, Firm_name, NULL, Firm_ID from FIRM
В свойствах группы задайте явно тип данных и размер 4-го столбца (NULL).
...
Рейтинг: 0 / 0
Oracle Forms
    #33478674
Фотография Ales Protiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Oracle Forms
    #33478777
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылку , но там уже примере нет только описание :(

John: получается, что если я беру RECORDGROUP, то мне надо использовать тип группы записей - статический? и если да, то в Name надо писать привязку на поле, или имя столбца как оно есть в таблице, а в значениях что писать? Может есть какой нибудь примерчик?
...
Рейтинг: 0 / 0
Oracle Forms
    #33478829
Sergey M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для такого случая (имхо, конечно) проще формировать дерево вручную (FTree.Add_Tree_Node).
...
Рейтинг: 0 / 0
Oracle Forms
    #33478875
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так у меня получилось, а мне надо с Add_tree_data или так как я писал изначально в примере, с помощью recordgroup
...
Рейтинг: 0 / 0
Oracle Forms
    #33478936
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sqaimesтак у меня получилось, а мне надо с Add_tree_data или так как я писал изначально в примере, с помощью recordgroupНу а что именно не получается с Add_tree_data?
...
Рейтинг: 0 / 0
Oracle Forms
    #33479130
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишет мне ошибку "ненверные данные для заполнения"
...
Рейтинг: 0 / 0
Oracle Forms
    #33479158
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может код покажешь или мне по кофейной гуще угадывать в какой строке ошибка?
...
Рейтинг: 0 / 0
Oracle Forms
    #33479287
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выдает ошибку:"Не могу определить свойства корневого узла", а ошибка "неверные даные для заполнения" - это когда с recordgroup -я перепутал
DECLARE

htree ITEM;

rg_data RECORDGROUP;

BEGIN

htree := Find_Item('B.T');


rg_data := FIND_GROUP('RG1'); 'RG1' - имя группы

Ftree.Add_Tree_Data(htree, Ftree.ROOT_NODE, Ftree.PARENT_OFFSET,

Ftree.LAST_CHILD, Ftree.RECORD_GROUP, rg_data);

END;
...
Рейтинг: 0 / 0
Oracle Forms
    #33479370
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажи структуру своей RG1, это важно, она должна быть не абы какая...
...
Рейтинг: 0 / 0
Oracle Forms
    #33479439
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу пример рабочего кода на заполнение дерева:
Код: plaintext
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
PROCEDURE pop_tree (tree_mode VARCHAR2) IS
	
	htree     	ITEM;
	Query_text	VarChar2( 1000 );
	vParent     NUMBER;

BEGIN

	htree := Find_Item('TREE_BLOCK.HTREE3');

	-- очистить дерево
	Ftree.Populate_Tree(htree);
	
	-- заполнить дерево
	If tree_mode = 'EXPAND' then
		Query_text:= 'SELECT 1';
	ELSE	
		Query_text:= 'SELECT DECODE(LEVEL, 1, 1, -1)';
	END IF;
	
	Query_text:= Query_text||' AS STATE, LEVEL, '||
									'st.st_pack.item_decode(t.ITEM_ID, ''FULL'') || '' (*''||to_char(t.amount) ||''/''||TO_CHAR(T.COMPLETE)||'')'', '||
									'st.st_pack.GET_icon_name('||to_char(:production_task.Production_id)||
									', LEVEL, T.PROD_PARENT_ID, T.PROD_CHILD_ID) AS ICONS, '||
									'T.PROD_CHILD_ID '||
								'FROM st.prod_task_structure t '||
								'WHERE t.production_id = '||to_char(:production_task.Production_id)||
								' AND  ST.ST_PACK.ITEM_DECODE(T.ITEM_ID, ''STORE_ID'') = '||to_char(:parameter.p_store_id)||
								' AND st.st_pack.Check_Drafts(t.ITEM_ID) = 1 '||
								' CONNECT BY T.PROD_PARENT_ID = PRIOR T.PROD_CHILD_ID '||
								' START WITH PROD_PARENT_ID = 0'||
								' ORDER BY st.st_pack.Get_Tree_seq(T.ITEM_ID, LEVEL) ';
	
	-- Debug SQL
	DebugSQL('Executing> '||Query_text, FALSE);

	-- вставить ветку в дерево-приемник
	Ftree.Add_Tree_Data(htree,
		                   Ftree.ROOT_NODE,
		                   Ftree.PARENT_OFFSET,
		                   Ftree.LAST_CHILD,
		                   Ftree.QUERY_TEXT,
		                   query_text);
End;
...
Рейтинг: 0 / 0
Oracle Forms
    #33479479
0!eg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один код
declare
node ftree.node;
state varchar2(30);
htree item;
v_gnore number;
rg_emps recordgroup;
begin
-- Find the tree itself.
htree:=Find_item('article.tree');
rg_emps:=Create_group_from_query('rg_emps',
'SELECT 1,level,bdfs||'' ''||name_article,null, id
FROM article
START WITH id_parent is null
CONNECT BY PRIOR id = id_parent');
v_gnore:=populate_group(rg_emps);
Ftree.Set_tree_property(htree, Ftree.record_group,rg_emps);
-- Find the tree itself.
htree := Find_Item('article.tree');
-- Find the root node of the tree.
node := Ftree.Find_Tree_Node(htree, '');
--Loop through all nodes and expand each one if it is collapsed.
WHILE NOT Ftree.ID_NULL(node) LOOP
state := Ftree.Get_Tree_Node_Property(htree, node, Ftree.NODE_STATE);
IF state = Ftree.EXPANDED_NODE THEN
Ftree.Set_Tree_Node_Property(htree, node, Ftree.NODE_STATE,
Ftree.COLLAPSED_NODE);
END IF;
node := Ftree.Find_Tree_Node(htree, '', free.find_NEXT,Ftree.NODE_LABEL,'',
node);
END LOOP;
end;
...
Рейтинг: 0 / 0
Oracle Forms
    #33479495
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tolmachev большое спасибо, щас попробую...

Frm42100: вот как заз с этим я думаю и проблема написал так: select 1, level, Firm_name, null Firm_ID from FIRM - если знаешь подскажи как правильно построить и для чего используется статический тип
...
Рейтинг: 0 / 0
Oracle Forms
    #33479660
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tolmachev я попробывал, но мне пишет нет данных для заполнения, видно не так подставил, если не трудно поясни некоторые значения:

'st.st_pack.item_decode(t.ITEM_ID, ''FULL'') || '' (*''||to_char(t.amount) ||''/''||TO_CHAR(T.COMPLETE)||'')'', '||
'st.st_pack.GET_icon_name('||to_char(:production_task.Production_id)||
', LEVEL, T.PROD_PARENT_ID, T.PROD_CHILD_ID) AS ICONS, '||
'T.PROD_CHILD_ID '||
'FROM st.prod_task_structure t '||
'WHERE t.production_id = '||to_char(:production_task.Production_id)||
' AND ST.ST_PACK.ITEM_DECODE(T.ITEM_ID, ''STORE_ID'') = '||to_char(:parameter.p_store_id)||
' AND st.st_pack.Check_Drafts(t.ITEM_ID) = 1 '||
' CONNECT BY T.PROD_PARENT_ID = PRIOR T.PROD_CHILD_ID '||
' START WITH PROD_PARENT_ID = 0'||
' ORDER BY st.st_pack.Get_Tree_seq(T.ITEM_ID, LEVEL) ';

----- st.st_pack?
------ connect by и обязателен ли он?
Я та значения свои подогнал, скомпилилось, а вот ошибочка есть...
...
Рейтинг: 0 / 0
Oracle Forms
    #33479693
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sqaimesнаписал так: select 1, level, Firm_name, null Firm_ID from FIRM - если знаешь подскажи как правильно построить и для чего используется статический типУ тебя не хватает полей в запросе. Почитай в online help главу "Customizing objects in Forms" -> "Format of Data Used to Populate a Hierarchical Tree"
...
Рейтинг: 0 / 0
Oracle Forms
    #33479711
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. раздел справки Forms "Format of data used to populate a hierarchical tree"
Попробуй для тренировки код
Код: plaintext
Query_text:= 'select 1, level, ''Firm_name'', ''icons\module'', 1 from DUAL';
...
Рейтинг: 0 / 0
Oracle Forms
    #33479970
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще Вам пример что все объясняет сам по себе


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
select 

  -- :ct.show_level это поле типа List_Item в FORMS
  -- принимает целые значения типа 1 или 2 или 3 или 4 или 100
  -- Для валуе = 100 - дерево выводится в полностью раскрытом виде
  -- Для валуе = 1 - дерево выводится в свернутом виде от 1 уровня дерева.
  -- Пробуйте сами - увидите как это
  
  decode (level, 
   1 , decode (:ct.show_level, 1 ,- 1 , 1 ),
   2 , decode (:ct.show_level, 2 ,- 1 , 1 ),
   3 , decode (:ct.show_level, 3 ,- 1 , 1 ),
   4 , decode (:ct.show_level, 4 ,- 1 , 1 ),
  -- ...можно еще тут добавить ...
  decode (:ct.show_level, 100 , 1 ,- 1 )), 
  level, 
  DECODE NM_PRODUCT, 
  -- формируем имя файла Иконки что САМА отобразится на Икране 
  -- если такой файл иконки ...может быить найден по известным Путям...
  
  decode(тип_строки,'узел','Икона_узла','Икона_строки') as icons, 
  RG_PRODUCT 
from Таблица_продуктов
connect by prior rg_product = rg_root 
start with rg_root is null
...
Рейтинг: 0 / 0
Oracle Forms
    #33480453
Sqaimes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо за помощь, вы мне очень помогли!!!!!!!!!!!!!! :) У меня все получилось!
MERCI!
...
Рейтинг: 0 / 0
Oracle Forms
    #33566219
Owner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть блок в форме у меня.
Основанный на query, т.е. свойство
Data query source type = 'from clause query'
При этом хотелось бы в процессе работы программно добавлять новые and в предложение where моего select-а для моего блока.
Если использовать default_where (билт-ин set_block_property()), то условия, заданные в нем работают ПОСЛЕ того как получен результат моего "основного" селекта, что не требуется.
Как обратиться к свойству блока, содержащему мой селект? (и поменять ег, ессно)
...
Рейтинг: 0 / 0
Oracle Forms
    #33566279
Всегда!!!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот чем хорош Forms, то что зная принципы его построения, найти ответ на подобного рода вопросы - элементарно.

Q.Нужно программно {прочитать|изменить} свойство некоего объекта?
A.Смотрим хелп на {GET|SET}_<object>_PROPERTY и получаем список свойств, которые можно читать/менять.
...
Рейтинг: 0 / 0
Oracle Forms
    #33566281
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меняй программно свойство "Query Data Source Name"
...
Рейтинг: 0 / 0
Oracle Forms
    #33566470
TRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolmachov DmitiryМеняй программно свойство "Query Data Source Name"
... с помощью процедуры SET_BLOCK_PROPERTY.
не забудь, что запрос, на котором основан блок, надо заключать в круглые скобки!
...
Рейтинг: 0 / 0
Oracle Forms
    #33566902
Owner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гм, set_block_property(<block>,<а вот тут-то что - в хелпе нэма!!!>,<мой_селект>)
...
Рейтинг: 0 / 0
Oracle Forms
    #33566975
Фотография John.D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<а вот тут-то что - в хелпе нэма!!!> = QUERY_DATA_SOURCE_NAME
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle Forms
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]