إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
صفحة 1 من اصل 1 • شاطر
إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله
قد سمع الجميع عن هذه التقنية، وربما البعض قد استخدمها أيضاً، ولكن باعتقادي أنها غير مستخدمة بشكل كبير في عالم البرمجة العربية!
Linq تقنية استعلام عن البيانات بأشكال كثيرة، وليست محصورة في التعامل مع قواعد البيانات فقط. تجد فيها السهولة والقوة في آنٍ واحد، تخلو من التعقيدات، وتختصر الكود البرمجي، تصبح جداول وأعمدة قاعدة البيانات فئات وخصائص، يتم التعامل معها من كود لغة البرمجة المستخدمة....
لو نظرنا لهذا الكود، على افتراض أن (Person) فئة داخل المشروع:
لن أطيل الكلام، ودعنا نبدأ مشروع صغير (دليل هاتف)، سوف نضع فيه ما يلزم لمشروع كبير إن شاء الله، فكل مشاريع قواعد البيانات متشابهة، فقط حجم المشروع وعدد الشاشات هما الفرق.
سوف يحتوي مشروعنا على ما يلي:
على الله نتوكل وبه نستعين.
السلام عليكم ورحمة الله
قد سمع الجميع عن هذه التقنية، وربما البعض قد استخدمها أيضاً، ولكن باعتقادي أنها غير مستخدمة بشكل كبير في عالم البرمجة العربية!
Linq تقنية استعلام عن البيانات بأشكال كثيرة، وليست محصورة في التعامل مع قواعد البيانات فقط. تجد فيها السهولة والقوة في آنٍ واحد، تخلو من التعقيدات، وتختصر الكود البرمجي، تصبح جداول وأعمدة قاعدة البيانات فئات وخصائص، يتم التعامل معها من كود لغة البرمجة المستخدمة....
لو نظرنا لهذا الكود، على افتراض أن (Person) فئة داخل المشروع:
- الكود:
label1.Text = Person.Name;
textBox1.Text = Person.Age;
- الكود:
Person.Name = "Abd Allah";
Person.Age = 40;
لن أطيل الكلام، ودعنا نبدأ مشروع صغير (دليل هاتف)، سوف نضع فيه ما يلزم لمشروع كبير إن شاء الله، فكل مشاريع قواعد البيانات متشابهة، فقط حجم المشروع وعدد الشاشات هما الفرق.
سوف يحتوي مشروعنا على ما يلي:
- نموذج لتسجيل الدخول.
- نموذج لإضافة مستخدم.
- نموذج لحذف / إيقاف مستخدم.
- نموذج لتعديل اسم المستخدم وكلمة المرور.
- تبويب (أو لسان) لإدخال (اسم ورقم / أرقام هاتف في الدليل).
- تبويب لتعديل البيانات (اسم، رقم / أرقام الهاتف).
- تبويب لحذف البيانات (اسم، رقم / أرقام الهاتف).
- تبويب لاستعراض البيانات.
على الله نتوكل وبه نستعين.
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
لنلقي نظرة على قاعدة البيانات، سوف نحتاج للجداول التالية:
جدول المستخدمين سوف يحتوي على الأعمدة:
جدول الاسماء سوف يحتوي على الأعمدة:
جدول أرقام الهواتف سوف يحتوي على الأعمدة:
* في كل جدول سوف يكون هنالك حقل ID خواصه: مفتاح أساسي وترقيم تلقائي.
نبدأ مشروع جديد باسم (TelephoneBook)، أول ما سنقوم به هو عمل قاعدة البيانات، نتوجه للـ Menu Bar ونختار:
ثم نختار LINQ To SQL Classes، ليكن اسمه (PhoneBookDB).
* يمكننا فعل ذلك من Solution Explorer أيضاً، بتحديد المشروع ثم الضغط بالزر الأيمن من الفأرة واختيار:
التبويب الذي ظهر أمامنا بعد إضافة العنصر يبدو فارغاً ولا يحتوي سوى:
نختار Toolbox لتطالعنا نافذة الأدوات، ستبدو كما في هذه الصورة:
هذه الأدوات الخاصة بالفئة (محتوى البيانات)، نسحب منها أداة Class ونضعها على المصمم:
الآن لو ضغطنا مرتين بالفأرة على كلمة Class1 سيتم تمكيننا من تحرير الاسم:
نغير الاسم لـ Users ثم نضغط Enter من لوحة المفاتيح. نضغط بالزر الأيمن من الفأرة على الـ Users لنضيف خاصية جديدة من:
الآن نجد الخاصية الجديدة في حالة تحرير الاسم، نكتب ID، ثم من لوحة
المفاتيح نضغط Enter مرتين، ليتم اعتماد الاسم وإنشاء خاصية جديدة اسمها
Username:
بعد أن أضفنا خاصية الـ Username إما أن نضغط من لوحة المفاتيح Enter ليتم
إنشاء خاصية جديدة، وإما أن نضغط بالزر الأيمن للفأرة ونختار كما فعلنا أول
مرة، لنضيف خاصية اسمها Password وخاصيتين أخريين اسمهما Admin و Active:
بقي علينا أن نضبط الخصائص، نحدد ID ثم نضغط F4 لننتقل لنافذة Properties
أو بالضغط عليها بزر الفأرة الأيمن ثم اختيار Properties، لنجعل خصائص
الخاصية ID كما يلي:
(خاصية Source مهمة جداً، فهي لتحديد العمود المرتبط من قاعدة
البيانات بهذه الخاصية، إذا كان فارغاً سيكون هناك خطأ في إنشاء قاعدة
البيانات، ليتم تجاوز إنشاء هذه العامود، وإكمال الباقي)
خصائص الخاصية Username:
كود:
النوع لن نغير فيه شيء لأنه من نوع نص String وهو ما نريد، لكن
سيأخذ الحجم الافتراضي من طول النص في قاعدة البيانات وهو 4000 حرف، وهذا
حجم كبير، لذلك هناك خاصية اسمها Server Date Type تمكننا من تحديد النوع،
سنكتب فيها (nvarchar(20 لنحدد طول النص بـ 20 حرف كحد أقصى.
خصائص الخاصية Password:
خصائص الخاصية Admin:
خصائص الخاصية Active:
الآن وقد أتممنا هذه الفئة، سننشئ فئة جديدة اسمها Persons، فيها هذه الخصائص:
خصائص الخاصية ID نجعلها كما في الفئة السابقة (يمكننا نسخ الخاصية ID
من الفئة Users ولصقها في الفئة الجديدة لتحمل جميل الخصائص، دون عناء
التغيير)، خصائص الخاصية Name كما في الـ Username من الفئة السابقة أيضاً،
الخاصية Address فقط نزيد من قيمه عدد الحروف في خاصية Server Date Type
لتساوي (nvarchar(50، والخاصية Note نغير فيها خاصية الـ Source لتكون نفس
الاسم، كما فعلنا في السابق، وندع Server Date Type فارغة لتكون في أعلى
قيمة وهي 4000 حرف، ولا ننسى أنها من المحتمل أن تكون فارغة (أي لا يتم
اسناد أي قيم لها من المستخدم)، لذلك نضبط الخاصية Nullable لتساوي True.
الآن ننشئ فئة جديدة اسمها PhoneNumbers، فيها من الخصائص ما يلي:
ID وخصائصها كالسابق.
PersonID وخصائصها: (Type = Integer (System.Int32، ولا ننسى أن نضبط خاصية الـ Source. (هذه الخاصية للعلاقة ما بين الجدولين).
Phone وخصائصها: (Server Date Type = nvarchar(10، ولا ننسى أيضاً خاصية الـ Source.
الآن نحدد فئة الـ Users ونذهب لنافذة الخصائص لنضع قيمة الخاصية Source بنفس اسم الفئة، وكذلك باقي الفئات.
الفئة Users: الخاصية Source = Users
الفئة Persons: الخاصية Source = Persons
الفئة PhoneNumbers: الخاصية Source = PhoneNumbers
قد شارفنا على الانتهاء من العمل في قاعدة البيانات، بقي أن نربط جدول الأشخاص مع جدول الأرقم بعلاقة.
- جدول للمستخدمين.
- جدول للأسماء.
- جدول لأرقام الهواتف.
جدول المستخدمين سوف يحتوي على الأعمدة:
- عمود للاسم.
- عمود لكلمة المرور.
- عمود هل المستخدم مدير.
- عمود هل المستخدم مفعل.
جدول الاسماء سوف يحتوي على الأعمدة:
- الاسم.
- العنوان.
- ملاحظات.
جدول أرقام الهواتف سوف يحتوي على الأعمدة:
- رقم الشخص. (علاقة)
- رقم الهاتف.
* في كل جدول سوف يكون هنالك حقل ID خواصه: مفتاح أساسي وترقيم تلقائي.
نبدأ مشروع جديد باسم (TelephoneBook)، أول ما سنقوم به هو عمل قاعدة البيانات، نتوجه للـ Menu Bar ونختار:
- Project
- Add New Item
ثم نختار LINQ To SQL Classes، ليكن اسمه (PhoneBookDB).
* يمكننا فعل ذلك من Solution Explorer أيضاً، بتحديد المشروع ثم الضغط بالزر الأيمن من الفأرة واختيار:
- Add
- New Item
التبويب الذي ظهر أمامنا بعد إضافة العنصر يبدو فارغاً ولا يحتوي سوى:
نختار Toolbox لتطالعنا نافذة الأدوات، ستبدو كما في هذه الصورة:
هذه الأدوات الخاصة بالفئة (محتوى البيانات)، نسحب منها أداة Class ونضعها على المصمم:
الآن لو ضغطنا مرتين بالفأرة على كلمة Class1 سيتم تمكيننا من تحرير الاسم:
نغير الاسم لـ Users ثم نضغط Enter من لوحة المفاتيح. نضغط بالزر الأيمن من الفأرة على الـ Users لنضيف خاصية جديدة من:
- Add
- Property
الآن نجد الخاصية الجديدة في حالة تحرير الاسم، نكتب ID، ثم من لوحة
المفاتيح نضغط Enter مرتين، ليتم اعتماد الاسم وإنشاء خاصية جديدة اسمها
Username:
بعد أن أضفنا خاصية الـ Username إما أن نضغط من لوحة المفاتيح Enter ليتم
إنشاء خاصية جديدة، وإما أن نضغط بالزر الأيمن للفأرة ونختار كما فعلنا أول
مرة، لنضيف خاصية اسمها Password وخاصيتين أخريين اسمهما Admin و Active:
بقي علينا أن نضبط الخصائص، نحدد ID ثم نضغط F4 لننتقل لنافذة Properties
أو بالضغط عليها بزر الفأرة الأيمن ثم اختيار Properties، لنجعل خصائص
الخاصية ID كما يلي:
- الكود:
Auto Generated Value = True
Auto-Sync = OnInsert
Primary Key = True
Read Only = True
Source = ID
Type = Integer (System.Int32)
(خاصية Source مهمة جداً، فهي لتحديد العمود المرتبط من قاعدة
البيانات بهذه الخاصية، إذا كان فارغاً سيكون هناك خطأ في إنشاء قاعدة
البيانات، ليتم تجاوز إنشاء هذه العامود، وإكمال الباقي)
خصائص الخاصية Username:
كود:
- الكود:
Source = Username
النوع لن نغير فيه شيء لأنه من نوع نص String وهو ما نريد، لكن
سيأخذ الحجم الافتراضي من طول النص في قاعدة البيانات وهو 4000 حرف، وهذا
حجم كبير، لذلك هناك خاصية اسمها Server Date Type تمكننا من تحديد النوع،
سنكتب فيها (nvarchar(20 لنحدد طول النص بـ 20 حرف كحد أقصى.
خصائص الخاصية Password:
- الكود:
Source = Password
Server Date Type = nvarchar(20)
خصائص الخاصية Admin:
- الكود:
Source = Admin
Type = Boolean (System.Boolean)
خصائص الخاصية Active:
- الكود:
Source = Active
Type = Boolean (System.Boolean)
الآن وقد أتممنا هذه الفئة، سننشئ فئة جديدة اسمها Persons، فيها هذه الخصائص:
- ID
- Name
- Address
- Notes
خصائص الخاصية ID نجعلها كما في الفئة السابقة (يمكننا نسخ الخاصية ID
من الفئة Users ولصقها في الفئة الجديدة لتحمل جميل الخصائص، دون عناء
التغيير)، خصائص الخاصية Name كما في الـ Username من الفئة السابقة أيضاً،
الخاصية Address فقط نزيد من قيمه عدد الحروف في خاصية Server Date Type
لتساوي (nvarchar(50، والخاصية Note نغير فيها خاصية الـ Source لتكون نفس
الاسم، كما فعلنا في السابق، وندع Server Date Type فارغة لتكون في أعلى
قيمة وهي 4000 حرف، ولا ننسى أنها من المحتمل أن تكون فارغة (أي لا يتم
اسناد أي قيم لها من المستخدم)، لذلك نضبط الخاصية Nullable لتساوي True.
الآن ننشئ فئة جديدة اسمها PhoneNumbers، فيها من الخصائص ما يلي:
ID وخصائصها كالسابق.
PersonID وخصائصها: (Type = Integer (System.Int32، ولا ننسى أن نضبط خاصية الـ Source. (هذه الخاصية للعلاقة ما بين الجدولين).
Phone وخصائصها: (Server Date Type = nvarchar(10، ولا ننسى أيضاً خاصية الـ Source.
الآن نحدد فئة الـ Users ونذهب لنافذة الخصائص لنضع قيمة الخاصية Source بنفس اسم الفئة، وكذلك باقي الفئات.
الفئة Users: الخاصية Source = Users
الفئة Persons: الخاصية Source = Persons
الفئة PhoneNumbers: الخاصية Source = PhoneNumbers
قد شارفنا على الانتهاء من العمل في قاعدة البيانات، بقي أن نربط جدول الأشخاص مع جدول الأرقم بعلاقة.
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
بسم الله ما شاء الله عليك أخى الكريم ....جزاك الله خيرا و اتمنى أن تبقى معنا خصوصا أن قسم الدونت نت يعانى من قلة الدروس
تحياتى القلبية لك ....و جزاك الله خيرا
تحياتى القلبية لك ....و جزاك الله خيرا
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
بارك الله فيك اخي و انتظرنا فرصة من العلم فجئتنا بها وحي منزلا
khasd- ....
- تاريخ التسجيل : 23/05/2012
المساهمات : 57
النقاط : 102
التقيم : 1
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
أحمد مناع كتب:بسم الله ما شاء الله عليك أخى الكريم ....جزاك الله خيرا و اتمنى أن تبقى معنا خصوصا أن قسم الدونت نت يعانى من قلة الدروس
تحياتى القلبية لك ....و جزاك الله خيرا
وجزاك بالمثل إن شاء الله، سأبقى معكم بإذنه تعالى وأطرح مواضيع في شتى الأمور إن شاء الله....
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
وبارك فيك، كلنا متعلمين نأخذ عن بعض ونتساعد إن شاء الله....qui cherche trouve كتب:بارك الله فيك اخي و انتظرنا فرصة من العلم فجئتنا بها وحي منزلا
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
الله يبارك فيك يا أخى .....أصل إدارة المنتدى مقصر معانا فى الدوت نت
نجلاء فتحي- ....
- تاريخ التسجيل : 20/02/2011
المساهمات : 53
النقاط : 103
التقيم : 0
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
وبارك فيك إن شاء الله، الأدراة تبذل جهدها من أجل الرقي بالمنتدى، يدا بيد نحن الأعضاء لنتساعد من أجل ذلك.نجلاء فتحي كتب:الله يبارك فيك يا أخى .....أصل إدارة المنتدى مقصر معانا فى الدوت نت
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
لننشئ العلاقة بين فئة Persons وفئة PhoneNumbers، ولكن قبل ذلك لنعرف ما هي العلاقات.
في بعض الأحيان يكون لشخص ما أكثر من رقم هاتف، قد يملك الشخص ثلاث هواتف
أو أربعة أو عشرة، فليس هناك حصر، لهذا لا نستطيع أن نضيف خاصية رقم الهاتف
في الفئة Persons، لأنها ببساطه سوف تحمل رقم واحد فقط، فالحل يكون بإضافة
جدول جديد يتم تخزين الأرقام فيه، والسؤال الذي يطرح نفسه الآن هو: كيف
لنا أن نميز أن هذا الرقم هو لفلان وهذا الرقم لآخر؟! الإجابة هي بإنشاء
علاقة بين الجدولين الرئيسي وهو Persons والفرعي وهو PhoneNumbers، من خلال
ربط العمود ID الذي يتم توليده تلقائياً كلما أضفنا اسماً جديداً، بالعمود
PersonID والذي من نفس النوع Integer، بهذا نكون قد عرفنا أن رقم الهاتف
يعود لاسم المستخدم والذي رقمه هو مخزن في حقل PersonID.
لننشئ العلاقة بالتوجه لنافذة الأدوات وتحديد الأداة Association:
ثم النقر مرة على الفئة Persons والتوجه للفئة PhoneNumbers والنقر عليها أيضاً مرةً واحدةً، لنرى هذه النافذة:
نختار من العمود الأول في الجدول من هذه النافذة، عمود ID ومن العمود الثاني نختار عمود PersonID:
ثم موافق ليبدو الجدولين أو الفئتين كما يلي:
الآن نضغط بزر الفأرة الأيمن على مكان فارغ في المصمم ونختار Properties،
في خاصية Context Namespace نضع القيمة DB، وفي خاصية Entity Namespace نضع
القيمة DB أيضاً، وخاصية Name نجعلها PhoneBookDB، ثم خاصية Connection
نختار منها New لتطالعنا هذه النافذة:
نختار منها الأول وهو Microsoft SQL Server، ثم Continue لنرى:
نكتب في الـ Combobox التابع لـ Server name: .\sqlexpress، ثم نختبر
الإتصال بالضغط على زر Test Connection، فإن نجح نضغط OK، وإلا نراجع خدمة
الـ SQL Server.
الآن وقد انتهينا من قاعدة البيانات، نغلق التبويب الخاص بها ثم نذهب لـ
Solution Explorer، ونختار منها Form1 لنفتحه في تبويب التصميم، ننقر عليه
نقراً مزدوجاً لنذهب لتبويب الكود داخل حدث التحميل، نعرف متغير عام خارج
أي حدث:
:#C
:VB
سيكون شكل الكود للآن كمان يلي:
:#C
إلى الآن لم ننشئ قاعدة البيانات، لعمل ذلك نكتب في حدث التحميل:
:#C
:VB
أو الخروج من الإجراء. إن حصل خطأ وقد يكون ذلك بسبب أن خدمة SQL Server
متوقفة أو أننا لم نكمل خاصية الـ Source للفئات وخصائصها، فإن كانت
الأخرى، كما قلنا سيتم إنشاء قاعدة البيانات، ولكن بتجاوز الفئة أو الخاصية
التي لم يكتب قيمة لها في الـ Source، فإن أردنا حذف قاعدة البيانات نكتب:
:#C
:VB
نعمل تشغيل للبرنامج ليتم إنشاء قاعدة البيانات، ثم نعود لفتح فئة
محتوى البيانات من Solution Explorer والتي اسميناها PhoneBookDB.dbml،
لنربط قاعدة البيانات مع محتوى البيانات، في أي مكان فارغ من المصمم نختار
بعد الضغط بزر الفأرة الأيمن Properties، ثم من الخصائص نختار Connection
ثم New ثم Microsoft SQL Server ثم Continue وبعد ذلك نكتب في اسم السيرفر
.\sqlexpress، ثم نختار قاعدة البيانات من قائمة Select or enter a
database name والتي اسميناها PhoneBookDB:
نعود للنموذج بعد أن أتممنا بفضل الله إنشاء قاعدة البيانات وربطها مع الفئة، لنعمل مدير للبرنامج:
:#C
:VB
هذه جملة التحديد في تقنية Linq وصيغتها كما رأينا، بعد كملة From
نكتب اسم متغير يمثل الجدول الذي نكتب اسمه بعد ذلك وهو هنا Users، والشرط
إذا كان Admin يساوي True، نقوم بجلب جميع المستخدمين في حال كان المستخدم
مدير للبرنامج، فإن كان ينتهي الإجراء وإلا سنعمل مدير افتراضي للبرنامج،
لنختبر ذلك:
:#C
:VB
إذا كان مجموع القيم المحددة من الجدول تساوي 0، فهذا يعني أنه لا يوجد مدير، لعمل مدير للبرنامج نكتب بين فكي جملة الشرط السابقة:
:#C
:VB
في السطر الأول عرفنا متغير من الفئة Admin، ثم بعد ذلك اسندنا قيم
للخصائص المعرفة داخل الفئة، للآن لم يتم حفظ البيانات التي عملناها، لذلك
نكمل على الكود السابق:
:#C
:VB
في السطر الأول استخدمنا الإجراء InsertOnSubmit التابع للخاصية
Users وأرسلنا في الوسيطة المتغير الذي عرفناه فوق وهو admin ليتم إدخاله
بقاعدة البيانات بعد أن نرسل أمر حفظ التغييرات، وأرسلنا التغييرات لقاعدة
البيانات بالسطر:
db.SubmitChanges()
ليتم بذلك حفظ التغييرات. هكذا أنشأنا قاعدة البيانات كمان أنشأنا مدير للبرنامج.
في بعض الأحيان يكون لشخص ما أكثر من رقم هاتف، قد يملك الشخص ثلاث هواتف
أو أربعة أو عشرة، فليس هناك حصر، لهذا لا نستطيع أن نضيف خاصية رقم الهاتف
في الفئة Persons، لأنها ببساطه سوف تحمل رقم واحد فقط، فالحل يكون بإضافة
جدول جديد يتم تخزين الأرقام فيه، والسؤال الذي يطرح نفسه الآن هو: كيف
لنا أن نميز أن هذا الرقم هو لفلان وهذا الرقم لآخر؟! الإجابة هي بإنشاء
علاقة بين الجدولين الرئيسي وهو Persons والفرعي وهو PhoneNumbers، من خلال
ربط العمود ID الذي يتم توليده تلقائياً كلما أضفنا اسماً جديداً، بالعمود
PersonID والذي من نفس النوع Integer، بهذا نكون قد عرفنا أن رقم الهاتف
يعود لاسم المستخدم والذي رقمه هو مخزن في حقل PersonID.
لننشئ العلاقة بالتوجه لنافذة الأدوات وتحديد الأداة Association:
ثم النقر مرة على الفئة Persons والتوجه للفئة PhoneNumbers والنقر عليها أيضاً مرةً واحدةً، لنرى هذه النافذة:
نختار من العمود الأول في الجدول من هذه النافذة، عمود ID ومن العمود الثاني نختار عمود PersonID:
ثم موافق ليبدو الجدولين أو الفئتين كما يلي:
الآن نضغط بزر الفأرة الأيمن على مكان فارغ في المصمم ونختار Properties،
في خاصية Context Namespace نضع القيمة DB، وفي خاصية Entity Namespace نضع
القيمة DB أيضاً، وخاصية Name نجعلها PhoneBookDB، ثم خاصية Connection
نختار منها New لتطالعنا هذه النافذة:
نختار منها الأول وهو Microsoft SQL Server، ثم Continue لنرى:
نكتب في الـ Combobox التابع لـ Server name: .\sqlexpress، ثم نختبر
الإتصال بالضغط على زر Test Connection، فإن نجح نضغط OK، وإلا نراجع خدمة
الـ SQL Server.
الآن وقد انتهينا من قاعدة البيانات، نغلق التبويب الخاص بها ثم نذهب لـ
Solution Explorer، ونختار منها Form1 لنفتحه في تبويب التصميم، ننقر عليه
نقراً مزدوجاً لنذهب لتبويب الكود داخل حدث التحميل، نعرف متغير عام خارج
أي حدث:
:#C
- الكود:
private DB.PhoneBookDB db = new DB.PhoneBookDB();
:VB
- الكود:
Private db As New DB.PhoneBookDB()
سيكون شكل الكود للآن كمان يلي:
:#C
- الكود:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private DB.PhoneBookDB db = new DB.PhoneBookDB();
private void MainForm_Load(object sender, EventArgs e)
{
}
}
- الكود:
Public Class MainForm
Private db As New DB.PhoneBookDB()
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
إلى الآن لم ننشئ قاعدة البيانات، لعمل ذلك نكتب في حدث التحميل:
:#C
- الكود:
if(!db.DatabaseExists())
try
{
db.CreateDatabase();
}
catch (Exception ex) { MessageBox.Show(ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
:VB
- الكود:
If Not db.DatabaseExists() Then
Try
db.CreateDatabase()
Catch ex As Exception
MessageBox.Show(ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
End If
أو الخروج من الإجراء. إن حصل خطأ وقد يكون ذلك بسبب أن خدمة SQL Server
متوقفة أو أننا لم نكمل خاصية الـ Source للفئات وخصائصها، فإن كانت
الأخرى، كما قلنا سيتم إنشاء قاعدة البيانات، ولكن بتجاوز الفئة أو الخاصية
التي لم يكتب قيمة لها في الـ Source، فإن أردنا حذف قاعدة البيانات نكتب:
:#C
- الكود:
db.DeleteDatabase();
:VB
- الكود:
db.DeleteDatabase()
نعمل تشغيل للبرنامج ليتم إنشاء قاعدة البيانات، ثم نعود لفتح فئة
محتوى البيانات من Solution Explorer والتي اسميناها PhoneBookDB.dbml،
لنربط قاعدة البيانات مع محتوى البيانات، في أي مكان فارغ من المصمم نختار
بعد الضغط بزر الفأرة الأيمن Properties، ثم من الخصائص نختار Connection
ثم New ثم Microsoft SQL Server ثم Continue وبعد ذلك نكتب في اسم السيرفر
.\sqlexpress، ثم نختار قاعدة البيانات من قائمة Select or enter a
database name والتي اسميناها PhoneBookDB:
نعود للنموذج بعد أن أتممنا بفضل الله إنشاء قاعدة البيانات وربطها مع الفئة، لنعمل مدير للبرنامج:
:#C
- الكود:
var users = from d in db.Users
where d.Admin
select d;
:VB
- الكود:
Dim users = From d In db.Users
Where d.Admin
Select d
هذه جملة التحديد في تقنية Linq وصيغتها كما رأينا، بعد كملة From
نكتب اسم متغير يمثل الجدول الذي نكتب اسمه بعد ذلك وهو هنا Users، والشرط
إذا كان Admin يساوي True، نقوم بجلب جميع المستخدمين في حال كان المستخدم
مدير للبرنامج، فإن كان ينتهي الإجراء وإلا سنعمل مدير افتراضي للبرنامج،
لنختبر ذلك:
:#C
- الكود:
if (users.Count() == 0) { }
:VB
- الكود:
If users.Count() = 0 Then
End If
إذا كان مجموع القيم المحددة من الجدول تساوي 0، فهذا يعني أنه لا يوجد مدير، لعمل مدير للبرنامج نكتب بين فكي جملة الشرط السابقة:
:#C
- الكود:
DB.Users admin = new DB.Users();
admin.Username = "Admin";
admin.Password = "Admin";
admin.Admin = true;
admin.Active = true;
:VB
- الكود:
Dim admin As New DB.Users
admin.Username = "Admin"
admin.Password = "Admin"
admin.Admin = True
admin.Active = True
في السطر الأول عرفنا متغير من الفئة Admin، ثم بعد ذلك اسندنا قيم
للخصائص المعرفة داخل الفئة، للآن لم يتم حفظ البيانات التي عملناها، لذلك
نكمل على الكود السابق:
:#C
- الكود:
db.Users.InsertOnSubmit(admin);
db.SubmitChanges();
:VB
- الكود:
db.Users.InsertOnSubmit(admin)
db.SubmitChanges()
في السطر الأول استخدمنا الإجراء InsertOnSubmit التابع للخاصية
Users وأرسلنا في الوسيطة المتغير الذي عرفناه فوق وهو admin ليتم إدخاله
بقاعدة البيانات بعد أن نرسل أمر حفظ التغييرات، وأرسلنا التغييرات لقاعدة
البيانات بالسطر:
db.SubmitChanges()
ليتم بذلك حفظ التغييرات. هكذا أنشأنا قاعدة البيانات كمان أنشأنا مدير للبرنامج.
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
درس رائع بارك الله فيك
المبرمج الطموح- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 207
النقاط : 368
التقيم : 17
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
نحمده ونصلي على رسوله الكريم
هذا كتاب الكتروني به شرح كامل إن شاء الله
هذا كتاب الكتروني به شرح كامل إن شاء الله
null- .
- تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة :
الجنس :
رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
أشكرك يا سيد دريم إنك مازلت معنا .....جزاك الله خيراً
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الثلاثاء مارس 26, 2024 6:26 pm من طرف moslema_r
» شركة تنظيف استراحات بالرياض
الأحد مارس 24, 2024 10:49 pm من طرف moslema_r
» كشف تسربات المياه في جدة
السبت مارس 23, 2024 7:23 pm من طرف gmalnagy
» خدمات كشف تسربات المياه بخصم 25% - اتصل الان
السبت مارس 23, 2024 7:22 pm من طرف gmalnagy
» شركة تنظيف ثريات بالرياض
الخميس مارس 21, 2024 7:23 pm من طرف moslema_r
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد
» افضل فني كهربائي منازل بالرياض جودة 100% | اتصل الآن
الأحد مارس 17, 2024 12:36 pm من طرف رانيا حماد