Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle Forms / 25 сообщений из 27, страница 1 из 2
12.01.2006, 10:36
    #33478107
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Помогите с деревом, 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
12.01.2006, 10:46
    #33478151
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
А что пробовал-то? Чего хочешь от дерева? Из вопроса не очень понятно...
...
Рейтинг: 0 / 0
12.01.2006, 11:33
    #33478352
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
хочу в дерево залить данные, чтобы отображались колонки как узлы в дереве, а их данные как child этого узла, а пробывал через add_tree_data, с recordgroup, но пишет "нет данных для заполнения", , запрос в группе вроде правильный типа:"select 1, level, Firm_name, NULL, Firm_ID from FIRM". А также заполнял с помощью add_tree_node - но у меня на один узел выдавало одну запись, хоть и циклом выбирал. Помоги пожалуста, или хоть пример приведи...
...
Рейтинг: 0 / 0
12.01.2006, 12:07
    #33478547
John.D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Sqaimesselect 1, level, Firm_name, NULL, Firm_ID from FIRM
В свойствах группы задайте явно тип данных и размер 4-го столбца (NULL).
...
Рейтинг: 0 / 0
12.01.2006, 12:34
    #33478674
Ales Protiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
...
Рейтинг: 0 / 0
12.01.2006, 13:00
    #33478777
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Спасибо за ссылку , но там уже примере нет только описание :(

John: получается, что если я беру RECORDGROUP, то мне надо использовать тип группы записей - статический? и если да, то в Name надо писать привязку на поле, или имя столбца как оно есть в таблице, а в значениях что писать? Может есть какой нибудь примерчик?
...
Рейтинг: 0 / 0
12.01.2006, 13:14
    #33478829
Sergey M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Для такого случая (имхо, конечно) проще формировать дерево вручную (FTree.Add_Tree_Node).
...
Рейтинг: 0 / 0
12.01.2006, 13:23
    #33478875
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
так у меня получилось, а мне надо с Add_tree_data или так как я писал изначально в примере, с помощью recordgroup
...
Рейтинг: 0 / 0
12.01.2006, 13:38
    #33478936
FRM-42100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Sqaimesтак у меня получилось, а мне надо с Add_tree_data или так как я писал изначально в примере, с помощью recordgroupНу а что именно не получается с Add_tree_data?
...
Рейтинг: 0 / 0
12.01.2006, 14:33
    #33479130
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
пишет мне ошибку "ненверные данные для заполнения"
...
Рейтинг: 0 / 0
12.01.2006, 14:40
    #33479158
FRM-42100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Может код покажешь или мне по кофейной гуще угадывать в какой строке ошибка?
...
Рейтинг: 0 / 0
12.01.2006, 15:22
    #33479287
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Выдает ошибку:"Не могу определить свойства корневого узла", а ошибка "неверные даные для заполнения" - это когда с 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
12.01.2006, 15:42
    #33479370
FRM-42100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Покажи структуру своей RG1, это важно, она должна быть не абы какая...
...
Рейтинг: 0 / 0
12.01.2006, 16:00
    #33479439
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Привожу пример рабочего кода на заполнение дерева:
Код: 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
12.01.2006, 16:09
    #33479479
0!eg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Еще один код
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
12.01.2006, 16:16
    #33479495
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Tolmachev большое спасибо, щас попробую...

Frm42100: вот как заз с этим я думаю и проблема написал так: select 1, level, Firm_name, null Firm_ID from FIRM - если знаешь подскажи как правильно построить и для чего используется статический тип
...
Рейтинг: 0 / 0
12.01.2006, 17:00
    #33479660
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
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
12.01.2006, 17:10
    #33479693
FRM-42100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
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
12.01.2006, 17:19
    #33479711
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
См. раздел справки 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
12.01.2006, 19:28
    #33479970
UK0IAI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
вот еще Вам пример что все объясняет сам по себе


Код: 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
13.01.2006, 09:20
    #33480453
Sqaimes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Всем огромное спасибо за помощь, вы мне очень помогли!!!!!!!!!!!!!! :) У меня все получилось!
MERCI!
...
Рейтинг: 0 / 0
26.02.2006, 18:11
    #33566219
Owner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
есть блок в форме у меня.
Основанный на query, т.е. свойство
Data query source type = 'from clause query'
При этом хотелось бы в процессе работы программно добавлять новые and в предложение where моего select-а для моего блока.
Если использовать default_where (билт-ин set_block_property()), то условия, заданные в нем работают ПОСЛЕ того как получен результат моего "основного" селекта, что не требуется.
Как обратиться к свойству блока, содержащему мой селект? (и поменять ег, ессно)
...
Рейтинг: 0 / 0
26.02.2006, 18:39
    #33566279
Всегда!!!!!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Forms
Вот чем хорош Forms, то что зная принципы его построения, найти ответ на подобного рода вопросы - элементарно.

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


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