تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] سورس كود لعملية تعبئة TreeView ببيانات من ثلاث جداول فاكثر
#1
السلام عليكم ورحمة الله وبركاته

اليوم وبنائاً على موضوع بقسم اسئلة VB.NET
احببت ان اقوم بانشاء هذا الموضوع الذى سيفيد الكثير بال الاغلب
عند انشاء مثل برنامج محاسبي وما غير ذلك

الحد الادنى لمتطلبات تشغيل السورس وقاعدة البيانات
Visual Basic .NET 2010 - Sql Server 2008 R2

قمت بانشاء والعمل على المشروع بهذه الاصدارات 
حتى يتاج على الجميع استخدامه بدون اى عناء فى الاصدارات

فى البداية اضع صور البرنامج لتوضيح صورة السرس كاملاً

ايقونة البرنامج..

صورة واجة البرنامج عند التشغيل..

صورة البرنامج عند جلب البيانات...

ناتى فى المرحلة الثانية وهى كود sql لقاعدة البيانات

اسم قاعدة البيانات ( TreeViews ) يمكنك التسمية كما تشاء..
عدد الجداول فى السورس الحالى 3 وهم

1- TBTree1 و الكود الخاص به
PHP كود :
USE [TreeViews]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE 
[dbo].[TBTree1](
    [
AccID] [intIDENTITY(1,1NOT NULL,
    [
AccName] [nvarchar](50NULL,
 
CONSTRAINT [PK_Table_1PRIMARY KEY CLUSTERED 
(
    [
AccIDASC
)WITH (PAD_INDEX  OFFSTATISTICS_NORECOMPUTE  OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS  ONALLOW_PAGE_LOCKS  ONON [PRIMARY]
ON [PRIMARY]

GO 

2- TBTree2 و الكود الخاص به
PHP كود :
USE [TreeViews]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE 
[dbo].[TBTree2](
    [
AccID] [intIDENTITY(1,1NOT NULL,
    [
AccName] [nvarchar](50NULL,
    [
AccSupID] [intNULL,
 
CONSTRAINT [PK_TBTree2PRIMARY KEY CLUSTERED 
(
    [
AccIDASC
)WITH (PAD_INDEX  OFFSTATISTICS_NORECOMPUTE  OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS  ONALLOW_PAGE_LOCKS  ONON [PRIMARY]
ON [PRIMARY]

GO 

3- TBTree3 و الكود الخاص به
PHP كود :
USE [TreeViews]
GO

/****** Object:  Table [dbo].[TBTree3]    Script Date: 08/10/2018 02:56:18 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE 
[dbo].[TBTree3](
    [
AccID] [intIDENTITY(1,1NOT NULL,
    [
AccName] [nvarchar](50NULL,
    [
AccSupID] [intNULL,
 
CONSTRAINT [PK_TBTree3PRIMARY KEY CLUSTERED 
(
    [
AccIDASC
)WITH (PAD_INDEX  OFFSTATISTICS_NORECOMPUTE  OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS  ONALLOW_PAGE_LOCKS  ONON [PRIMARY]
ON [PRIMARY]

GO 

وطبعاً مرفق بالموضوع قاعدة البيانات كاملاً ولكن تم وضع الاكواد بالاعلى
تجنباً لشتي الظروف التى قد تحدث مع كل مستخدم

ناتى الى شرح جزء من الكود فى السورس لمعرفة كيفية التعامل معه
وكيفية اضافة عدد جداول اخرى  لزيادة افرع الشجرة..

الكود التالي هو كود الاستعلام:
كود :
("select convert(varchar(2),'0')as TreeID, '0' as AccID,N'" & MasterName & "' as AccName, '0' as AccSupID, '0' as TreeSupID " _
             & ControlChars.Lf & "union all select '10'+convert(nvarchar(2),AccID)as TreeID, AccID,AccName, 0 as AccSupID,'0' as TreeSupID from TBTree1" _
             & ControlChars.Lf & "union all select '20'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'10'+convert(varchar(2),AccSupID) as TreeSupID from TBTree2" _
             & ControlChars.Lf & "union all select '30'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'20'+convert(varchar(2),AccSupID) as TreeSupID from TBTree3"

بكل بساطة لنقول نحتاج عمل جدول رقم 4 فاكثر ...

ناتى على السطر الاخير من كود الاستعلام وهو السطر التالى..
كود :
& ControlChars.Lf & "union all select '30'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'20'+convert(varchar(2),AccSupID) as TreeSupID from TBTree3"

لنقوم بتغييره ليصبح السطر بعد الاضافة بهذا الشكل
كود :
& ControlChars.Lf & "union all select '30'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'20'+convert(varchar(2),AccSupID) as TreeSupID from TBTree3" _
             & ControlChars.Lf & "union all select '40'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'30'+convert(varchar(2),AccSupID) as TreeSupID from TBTree4"

اذا قمت بالتدقيق ستجد ان السطر مكرر مع تعديل اسم الجدول والارقام فقط
وبكده نكون تم انشاء الجدول رقم 4 فى الاستعلام بعد اتمام اضافة الجدول بقاعدة البيانات
طيب لو قلنا اننا محتاجين يكون 5 جداول وليس 4
لاحظ الكود التالى
كود :
& ControlChars.Lf & "union all select '30'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'20'+convert(varchar(2),AccSupID) as TreeSupID from TBTree3" _
             & ControlChars.Lf & "union all select '40'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'30'+convert(varchar(2),AccSupID) as TreeSupID from TBTree4" _
             & ControlChars.Lf & "union all select '50'+convert(varchar(2),AccID)as TreeID, AccID,AccName,AccSupID,'40'+convert(varchar(2),AccSupID) as TreeSupID from TBTree5")

الامر بات لك سهلاً وبسيط الى اكثر ما يكون...
طيب البعض سيسال كيف انشاء الجدول بقاعدة البيانات حيث ليس لدي خلفية فى تكوين الجدول 

كل ما هو عليك استخدام الكود التالى لانشاء الجدول رقم 4
PHP كود :
USE [TreeViews]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE 
[dbo].[TBTree4](
    [
AccID] [intIDENTITY(1,1NOT NULL,
    [
AccName] [nvarchar](50NULL,
    [
AccSupID] [intNULL,
 
CONSTRAINT [PK_TBTree4PRIMARY KEY CLUSTERED 
(
    [
AccIDASC
)WITH (PAD_INDEX  OFFSTATISTICS_NORECOMPUTE  OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS  ONALLOW_PAGE_LOCKS  ONON [PRIMARY]
ON [PRIMARY]

GO 

ولانشاء الجدول رقم 5 قم باستخاد الكود التالى
كود :
USE [TreeViews]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[TBTree5](
    [AccID] [int] IDENTITY(1,1) NOT NULL,
    [AccName] [nvarchar](50) NULL,
    [AccSupID] [int] NULL,
CONSTRAINT [PK_TBTree5] PRIMARY KEY CLUSTERED
(
    [AccID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

تماماً كما انت فكرت كده ان الكود واحد وكل ما يتم التعديل فيه هو تغيير الرقم بعد كل من كلمة
TBTree و PK_TBTree )

ويمكنك تكرار الامر لعدد الجداول المطلوبة

ناتى الان للخطوة التالية وهو كود ربط الجداول بفرع الشجرة

فى البداية الكود المستخدم لتوزيع الـ 3 جداول بالشجرة هو الكود التالى
كود :
       TreeView1.Nodes.Clear()

       For ii As Integer = 0 To dt.Rows.Count - 1
           REM المرحلة الاولى من الشجرة
           If dt.Rows(ii)(0) = "0" Then
               TreeView1.Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
           ElseIf dt.Rows(ii)("AccSupID") = 0 And dt.Rows(ii)("TreeSupID") = 0 Then
               TreeView1.Nodes(dt.Rows(ii)("TreeSupID")).Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
           End If

           REM المرحلة الثانية من الشجرة
           For iT As Integer = 0 To T1 - 1
               If dt.Rows(ii)("AccSupID") = iT + 1 And dt.Rows(ii)("TreeSupID") = "10" & (iT + 1) Then
                   TreeView1.Nodes(0).Nodes(iT).Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
               End If
           Next

           REM المرحلة الثالثة من الشجرة
           For iTt As Integer = 0 To T2 - 1
               If dt.Rows(ii)("AccSupID") = iTt + 1 And dt.Rows(ii)("TreeSupID") = "20" & (iTt + 1) Then
                   Dim LastNode() As TreeNode = TreeView1.Nodes.Find(dt.Rows(ii)("TreeSupID"), True)
                   LastNode(0).Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
               End If
           Next
       Next
       TreeView1.ExpandAll()

المراحل المقصود بها هنا الجداول...
طيب بعد اضافة الجدول رقم 4 و 5 وتم عمل الكود اللازم فى الاستعلام
ماذا يمكننى ان افعل الان حتى يعرض فى قائمة افرع الشجرة

لاحظ الكود التالى
كود :
REM المرحلة الثالثة من الشجرة
           For iTt As Integer = 0 To T2 - 1
               If dt.Rows(ii)("AccSupID") = iTt + 1 And dt.Rows(ii)("TreeSupID") = "20" & (iTt + 1) Then
                   Dim LastNode() As TreeNode = TreeView1.Nodes.Find(dt.Rows(ii)("TreeSupID"), True)
                   LastNode(0).Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
               End If
           Next

كل ما هو عليك فعله نسخه وتكراره اسفل منه ليصبح الشكل النهائي له التالى
كود :
           REM المرحلة الرابعة من الشجرة
           For iTt As Integer = 0 To T2 - 1
               If dt.Rows(ii)("AccSupID") = iTt + 1 And dt.Rows(ii)("TreeSupID") = "30" & (iTt + 1) Then
                   Dim LastNode() As TreeNode = TreeView1.Nodes.Find(dt.Rows(ii)("TreeSupID"), True)
                   LastNode(0).Nodes.Add(dt.Rows(ii)("TreeID"), dt.Rows(ii)("AccName"))
               End If
           Next

ايه ده دا كل اللى حصل ان تم تغيير رقم 20 الى 30 فقط
تماماً كما انت ذكرت هو ده التغيير فقط ليس اكثر

ولذلك ساترك لك ان تقوم بانشاء كود المرحلة الخامسة حتى تكون الصورة مبسطة لك تماماً

الان ناتى الى النقطة المهمة وهو البيانات التى يتم ادخالها داخل قاعدة البيانات
اليك الصور التالية موضح كل ذلك

الصورة الاولى هو للجدول الاول الجدول بسيط ولا يحتاج الى اى شروط
حيث ان الجدول عبارة عن عمود ترقيم تلقائي والاخر نص ولكن تذكر الارقام بجانب كل نص


الصورة الثانية وهى للجدول رقم 2 حيث ان الاعمدة عبارة عن
ترقيم تلقائي و نص و رقم
تتذكر عندما قلت تذكر الارقام بجانب كل نص
فالرقم فى الجدول الاول هو ما يتم وضعه فى العمود الخاص بالارقام والذى مشار اليه بالاحمر



الصورة الثالثة وهو خاص بالجدول رقم 3 لا يختلف تماماً على الصورة خاصة الجدول 2
لكن كل الامر ان الارقام هنا فى هذا الجدول يتم جلبه من الجدول رقم 2



الان ناتى الى المرحلة الاخيرة وهو تحميل جميع الملفات
ستجد بالمرفقات ملفات لكل من 
( قاعدة البيانات - السورس كود - البرنامج للمعينة - الصورة بالموضوع )

كل ما اريده هو دعاء فى الغيب بقلب صافي

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

ملحوظة:
إقتباس :ستجد بجوار البرنامج مجلد تحت اسم conn_ بداخله ملف text
وهو يحتوى على كود الاتصال بقاعدة البياناتكل ما عليك تعديل البيانات من خلاله

تحياتى للجميع
وتمنياتى لكم التوفيق الدائم


الملفات المرفقة
.zip   IMG.zip (الحجم : 21.63 ك ب / التحميلات : 537)
.zip   DataBase.zip (الحجم : 1.15 م ب / التحميلات : 942)
.zip   Pro TreeViews.zip (الحجم : 75.8 ك ب / التحميلات : 753)
.zip   TreeViews.zip (الحجم : 100.2 ك ب / التحميلات : 803)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}


الردود في هذا الموضوع
سورس كود لعملية تعبئة TreeView ببيانات من ثلاث جداول فاكثر - بواسطة elgokr - 10-08-18, 04:31 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Brick [VB.NET] سورس كود لمشروع Notification Box.. صندوق الاشعارات musalem 3 1,490 20-05-24, 11:18 PM
آخر رد: salam82
  ربط listview ب treeview سلام و محبه2090 0 345 09-03-24, 10:28 PM
آخر رد: سلام و محبه2090
Brick [VB.NET] سورس كود LCD CLOCKZ هو مشروع لساعة ديجيتال بشكل مميز وجذاب musalem 0 958 04-07-23, 02:08 AM
آخر رد: musalem
Information [VB.NET] سورس كود لمشروع ادارة كوفي شوف صغير.. under development musalem 0 1,133 04-07-23, 01:56 AM
آخر رد: musalem
  [VB.NET] سورس كود برنامج تشغل القران الكريم عبر الانترنت [ تم تحديث الموضوع ] elgokr 11 10,042 27-03-23, 10:35 AM
آخر رد: Hend m
  سورس كود برنامج IT للعهدة والمستخدمين والاجهزة محمدالزند 10 7,049 28-11-22, 02:41 PM
آخر رد: ali_ahmed12
  [مثال] كيفية تعبئة كمبوبوكس بدلالة تغير عنصر في كومبو آخر asmarsou 0 1,320 08-08-22, 10:54 PM
آخر رد: asmarsou
Photo [VB.NET] تبادل سورس كود كريم الفقى 4 2,381 23-04-22, 12:44 AM
آخر رد: كريم الفقى
Wink [مشروع] الة حاسبة بسيطة سورس كود مع الشرح بالفيديو للكود ahmadpal 5 7,505 23-02-22, 06:02 PM
آخر رد: عبدالرحمن.1
Lightbulb سورس كود برنامج صانع الاكواد asemshahen5 60 52,896 16-02-22, 06:54 PM
آخر رد: ibrahematia

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم