ثالثا :
طريقة إضافة الإستعلام باستخدام FillBy
لكى نتعامل مع هذاالمشروع يجب علينا أن نفهم الغرض منة وكيف تسير الأمور......
-يحتوى الجدول الأول Customers على بيانات العميل و كل عميل لة ID أى CustomerID بالإضافة لباقى البيانات الخاصة بكل عميل
-الجدول الثانى Orders ويتضمن بيانات خاصة بالطلبية مثل OrderID ولا بد أن تكون الطلبية هذة موجهة إلى أحد العملاء لذلك فإن الجدول
هذا يحتوى أيضا على تعريف العميل CustomerID بالإضافة إلى باقى البيانات مثل التاريخ...الخ
-الجدول الثالث Order Details يحتوى على محتويات الطلبية وهى OrderID وPrudectID الذى هو رقم تعريف المنتج وكذلك الكمية Quntity وسعر الوحدة UnitPrice وكذلك الخصم Discount إذن من خلال ما سبق تكون طريقة ربط هذاة الجداول فى منتهى السهولة حيث أن ربط الحقل Customer ID الموجود فى الجدول Customers بالحقل CustomerID الموجود بالجدول Orders ثم ربط الحقل OrderID الموجود بالجدول Orders بالحقل OrderID الموجود بالجدول Order Details هو الطريقة المثالية للربط يمكن لمن يريد تجربة ذلك أن يقوم بإنشاء قاعدة بيانات جديدة اعتمادا على هذة المعلومات أو الاستمرار باستخدام قاعدة بيانات Nowrthwind وهذا مخطط بسيط يوضح عملية الربط بالنسبة لقاعدة البيانات التى نحن بصددها

سنقوم بإضافة استعلام فى Customers ولعمل ذلك
كليك يمين على CustomersTableAdapte ثم Add Query

يظهر لك الان ديالوج Search Criteria Builder ومعناة منشىء معايير البحث ويوجد بة استعلام افتراضى فى مربع Query Text سنقوم بإضافة هذة العبارة فى نهاية السطر
كود
WHERE CustomerID = @CustomerID
ثم OK
يظهر لك الان FillByCustomerIDToolStrip فى أعلى الفورم قم بعمل كليك يمين بالماوس علي ToolStrip’s CustomerID text box ثم Convert to اختر ComboBox

الان سنقوم بتغيير بعض خصائص هذا ComboBox
قم بعمل كليك يمين بالماوس علية واختر Properties ثم اذهب إلى لوحة الخصائص وقم بتغيير الخصائص الاتية
-الإسم Name إلى cboCustomerID بدلا من CustomerIDToolStripTextBox
-قم بتغيير الخاصية فى DropDownStyle إلى DropDownList
-ثم خاصية DropDownWidth إلى 75
-إذهب إلى الخاصية Item ثم قم بالضغط على Collection تظهر لك لوحة تحرير النص قم بكتابةعدد من CustomerID فى كل سطر مثلا
ALFKI
ANATR
ANTON
وذلك على سبيل التجربة ثم قم بتجربة البرنامج عن طريق F5 ويمكنك تجربة ComboBox لمشاهدة محتوياتة
نذهب الان إلى خصائص FillByCustomerID button ونقوم بتغيير الخصائص التالية
-النص فى الخاصية Text إلى Get Orders ثم قم بتغيير قيمة ToolTipText إلى Select a Customer ID
نذهب الان إلى خصائص FillByCustomerID button ونقوم بتغيير الخصائص التالية
-النص فى الخاصية Text إلى Get Orders ثم قم بتغيير قيمة ToolTipText إلى Select a Customer ID
الان قم بعمل كليك يمين على أيكونة الحفظ الموجودة فى Binding Navigator ثم قم بنسخها وقم بحذف Binding Navigator ثم قم بعمل لصق داخل Tool Strip

قم بتجربة العمل وذلك عن طريق استدعاء أحد CustomerID الموجودة فى ComboBoxثم GetOrder سيقوم بإحضار بيانات العميل المطلوب

سنقوم الان بإضافة استعلام اخر
-كليك يمين بالماوس على OrdersTableAdapt ثم Add Query
-سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text
كود:
WHERE CustomerID = @CustomerID ORDER BY OrderID DESC
ثم نقوم بإضافة استعلام اخير
-كليك يمين بالماوس على Orders_DetailsTableAdapt ثم Add Query
-سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text

سنقوم الان بإحداث بعض التغييرات البسيطة فى الكود
قم بالضغط على الفورم ضغطة مزدوجة لفتح صفحة الكود ثم قم بحذف الجزء الموضح بالصورة ثم قم بتجربة البرنامج

كيفية عمل هذا البرنامج؟

-عندما تقوم باستدعاء ID العميل فى القائمة الأولى وليكن ALFKI فإنة يتم استدعاء البيانات الشخصية من الجدول Customers ويتم إظهارها فى مربعات Detailes بمجرد الضغط على GetOrder
-عندما تقوم بكتابة نفس ID الذى هو ALFKI فى مربع النص فى القائمة الثانية ثم تقوم بالضغط على
FILLByCustomerID فإنة سيقوم بعرض كل أوردر تم تنفيذة لحساب ALFKI فيظهر كل Order داخل
DataGird 1 مصحوبا بكل بياناتة فقط دون عرض محتوياتة من سلع أو منتجات
-عندما تقوم بكتابة نفس ID الذى هو ALFKI فى مربع النص فى القائمة الثالثة ثم تقوم بالضغط على
FILLByCustomerID فإنة سيقوم بعرض كل منتج تم إخراجة لحساب أوردرات ALFKI داخل DataGird 2
فيظهر كل منتج مصحوباببيانات Order الذى تم فية خروج هذة السلعة
توضيح
العميل الذى ID لة هو ALFKI
-طبقا لمحتويات DataGird 1 فإن هذا العميل تم تنفيذ 6 طلبيات لة وهى 11011و10952و10835و10702و10692و10643
-كما أنة وطبقا لما هو موضح فى DataGird 2 فإنة خلال هذة الطلبيات قام بسحب المنتجات التالية
فى الطلبية رقم 10835 أخذ عدد 2 من المنتج 77 بسعر 13 وتم عمل خصم مقدارة 0.2 ...الخ
ولكن هل بذلك انتهى هذا المشروع؟
بالطبع لا فلا زال هناك الكثير فليس من المعقول أن نقوم باستدعاء كل بيان من البيانات بصورة
منفصلة نريد أن نقوم باستدعائهم بضغطة واحدة كما نريد إضافة وحذف وتعديل.....الخ
فكيف نقوم بذلك؟
هذا ما سنعرفة فى الجزء القادم
يمكنكم تجربة ما قمنا بإنجازة حتى هذة المرحلة بتحميل المشروع من الرابط التالى
http://www.zshare.net/download/407611846e7fb2
***
رابعا:
دمج مربعات النص إلى ComboBox
المطلوب الان هو احضار البيانات كاملة من الجداول الثلاثة دفعة واحدة وليست بطريقة متفرقة
قم بفتح صفحة الكود ثم اذهب إلى الكود الخاص بمربع النص الموجود بشريط الأدوات الثانى الخاص بالجدول Order الذى هو يبداء بهذا السطر
كود:
Private Sub FillByCustomerIDToolStripButton1_Click
ثم قم بنسخ الكود التالى منة
كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, CustomerIDToolStripTextBox.Text)
ثم قم بتغيير النص CustomerIDToolStripTextBox.Text إلى cboCustomerID.Text فيصبح الكود كاملا كالتالى
كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, cboCustomerID.Text)
ومعنى هذة الخطوة أنة سيستخدم النص الموجود فى ComboBox وليس الموجود فى شريط الأدوات الثانى ثم نقوم بلصق النص بعد تعديلة بداخل كود ComboBox الذى هو يبداء بالسطر التالى
كود:
Private Sub FillByCustomerIDToolStripButton_Click
سنقوم بعمل نفس الطريقة مع شريط الأدوات الثالث الخاص بالجدول Order_Detailes
فيصبح الكود كالتالى
كود:
Me.Order_DetailsTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Order_Details, cboCustomerID.Text)
الان نقوم بحذف كلا من شريط الأدوات FillByCustomerIDToolStrip1 وشريط الأدوات FillByCustomerIDToolStrip2وكذلك الكود الخاص بهما
قم الان بتجربة البرنامج وقم باستدعاء أحد العملاء ثم اضغط GetOrder لتجد الان أن كافة البيانات بالجداول الثلاثة قد تم تعبئتها
بهذة المرحلة نلاحظ الاتى
-لم نقم باستخدام أى كود من أكواد الفيجوال بيسيك
-يمكن لمستخدمى لغة #C استخدام نفس الطريقة حتى هذة المرحلة
بدمج مربعات النصوص الثلاثة إلى ComboBox تنتهى هذة المرحلة و Part6
يمكنكم تحميل المشروع من
الرابط التالى
http://www.zshare.net/download/411063349c0e10
وبهذ أنتهى درس اليوم و يتبع بأذن الله.......