PDA

View Full Version : TreeView و بانک اطلاعاتی



Mohammad S
شنبه 26 اردیبهشت 1383, 11:27 صبح
با سلام خدمت دوستان عزیز
من می خواهم یک TreeView را به یک بانک اتصال دهم. بانک من به صورت زیر طراحی شده:
فیلدی به نام کارخانه سازنده و فیلدی به نام نوع محصول و فیلدی هم به عنوان نام جنس قرار داده ام. حال می خواهم در لیست ویو موارد فوق را نشان دهم : اول اسم کارخانه سازنده، گره زیر آن مربوط به نوع محصول و گره زیرین آن مربوط به نام جنس. سپس گره های اصلی دیگر (نام کارخانه سازنده) و ..........
مشکلی که من دارم این است که من از حلقه های تودر تو برای این کار استفاده کردم (چون بلد نیستم به هر جای لیست ویو که دلم خواست گره اضافه کنم (گره اصلی یا فرزند یا نوه یا ...) ) . در نتیجه اگر یک مرتبه نام کارخانه سازنده "تهران" باشد با نوع جنس "کاشی" و یک رکورد دیگر از بانک با نام کارخانه سازنده "تهران" و نوع جنس "سرامیک" باشد ، دو گره (در طول اجرای حلقه های تو در تو) با نام تهران اضافه می شود که هر دو هم دارای همان فرزندان هستند.
اگر بتوانم به صورتی هر جا که لازم باشد یک گره اصلی یا فرزند اضافه کنم، مشکلم حل می شود چون دیگر لازم نیست از حلقه های تو در تو استفاده کنم.
یا اینکه راه حل دیگری پیشنهاد کنید.
کدی که من استفاده کرده ام:

procedure TForm1.Button3Click(Sender: TObject);
var
MyTreeNode: TTreeNode;
s:string;
begin
SQLDataSet1.CommandText:='select distinct kharkhaneye_sazande from tb_anbar_ajnas'];
SQLDataSet1.Active:=false;
SQLDataSet1.Active:=true;
SQLDataSet2.Active:=false;
SQLDataSet2.Active:=true;

SQLDataSet1.First;
TreeView1.Items.Clear;
while not SQLDataSet1.Eof do
begin
MyTreeNode := TreeView1.Items.Add(nil, SQLDataSet1['karkhaneye_sazande']);
s:=SQLDataSet1['karkhaneye_sazande'];
SQLDataSet2.Active:=false;
SQLDataSet2.CommandText:='select distinct model from tb_anbar_ajnas where karkhaneye_sazande = '+QuotedStr(s);
SQLDataSet2.Active:=true;
if SQLDataSet2.RecordCount>0 then
begin
while not SQLDataSet2.Eof do
begin
TreeView1.Items.AddChild( MyTreeNode, SQLDataSet2['model']);
SQLDataSet2.Next;
end;
SQLDataSet1.Next;
end;
end;
end;
یک سوال دیگر: چطور می توانم تشخیص دهم که کاربر، کدام گره را انتخاب کرده البته به همراه نام پدر و جد و ... چون نمی توان با صرف داشتن یک گره، آن را در بانک اطلاعاتی جستجو کرد، ضمناً اگر بتوان کاری کرد که همین که کاربر بر روی یگ گره از نوع مدل جنس (آخرین گره یک گره اصلی یا نوه یک گره اصلی) کلیک کرد،‌ بقیه اطلاعات مربوط به آن جنس خاص در چند Edit دیگر وارد شود. (البته لازمه این کار این است که بتوانیم گره ای را که انتخاب شده از بانک جستجو کنیم)
با تشکر از همکاری صمیمانه شما دوستان عزیز در این سایت مفید :oops: :flower:

Mohammad S
یک شنبه 27 اردیبهشت 1383, 21:18 عصر
آقا کسی نبود جواب ما رو بده؟!!!!!!!!!! :( :cry: :cry: :cry: :roll:

Mohammad S
دوشنبه 28 اردیبهشت 1383, 02:33 صبح
آنقدر کسی جواب نداد که خودم جوابشو پیدا کردم
مرسی دوستان با وفا که به من جواب دادید :-x :قهر:
باز هم اشکال نداره من می بخشمتون اگه کسی جوابشو پیدا کرد بگه شاید بهتر از جواب خودم باشه
من عبارت SQL را دستکاری کردم تا به جواب مورد نظر رسیدم
مرسی از همه :wink:

شفیعی
دوشنبه 21 دی 1383, 05:09 صبح
سلام
در TREEVIEW چگونه می توان یک شاخه یا زیر شاخه وارد نمود اگر بخواهیم اطلاعت یک QUERY را در آن نشان دهیم از نظر سرعت نمایش اطلاعات دچار مشکل نمی شویم جستجو در TREEVIEW چگونه است خلاصه اطلاعات کاملی در مورد TREEVIEW نیاز دارم