السلام عليكم
عندنا جدول الموظفين
Emp(EmpNo,Name,BossNo)
حيث ال BossNo رقم موظف اخر موجود في الجدول
كيف يمكن لنا رسم الموظفين باستخدام الTreeView بحيث يكون أسم الموظف الاعلى النقطة الرئيسية و الموظفين التابعين كافرع من النقطة الرئيسية و هكذا
السلام عليكم
عندنا جدول الموظفين
Emp(EmpNo,Name,BossNo)
حيث ال BossNo رقم موظف اخر موجود في الجدول
كيف يمكن لنا رسم الموظفين باستخدام الTreeView بحيث يكون أسم الموظف الاعلى النقطة الرئيسية و الموظفين التابعين كافرع من النقطة الرئيسية و هكذا
السلام عليكم ورحمة الله وبركاته
أخي AbuZakaria فعلا الكود الذي طلبته مهم جدا، وأنا أريد أن أساعدك ...
لكن أرجوا أن تعطينا مزيدا من التوضيح ... وأن تذكر محاولاتك والعقبات التي مررت بها لكي لا نعيدها ...
سؤال: بالنسبة للموضفين الذين ليس لديهم Boss أعلى منهم، أي هم في قمة الهرم، ماذا نضع في حقل BossNo الخاص بهم؟
الله يوفقك أخي ...
بسم الله الرحمن الرحيم " وقل رب زدني علما"
السلام عليكم
لقد وجدت الحل مع افتراض أن الموظفين الذين هم في قمة الهرم لديهم القيمة '0' صفر في حقل BossNo
كذلك مع افتراض أن هناك خوارزمية أخرى تقوم بتدقيق مدخلات حقل BossNo حيث لا توجد حلقة بين الموظفين (مثلا لا يكون الموظف 1 تحت الموظف 2 وفي نفس الوقت الموظف 2 تحت الموظف 1)
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
Boss_exist:boolean;
begin
treeview1.Items.Clear;
table1.First;
while not table1.Eof do
begin
if table1.FieldByName('BossNo').Asinteger=0 then
treeView1.Items.Add(nil,table1.fieldbyname('EmpNo').asstring);
table1.Next;
end;
while table1.RecordCount<>TreeView1.Items.Count do
begin
table1.First;
while not table1.Eof do
begin
Boss_exist:=false;
for i:=0 to TreeView1.Items.Count-1 do
if TreeView1.Items.Text=table1.FieldByName('BossNo').AsString then
begin
Boss_exist:=true;
break;
end;
if Boss_exist then
TreeView1.Items.AddChild(TreeView1.Items,table1.fieldbyname('EmpNo').AsString);
table1.Next;
end;
end;
for i:=0 to treeview1.Items.Count-1 do
begin
table1.FindKey([TreeView1.Items.Text]);
TreeView1.Items.Text:=table1.fieldbyname('Name').AsString;
end;
end;ملاحظة: لقد ملأت ال treeview في البداية بأرقام الموظفين EmpNo ثم في الأخير عوضت كل رقم بإسم الموظف وذلك لتفادي حدوث خلل عند وجود أكثر من موظف يحملون نفس الإسم
إذا كان لديك أي سؤال أو استفسار فنحن في الخدمة إن شاء الله
وفقك الله
تم تعديل هذه المشاركة بواسطة mohamed.dz في 14 يونيو 2007 في 14:37
بسم الله الرحمن الرحيم " وقل رب زدني علما"
السلام عليكم ورحمة الله وبركاته
أبعث لك بالمثال التالي عسى أن يجيب على تساؤلك.
مع العلم أنه في مكونات Jedi يوجد مكون dbTree الذي يقوم بهذه المهمة دون برمجة.
وفقكم الله.
م. باحماني
هذا الموضوع مغلق.