zeeshan21m
asked on
How can i Use a Heirarcical Tree in Forms 6i
Hello every 1 My name is zeeshan i m Getting Problem with heirarcial Tree in forms 6i it gives an excpetion of invalid tree data ...
Please tell me how can i use htree in forms
with proper record group query thanks
Please tell me how can i use htree in forms
with proper record group query thanks
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks a lot Man
I provide you with the body of the package I use to deal with the hierarchical tree. My hope is that you will fid it useful.
Good luck!
PROCEDURE POPULATE_TREE (p_tree_id ITEM) IS
TYPE pl_table_group_names IS
TABLE OF VARCHAR(120)
INDEX BY BINARY_INTEGER;
TYPE pl_table_group_id IS
TABLE OF NUMBER(6)
INDEX BY BINARY_INTEGER;
htree ITEM;
work_gr_names pl_table_group_names;
work_gr_id pl_table_group_id;
vn_group INTEGER;
vn_group_id INTEGER;
vn_member_begin INTEGER;
vn_member_count INTEGER;
v_new_node_root FTREE.NODE;
v_new_node_group FTREE.NODE;
v_new_node_member FTREE.NODE;
vc_root_label VARCHAR2(80);
CURSOR rila_groups IS
SELECT id,group_name,group_direct
vc_rila_group rila_groups%ROWTYPE;
CURSOR rila_employees IS
SELECT id, rila_id|| ' '|| given_name||' ' || second_name ||' '|| surname AS name
FROM employee
WHERE service_status = :service_status
AND employee.rila_group = vn_group_id
ORDER BY rila_id;
vc_rila_employee rila_employees%ROWTYPE;
BEGIN
-- Register ALL Rila group - Group_Names and Id
OPEN rila_groups;
vn_group := 0;
LOOP
FETCH rila_groups INTO vc_rila_group;
EXIT WHEN rila_groups%NOTFOUND;
vn_group := vn_group + 1;
work_gr_names(vn_group) := vc_rila_group.group_name;
work_gr_id(vn_group) := vc_rila_group.id;
END LOOP;
CLOSE rila_groups;
-- Delete the existing tree (if any)
-- Ftree.ROOT_NODE is an undocumented constant pointing the Root node of the tree
Ftree.Delete_Tree_Node(p_t
-- Make the Root Node "Rila Solutions AD"
vc_root_label := 'RILA SOLUTIONS AD';
IF :service_status = '1' THEN vc_root_label := vc_root_label || ' - list of candidates';
ELSIF :service_status = '2' THEN vc_root_label := vc_root_label || ' - list of employees';
ELSIF :service_status = '3' THEN vc_root_label := vc_root_label || ' - list of released';
END IF;
v_new_node_root := Ftree.Add_Tree_Node(
p_tree_id,
Ftree.ROOT_NODE,
Ftree.PARENT_OFFSET,
Ftree.LAST_CHILD,
Ftree.EXPANDED_NODE,
vc_root_label,
NULL,
NULL);
-- Add nodes to the Hierarchical Tree - Subgroup Nodes
FOR i IN 1..vn_group LOOP
-- Add parent node - the name of the Rila Group
/*
v_new_node_group := Ftree.Add_Tree_Node(
p_tree_id,
Ftree.ROOT_NODE,
Ftree.PARENT_OFFSET,
Ftree.LAST_CHILD,
Ftree.EXPANDED_NODE,
work_gr_names(i),
NULL,
work_gr_names(i));
*/
v_new_node_group := Ftree.Add_Tree_Node(
p_tree_id,
v_new_node_root,
Ftree.PARENT_OFFSET,
Ftree.LAST_CHILD,
Ftree.EXPANDED_NODE,
work_gr_names(i),
NULL,
work_gr_names(i));
-- Add all sibling nodes - Employees Member of the Subgroup
vn_group_id := work_gr_id(i);
FOR k IN rila_employees LOOP
v_new_node_member := Ftree.Add_Tree_Node(
p_tree_id,
v_new_node_group,
Ftree.PARENT_OFFSET,
Ftree.LAST_CHILD,
Ftree.EXPANDED_NODE,
k.name,
NULL,
TO_CHAR(k.id));
END LOOP;
END LOOP;
-- Expand the ROOT node of the hierarchical tree
FTREE.SET_TREE_NODE_PROPER
--Ftree.Set_Tree_Node_Prop
vn_member_begin := vn_group + 1;
EXCEPTION
WHEN OTHERS THEN
CLOSE rila_groups;
CLOSE rila_employees;
END POPULATE_TREE; -- End Procedure POPULATE_TREE
PROCEDURE Open_Employee_Form (p_tree_id ITEM) IS
node_label VARCHAR2(100);
node_value VARCHAR2(10);
node_depth VARCHAR2(1);
list_id ParamList;
list_name VARCHAR2(10) := 'param_list';
BEGIN
-- Find the DEPTH of the node clicked on.
node_depth := Ftree.Get_Tree_Node_Proper
--MESSAGE(node_depth || ' ' || node_value ||' '|| node_label);
--PAUSE;
-- only nodes with depth 3 correspond to employees
-- depth 3 corresponds to groups
-- depth 1 corresponds to RILA SOLUTION
IF node_depth = '3' THEN
-- Find the VALUE of the node clicked on.
node_value := Ftree.Get_Tree_Node_Proper
-- Find the LABEL of the node clicked on.
node_label := Ftree.Get_Tree_Node_Proper
/*
** Create a parameter list named "param_list"
*/
list_id := Get_Parameter_List(list_na
IF NOT Id_Null(list_id) THEN
Destroy_Parameter_List(lis
END IF;
list_id := Create_Parameter_List(list
/*
** Add parameter to the list to pass values for each
** user-defined parameters defined in the target form; for each
** parameter, specify its key, type (text or data), and value
*/
Add_Parameter(list_id, 'PROCESS_TYPE',TEXT_PARAME
Add_Parameter(list_id, 'EMPLOYEE#',TEXT_PARAMETER
Add_Parameter(list_id, 'EMPLOYEE_SERVICE_STATUS',
Add_Parameter(list_id, 'WEB_or_LAN',TEXT_PARAMETE
-- now open the form using the created parameter list
OPEN_FORM('staff_new',ACTI
END IF;
END Open_Employee_Form; -- End Procedure Open_Employee_Form
PROCEDURE Colapse_All_Nodes (p_tree_id ITEM) IS
node ftree.node;
state varchar2(30);
node_label varchar2(80);
BEGIN
-- Get the root node
node := Ftree.Find_Tree_Node(p_tre
--node_label := Ftree.Get_Tree_Node_Proper
--MESSAGE(node_label);
--PAUSE;
-- collapse the node if it is expanded
WHILE NOT Ftree.ID_NULL(node) LOOP
state := Ftree.Get_Tree_Node_Proper
IF state = Ftree.EXPANDED_NODE THEN
Ftree.Set_Tree_Node_Proper
END IF;
node := Ftree.Find_Tree_Node(p_tre
END LOOP;
END colapse_all_nodes;
PROCEDURE Expand_All_Nodes (p_tree_id ITEM) IS
node ftree.node;
state varchar2(30);
node_label varchar2(80);
BEGIN
-- Get the root node
node := Ftree.Find_Tree_Node(p_tre
--node_label := Ftree.Get_Tree_Node_Proper
--MESSAGE(node_label);
--PAUSE;
-- expand the node if it is collapsed
WHILE NOT Ftree.ID_NULL(node) LOOP
state := Ftree.Get_Tree_Node_Proper
IF state = Ftree.COLLAPSED_NODE THEN
Ftree.Set_Tree_Node_Proper
END IF;
node := Ftree.Find_Tree_Node(p_tre
END LOOP;
END Expand_All_Nodes;