ساختار درختی با اتصال به دیتا بیس

سلام دوستان :paint:
1-آیا می شه مثل برنامه زیر , با mmb برنامه ای ایجاد کرد که با کلیک بر روی یکی از گره های ساختار درختی, متنی از دیتا بیس فراخوانی بشه و در قسمت خاصی نمایش داده بشه
2- آیا امکان جستجو هم می شه به دیتا بیس اضافه کرد؟:rose:
 

پیوست ها

  • gerdoo.jpg
    gerdoo.jpg
    175.3 کیلوبایت · بازدیدها: 66
بله
مشاهده کردم
مهم ایجاد ارتباط با دیتا بیس هست
با کمترین کد نویسی
که چه جوری باید انجام بدم
 
قصد دارم که لیست درختی مثل شکل زیر تهیه کنم. در واقع بعد از کلیک روی شاخه های هر درخت , متنی از دیتابیس لود بشه و در صفحه کنارش نشون داده شود
و نوشته به چند بخش تقسیم بشه و کاربر بتونه صفحات رو عوض کنه

وقت کمی دارم و از مثال های TreeObjectPlugIn چیزی نفهمیدم
نمی تونم SQLite رو هم به این زودی یاد بگیرم
اطلاعات دیتا بیس توی فایل اکسس هست
در واقع این نرم افزار قبلا با سی شارپ نوشته شده اما به دلایلی مشکل داره و نمی شه به خوبی اجراش کرد
حالا هم وقت کمی دارم و مثل کسی که شب امتحان می خواد یک کتاب 1000 صفحه ای رو بخونه سردرگم هستم
کسی هست بتونه به من کمک کنه
 

پیوست ها

  • kr.png
    kr.png
    295.8 کیلوبایت · بازدیدها: 47

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
برای انجام اینکار ابتدا باید چند چیز رو مشخص کنید.
عناصر شی درختی (گره های وال و فرزند) ثابت هستن یا قراره بصورت پویا از دیتابیس لود بشن ؟

برای ساخت گره ها در این شئ، دو راه وجود داره، یکی اینکه برای هر آیتم، کدش رو جداگونه بنویسید و بهش یک ID اختصاص بدید
روش دیگه روشی هست که از یک حلقه برای ساخت آیتم ها استفاده میشه، بنا به دلایلی، روش ساخت آیتم ها در این دو روش کمی متفاوت هست که در مبحث مربوط به پلاگین توضیح داده شده و در مثال همراه پلاگین هم هردو روش نشون داده شده.

اما برای ارتباط با پایگاه داده باید کلید ارتباطی این دو مشخص بشه، برای راحتی کار، میتونید یک فیلد از دیتابیس رو اختصاص بدید به نام آیتم ها یا درواقع همون سرفصل ها، که مقدار این فیبد در هر رکورد، برابر باشه با همون مقدار (نام) ی که در شئ درختی نمایش داده میشه (مثلاً: امام جمعه - محبوبیت و مقبولیت و ....)، حالا براحتی میتونید بین این دو ارتباط برقرار کنید؛
کافیه ابتدا نام گره ی که در شئ درختی انتخاب شده رو بدست بیارید (رجوع شود به مثال همرا پلاگین TreeObject)، و بعد با استفاده از این مشخصه، یک جستجو در دیتابیس انجام بدید و نتیجه رو نمایش بدید.

روند ارتباط این دو بدین شکل هست، اما برای اینکار نیاز هست که کمی هردو پلاگین رو بررسی کنید تا توضیحات ارائه شده براتون قابل استفاده باشه.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اگر قرار هست که اطلاعات عناصر شئ درختی از دیتابیس فراخوانی بشن، نیاز دارید که از حلقه های تو در تو برای دریافت اطلاعات استفاده کنید.
فرض کنید که در دیتابیستون یک جدول دارید بنام Data، در این جدول چند فیلد نیاز هست که داشته باشید،
یک فیلد که عناوین در اون قرار میگیرن (مثلاً Topic)،
یک فیلد که توضیحات مربوط به اون موضوع در اون ذخیره میشه (مثلاً Info)،
چون قرار هست که عناصر درخت از دیتابیس لود بشن، ما دوتا فیلد دیگه هم اضافه میکنیم،
یکی ID که شناسه ی هر تاپیک هست و بهتره از نوع INTEGER PRIMARY KEY باشه (خاصیت Auto-Increment داشته باشه) تا با اضافه شدن هر رکورد، یکی بهش اضافه بشه (و برای هر رکورد منحصربفرد باشه)، از این ID برای شناسایی هر آیتم استفاده میشه.
حالا چون ممکنه هر کدوم از این عناوین زیر مجموعه ای هم داشته باشن، یک فیلد دیگه هم اضافه میکنیم (مثلاً Parent) که ID عنصر والد در اون ذخیره میشه،
مثلاً اگه یک آیتم داشته باشیم بنام "امام جماعت" و ID اون برابر 2 باشه، تمام عناصر زیر مجموعه ی اون، مقدار فیلد Parentشون برابر 2 خواهد بود
به این ترتیب میشه وابستگی عناصر به هم رو تعیین کرد.
 
واقعیتش اینه که اینجوری متوجه نمی شم
من اگر یک نمونه از این نوع رو ببینم بهتر متوجه می شم
در واقع , بین مثال های درختی, مشابه این مورد ندیده بودم
شما حاضر هستید یکی از این ساختار های درختی رو برای من ایجاد کنید
بقیه رو دیگه خودم یاد می گیرم و درست می کنم
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
واقعیتش اینه که اینجوری متوجه نمی شم
من اگر یک نمونه از این نوع رو ببینم بهتر متوجه می شم
در واقع , بین مثال های درختی, مشابه این مورد ندیده بودم
شما حاضر هستید یکی از این ساختار های درختی رو برای من ایجاد کنید
بقیه رو دیگه خودم یاد می گیرم و درست می کنم
این ساختار رو بنده قبلاً استفاده کرده بودم در یکی از پروژه هام، میتونم مثالش رو براتون بسازم، اما ممکنه این موضوع به دو یا سه روز دیگه موکول بشه، چون این هفته کمی برنامه م فشرده هست.
سعی میکنم طی دو سه روز آینده مثالشو براتون آماده کنم، البته ممکنه در این بازه زمانی سایر دوستان هم کمکتون کنن.

موفق و پیروز باشید.
 
خوب من این مورد رو برای پنج شنبه نیاز دارم
و خیلی حیاتی هست!
اگر این مورد کامل بشه تقریبا کار من هم کامل شده
باز هم تشکر از این همه محبت
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
این مثال، نام گره ها رو از دیتابیس میخونه و با رعایت والد و فرزندی اونها، در شئ درختی نمایششون میده.
با انتخاب هر گره، توضیحات مرتبط با اون در یک شئ پاراگراف نمایش داده میشه.

فیلد Parent در فایل دیتابیس، نشان دهنده ی عنصر والد هر آیتم هست، 0 یعنی هیچ والدی نداره (خودش گره اصلی هست)، و بجز صفر، اعداد دیگه نشان دهنده ی ID عنصر والد هست.

فقط یک نکته؛ پلاگین TreeObject برای تعیین میزان تورفتگی و درواقع ساخت گره ها بصورت والد و فرزند، از یک شناسه استفاده میکنه که میزان تورفتگی رو تعیین میکنه، و این پارامتر هست که تعیین میکنه هر آیتم در چه موقعیتی باشه.
تو این مثال، زیر مجموعه ها فقط برای عناصر اصلی میتونه وجود داشته باشه، (میزان فرورفتگی 1)، یعنی توی کدنویسی خودتون مشخص میکنید (ومیدونید) که حداکثر چقدر فرورفتگی وجود داره، یعنی کاملاً داینامیک نیست !
من وقت نکردم رو داینامیک کردن این قسمت کار کنم، این مثال رو چون نیاز داشتید براتون آماده کردم، اگر که میزان فرورفتگی بیشتر از 1 نباشه که تغییری در روند نیاز نیست داده بشه.
 

پیوست ها

  • TreeObject.rar
    193.6 کیلوبایت · بازدیدها: 115

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
دیتابیس داخل خود فایل Embedd شده هست، با کد زیر میتونید استخراجش کنید:
کد:
[COLOR=#000090][B]SaveFile[/B][/COLOR]("All Files|*.*||","Database.db") 
[COLOR=#0000FF]If[/COLOR] (OpenFile$ = [COLOR=#800000]''[/COLOR]) [COLOR=#0000FF]Then[/COLOR] 
  [COLOR=#000090][B]Return[/B][/COLOR]() 
[COLOR=#0000FF]End[/COLOR] 
InputFile$ = [COLOR=#800000]'<Embedded>\Database.DB'[/COLOR] 
[COLOR=#000090][B]SysCommand[/B][/COLOR]("CopyFile","InputFile$,OpenFile$")
برای مشاهده و ویرایش دیتابیس هم میتونید از SQLite Database Browser استفاده کنید
[nolink]http://media.majidonline.com/forum/Nevercom/MMBForum/sqlitebrowser-1.3-win.zip[/nolink]

فقط باید به 2 نکته توجه داشته باشید:

  • اطلاعاتتون رو در صورتی که فارسی هست،فقط و فقط توسط MMB وارد دیتابیس کنید، و نه توسط این ابزار
  • هیچ فیلدی در دیتابیس رو خالی نگذارید، حتی اگر مقداری نداره با یک کاراکتر Space پرش کنید.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
من دقیقاً به همین خاطر که فکر کردم همچین مشکلی ممکنه پیش بیاد، دو نکته به توضیحات قبلیم اضافه کرده بودم:
فقط باید به 2 نکته توجه داشته باشید:

  • اطلاعاتتون رو در صورتی که فارسی هست،فقط و فقط توسط mmb وارد دیتابیس کنید، و نه توسط این ابزار
  • هیچ فیلدی در دیتابیس رو خالی نگذارید، حتی اگر مقداری نداره با یک کاراکتر space پرش کنید.
برای فارسی نوشتن در دیتابیس، باید توسط MMB و پلاگین SQLite اطلاعات رو وارد دیتابیس کنید، در غیر اینصورت اطلاعات به شکل کلمات درهم ریخته برای شما میاد.
پس شما باید یک برنامه با MMB بنویسید که اطلاعاتتون رو وارد دیتابیس کنه.
بعنوان راهنمایی میتونید از فایل پیوستی در این پست کمک بگیرید.
 

جدیدترین ارسال ها

بالا