إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الأربعاء مايو 08, 2013 12:50 pm

نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله

قد سمع الجميع عن هذه التقنية، وربما البعض قد استخدمها أيضاً، ولكن باعتقادي أنها غير مستخدمة بشكل كبير في عالم البرمجة العربية!
Linq تقنية استعلام عن البيانات بأشكال كثيرة، وليست محصورة في التعامل مع قواعد البيانات فقط. تجد فيها السهولة والقوة في آنٍ واحد، تخلو من التعقيدات، وتختصر الكود البرمجي، تصبح جداول وأعمدة قاعدة البيانات فئات وخصائص، يتم التعامل معها من كود لغة البرمجة المستخدمة....

لو نظرنا لهذا الكود، على افتراض أن (Person) فئة داخل المشروع:



الرمز:
label1.Text = Person.Name;
textBox1.Text = Person.Age;
أو هذا الكود:


الرمز:
Person.Name = "Abd Allah";
Person.Age = 40;
* أترك لك كتابة كود sql لجلب البيانات من الجدول واستعراضها في الأدوات، أو تغيير قيمها، لتقارن ذلك بنفسك.

لن أطيل الكلام، ودعنا نبدأ مشروع صغير (دليل هاتف)، سوف نضع فيه ما يلزم لمشروع كبير إن شاء الله، فكل مشاريع قواعد البيانات متشابهة، فقط حجم المشروع وعدد الشاشات هما الفرق.

سوف يحتوي مشروعنا على ما يلي:


  1. نموذج لتسجيل الدخول.
  2. نموذج لإضافة مستخدم.
  3. نموذج لحذف / إيقاف مستخدم.
  4. نموذج لتعديل اسم المستخدم وكلمة المرور.
  5. تبويب (أو لسان) لإدخال (اسم ورقم / أرقام هاتف في الدليل).
  6. تبويب لتعديل البيانات (اسم، رقم / أرقام الهاتف).
  7. تبويب لحذف البيانات (اسم، رقم / أرقام الهاتف).
  8. تبويب لاستعراض البيانات.


على الله نتوكل وبه نستعين.

null
.
.

تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة : لبنان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الأربعاء مايو 08, 2013 1:20 pm

لنلقي نظرة على قاعدة البيانات، سوف نحتاج للجداول التالية:

  • جدول للمستخدمين.
  • جدول للأسماء.
  • جدول لأرقام الهواتف.

جدول المستخدمين سوف يحتوي على الأعمدة:


  • عمود للاسم.
  • عمود لكلمة المرور.
  • عمود هل المستخدم مدير.
  • عمود هل المستخدم مفعل.

جدول الاسماء سوف يحتوي على الأعمدة:


  • الاسم.
  • العنوان.
  • ملاحظات.

جدول أرقام الهواتف سوف يحتوي على الأعمدة:


  • رقم الشخص. (علاقة)
  • رقم الهاتف.

* في كل جدول سوف يكون هنالك حقل 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، فيها هذه الخصائص:


  1. ID
  2. Name
  3. Address
  4. 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

مُساهمة من طرف أحمد مناع في الأربعاء مايو 08, 2013 2:59 pm

بسم الله ما شاء الله عليك أخى الكريم ....جزاك الله خيرا و اتمنى أن تبقى معنا خصوصا أن قسم الدونت نت يعانى من قلة الدروس


تحياتى القلبية لك ....و جزاك الله خيرا

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف khasd في الأربعاء مايو 08, 2013 4:05 pm

بارك الله فيك اخي و انتظرنا فرصة من العلم فجئتنا بها وحي منزلا

khasd
....
....

تاريخ التسجيل : 23/05/2012
المساهمات : 57
النقاط : 102
التقيم : 1
الدولة : المغرب
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الأربعاء مايو 08, 2013 5:48 pm

أحمد مناع كتب:بسم الله ما شاء الله عليك أخى الكريم ....جزاك الله خيرا و اتمنى أن تبقى معنا خصوصا أن قسم الدونت نت يعانى من قلة الدروس


تحياتى القلبية لك ....و جزاك الله خيرا

وجزاك بالمثل إن شاء الله، سأبقى معكم بإذنه تعالى وأطرح مواضيع في شتى الأمور إن شاء الله....

null
.
.

تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة : لبنان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الأربعاء مايو 08, 2013 5:51 pm

qui cherche trouve كتب:بارك الله فيك اخي و انتظرنا فرصة من العلم فجئتنا بها وحي منزلا
وبارك فيك، كلنا متعلمين نأخذ عن بعض ونتساعد إن شاء الله....

null
.
.

تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة : لبنان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف نجلاء فتحي في الأربعاء مايو 08, 2013 5:56 pm

الله يبارك فيك يا أخى .....أصل إدارة المنتدى مقصر معانا فى الدوت نت

نجلاء فتحي
...
...

تاريخ التسجيل : 20/02/2011
المساهمات : 48
النقاط : 94
التقيم : 0
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الأربعاء مايو 08, 2013 6:26 pm

نجلاء فتحي كتب:الله يبارك فيك يا أخى .....أصل إدارة المنتدى مقصر معانا فى الدوت نت
وبارك فيك إن شاء الله، الأدراة تبذل جهدها من أجل الرقي بالمنتدى، يدا بيد نحن الأعضاء لنتساعد من أجل ذلك.

null
.
.

تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة : لبنان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الخميس مايو 09, 2013 2:58 pm

لننشئ العلاقة بين فئة 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




الرمز:
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)
        {

        }
    }


:VB




الرمز:
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

مُساهمة من طرف المبرمج الطموح في الإثنين مايو 27, 2013 6:51 am

درس رائع بارك الله فيك

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف null في الإثنين يونيو 03, 2013 4:25 pm

نحمده ونصلي على رسوله الكريم

هذا كتاب الكتروني به شرح كامل إن شاء الله

null
.
.

تاريخ التسجيل : 06/05/2013
المساهمات : 8
النقاط : 10
التقيم : 0
الدولة : لبنان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء مشروع باستخدام sql server و linq وتقارير crystal report

مُساهمة من طرف أحمد مناع في الثلاثاء يونيو 04, 2013 4:19 am

أشكرك يا سيد دريم إنك مازلت معنا .....جزاك الله خيراً

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى