الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مساعدة في الحصول على قيمة الــ Child في الشجرة

Featured Replies

بتاريخ:

السلام عليكم و رحمة الله وبركاته
أرجو أن أحصل على المساعدة منكم في الحصول على قيمة الـــ Child
حبث أنني قمت بإنشاء جدول للحسابات و هي تقريبا 5 جداول
قمت بإنشاء فورم و إنشأت شجرة و أستخدم الحدث When-New-Form-Instance
و كتب الكود التالي:-

declare
/*
dept_cur=MAINACC_cur
emp_cur=BRANCH1ACC_cur
emp_cur2=BRANCH2ACC_cur
dept_R=MAINACC_r
emp_R=BRANCH1ACC_r
emp_R2=BRANCH2ACC_r
*/
cursor MAINACC_cur is
select acid , acname
from   MAINACC;

cursor BRANCH1ACC_cur (N number) is
Select acid1 , acname1
from   BRANCH1ACC
where  acid=N;

 cursor BRANCH2ACC_cur (M number) is
Select acid2 , acname2
from   BRANCH2ACC
where  acid1=M;
Htree	 item;
 parent_node varchar2(200);
 child_node  varchar2(200);
 parent_node1 varchar2(200);
 child_node1  varchar2(200);

begin
Htree:=Find_item('tree');
For MAINACC_r in MAINACC_cur loop
parent_node:=Ftree.Add_Tree_Node(htree,Ftree.ROOT_NODE,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,MAINACC_r.acid||' '||MAINACC_r.acname,'insrec',MAINACC_r.acid);
Htree:=Find_item('tree');
For BRANCH1ACC_r in BRANCH1ACC_cur(MAINACC_r.acid) loop
child_node:=Ftree.Add_Tree_Node(htree,parent_node,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,BRANCH1ACC_r.acid1||' '||BRANCH1ACC_r.acname1,'insrec',BRANCH1ACC_r.acid1);
-- end loop;
--end loop;
--end;
-------
/* Htree:=Find_item('tree');
For BRANCH1ACC_r in BRANCH1ACC_cur loop
parent_node1:=Ftree.Add_Tree_Node(htree,Ftree.ROOT_NODE,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,BRANCH1ACC_r.acid1||' '||BRANCH1ACC_r.acname1,'insrec',BRANCH1ACC_r.acid1);
*/
Htree:=Find_item('tree');
For BRANCH2ACC_r in BRANCH2ACC_cur(BRANCH1ACC_r.acid1) loop
child_node1:=Ftree.Add_Tree_Node(htree,child_node,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,BRANCH2ACC_r.acid2||' '||BRANCH2ACC_r.acname2,'insrec',BRANCH1ACC_r.acid1);
end loop; --end loop;
end loop;
end loop;
end;


هذ الكود يقوم بإنشاء البكج الخاصة بـــFtree
ومن خلاله يقوم بتعبئة الشجرة بالبيانات
و كتبت في التريجر WHEN-TREE-NODE-SELECTED
الكود التالي

declare
Value_node  varchar2(500);
 Value_node1  varchar2(50);
 x varchar2 (50);
 y1 varchar2 (50);
  y2 varchar2 (50);
y3 varchar2 (50);
htree  item;

begin
htree:=find_item('tree');
Value_node := Ftree.GET_TREE_NODE_PROPERTY(htree,:system.trigger_node,Ftree.NODE_value );
:a:=value_node;
end;


حيث يقوم بعرض قيمة الــ Node في Text_item الموجود بالفورم
جاولت أن أقوم بإختيار فيمة الـــChild و لكن لا يعرض اي قيمة في الــ Text_Item
أرجو منكم المساعدة في الحصول على ذلك
و لكم جزيل الشكر
أرفق لكم الفورم و الجداول و جمل الــInsert

Thamer.rar

بتاريخ:

في آخر تعبئة لاحظ باللون الاحمر :

child_node1:=Ftree.Add_Tree_Node(htree,child_node,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,BRANCH2ACC_r.acid2||' '||BRANCH2ACC_r.acname2,'insrec',BRANCH1ACC_r.acid1);

فقط بدلها بـــ : ,BRANCH2ACC_r.acid2

بتاريخ:
  • كاتب الموضوع

شكرا لك أخ محمد
و لكن أخي
أنا أريد أن تظهر قيمة الChild في الشاشة. الكود اللي في الحدث When-New-Form-Instance شغال تمام و لكن الإضافة تكون في الحدث WHEN-TREE-NODE-SELECTED
لنفرض مثلا هذه الشجرة
1 موظفين
1-1 العلاقات العامة
1-1-1 مدير العلاقات العامة
2 مدربين
2-1 تقنية معلومات
---
في الكود الثاني لما أضغط على العلاقات العامة تظهر لي كلمة العلاقات العامة في الفورم و لكن لما أضغط على مدير العلاقات العامة تبقى كلمة العلاقات العامة موجودة في الفورم ولا تتغير ولما أضعط على مدربين تظهر كلمة مدربين على الشاشة و كذلك لما أضغط على تقنية المعلومات تظهر كلمة تقنية المعلومات
--
المشكلة هي كيف أظهر قيمة الــ NODE اللي تحت الــ Child
ولك جزيل الشكر

بتاريخ:

السلام عليكم ورحمة الله وبركاته

اخي الكريم

جرب استخدام الكود كما يلي


declare


v_htree ITEM;
pp integer ;
current_node FTREE.NODE;
num1 integer ;
begin
message('ÇáÊÓáÓá ÇáÔÌÑì'||' '||:system.trigger_node , no_acknowledge) ;
v_htree := Find_Item('tree_bl.htree');
current_node := Ftree.Get_Tree_Selection(v_htree, 1);
pp := ftree.GET_TREE_NODE_PROPERTY(v_htree,current_node,Ftree.NODE_VALUE);


select count(num) into num1 from v_bal_tree where num = pp ;


if num1 > 0 then


select de_cr , num , nam , vd , vc
into :de_cr , :num , :nam , :vd , :vc
from v_bal_tree
where num = pp ;


else


:de_cr := 0 ;
:num := 0 ;
:nam := 0 ;
:vd := 0 ;
:vc := 0 ;
end if ;


end ;



انظر للشاشة المرفقة مصممة بـ 10g

جزاك الله كل خير

main.rar

بتاريخ:

السلام عليكم ورحمة الله وبركاته

كما يمكن استخدام الكود التالي وهو مطبق على قاعدة البيانات scott

WHEN-TREE-NODE-SELECTED
declare
rank number :=0 ;
begin
rank := ftree.get_tree_node_property('tree_bl.htree', :system.trigger_node , ftree.node_depth) ;
if rank = 3 then
go_block('emp') ;
set_block_property('emp' , default_where , 'empno='||ftree.get_tree_node_property('tree_bl.htree', :system.trigger_node , ftree.node_value)) ;
execute_query ;
else
go_block('emp') ;
clear_block ;
end if ;
end ;
OR
declare
v_htree item ;
node_value number ;
begin
message('التسلسل الهرمي'||' '||:system.trigger_node , no_acknowledge) ;
v_htree := find_Item('tree_bl.htree') ;
node_value := ftree.get_tree_node_property(v_htree , :system.trigger_node , ftree.node_value) ;
if node_value > 40 then
go_block('emp') ;
set_block_property('emp', default_where , 'empno ='|| node_value ) ;
go_block('emp') ;
execute_query ;
else
go_block('emp') ;
clear_block ;
end if ;
end ;

جزاك الله كل خير

بتاريخ:

السلام عليكم ورحمة الله وبركاته

أخي الكريم Thamer

مرفق ملف يحتوي على ملف للدتا والشاشة بعد أن تم تعديلهما حسب المطلوب

جزاك الله كل خير

Thamer_tree.rar

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا أخي الكريم
زادك الله علما و أدبا
و جزاك الله خير

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.