10-08-18, 04:31 AM
السلام عليكم ورحمة الله وبركاته
اليوم وبنائاً على موضوع بقسم اسئلة 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] [int] IDENTITY(1,1) NOT NULL,
[AccName] [nvarchar](50) NULL,
CONSTRAINT [PK_Table_1] 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
2- TBTree2 و الكود الخاص به
PHP كود :
USE [TreeViews]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBTree2](
[AccID] [int] IDENTITY(1,1) NOT NULL,
[AccName] [nvarchar](50) NULL,
[AccSupID] [int] NULL,
CONSTRAINT [PK_TBTree2] 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
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] [int] IDENTITY(1,1) NOT NULL,
[AccName] [nvarchar](50) NULL,
[AccSupID] [int] NULL,
CONSTRAINT [PK_TBTree3] 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
وطبعاً مرفق بالموضوع قاعدة البيانات كاملاً ولكن تم وضع الاكواد بالاعلى
تجنباً لشتي الظروف التى قد تحدث مع كل مستخدم
ناتى الى شرح جزء من الكود فى السورس لمعرفة كيفية التعامل معه
وكيفية اضافة عدد جداول اخرى لزيادة افرع الشجرة..
الكود التالي هو كود الاستعلام:
كود :
("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] [int] IDENTITY(1,1) NOT NULL,
[AccName] [nvarchar](50) NULL,
[AccSupID] [int] NULL,
CONSTRAINT [PK_TBTree4] 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
ولانشاء الجدول رقم 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
وهو يحتوى على كود الاتصال بقاعدة البياناتكل ما عليك تعديل البيانات من خلاله
تحياتى للجميع
وتمنياتى لكم التوفيق الدائم
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية