الانتقال إلى المحتوى

اضافة الــ Child في الشجرة


ثامر_أحمد_1980

Recommended Posts

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

الأخوه الأعزاء

أرجو المساعدة في اضافة الأبناء تحت الأباء في الشجرة 

لدي شاشة فيها شجرة و بعض الــ text_item لإضافة البيانات في قاعدة البيانات.

عند الضفط على زر إضافة حساب فأنه يتم إضافة الحساب في الجدول و عرضه في الشجرة مباشرة بدون ما أعمل Refresh للشجرة

و لكن عند أضافة حساب الأبن فإنه يتم حفظ السجل في الجدول و لكن لايتم عرضة في الشجرة. و حاولت جاهدا إضافة الكود الخاص بجلب بيانات الشجرة في الحدث post_database_commit 

طبقا لما أشار له أحد الأخوة و لكن لا يحدث أي تغير.

أتوقع أنه يوجد اضافة أو تعديل في كود زر أضافة حساب الأبن.

حاولت جاهدا للتعديل و لكن يتم تكرار بيانات الشجرة كامله.

أرفق لكم الشاشة و اتمنى ان تساعدوني و لكم جزيل الشكر.

 

TREE_TEST.rar

رابط هذا التعليق
شارك

كيف أن أعتبر القيمة في الحقل acid_lov

هي القيمة اللتي سوف أبني عليها جملة الأضافة.

بمعنى أنه عندما أريد أن أظيف أبن تحت أب. لابد أولا أن أختار الأب من خلال الفنكشن Ftree.Get_Tree_Selection

 

رابط هذا التعليق
شارك

ممكن تكتب لنا الكود المستخدم حتى نستطيع المساعدة ..فأنا أعمل على الإصدار 6  والمرفقات هي على الإصدار 10g  

لأني قمت يتنزيل المرفق ولم تعمل الفورم لدي للسبب الذي بينته 

رابط هذا التعليق
شارك

جزاك الله خير أخت ميسم...

هذا الكود يعمل population  للشجرة..

طبعا أنا حصلته في المنتدى و أستخدمته و بالفعل يعمل معي.

declare 

cursor MAINACC_cur is  select acid , acname  from   MAINACC order by acid; 
 
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); 

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',BRANCH2ACC_r.acid2); 

end loop; 
end loop; 
end loop;
end;

في نفس الشاشة يوجد عدد 2 بلوك

واحد للشجرة و الأخرى يوجد فيها Buttons و Text_item 

من خلالهم أستطيع ان أعمل إضافة في حساب أب أو حساب أبن

في زر حساب الأب يوجد هذا الكود


declare 

cursor MAINACC_cur is  select acid , acname  from   MAINACC  where acid=:ac.acid1 order by acid; 
htree item;
 parent_node varchar2(200); 

begin 
	insert into mainacc(acid,acname) values(:ac.acid1,:ac.acname1);
forms_ddl('commit');
Htree:=Find_item('tree'); 
parent_node:=Ftree.Add_Tree_Node(htree,Ftree.ROOT_NODE,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,:ac.acid1||' '||:ac.acname1,'insrec',:ac.acid1); 
end;
	

و عند النقر عليه يتم أظهار الحساب الجديد في الشجرة..

----

و بالسبة للزر الثاني

اللي هو إضافة حساب الأبن

لابد أولا أن اظيف رقم الحساب الرئيسي اللي هو حساب الأب. في هذا الكود تتم عملية الأضافة و لكن لايظهر سجل الأبن ألاّ في حالة أن أغلق الشاشة و فتحها من جديد. أرجو أن تساعديني في انه تتم الأضافة و إظهار سجل الأبن بدون غلق الشاشة.

 الكود 


declare 

cursor MAINACC_cur is  select acid , acname  from   MAINACC order by acid ; 
 
cursor BRANCH1ACC_cur (N number) is Select acid1 , acname1 from   BRANCH1ACC where  acid=:ac.acid1; 
 
Htree    item; 
child_node  varchar2(200); 
 
begin 
	insert into BRANCH1ACC(acid1 , acname1,acid) values(:ac.acid1,:ac.acname1,:ac.acid_lov);
	forms_ddl('commit');
Htree:=Find_item('tree');
 
for i in (select acid1,acname1 from   BRANCH1ACC where  acid=:ac.acid_lov) loop
child_node:=Ftree.Add_Tree_Node(htree,:ac.acid_lov,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,i.acid1||' '||i.acname1,'insrec',i.acid1); 
end loop;

end;

جزيت خيرا.

post-157773-0-69213400-1455984781_thumb.png

رابط هذا التعليق
شارك

إن شاء الله الحل بسيط 

من شروط العمل مع tree  أن تكون الـ tree  على block  لوحدها مستقل 

بعد الإنتهاء من عملية الإضافة (الأبن) نعمل كتابة 

go_block('TREE');

وكإنما تعمل refresh للـ tree  

رابط هذا التعليق
شارك

جزيتي خيرا أخت ميسم.

و لكن لم أشاهد لها أي تأثير

حيث أنني وضعتها قبل و كذلك بعد هذه الجملة 

parent_node:=Ftree.Add_Tree_Node(htree,:ac.acid_lov,Ftree.PARENT_OFFSET,Ftree.LAST_CHILD,Ftree.EXPANDED_NODE,i.acid1||' '||i.acname1,'insrec',i.acid1); 

رابط هذا التعليق
شارك

من المهم معرفة أين يتم كتابتها 

تكتبها بعد ان تتم الإضافة للـ tree

وعند الـ block tree تعمل على trigger when new instance  تكتب إيعاز ملىء الـ tree  حتى عندما نقول('go_block ('tree يتفعل الـ trigger when new instance

وتحته مكتوب ايعاز ملىء الـ tree  وبهذا كإننا عملنا refresh  للـ tree  وتظهر بقيمها الجديدة 

رابط هذا التعليق
شارك

  • بعد 9 شهور...

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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