مقدمة عامة عن بيئة الدوت نت

209
اﻟﺠﺪﻳﻊ ﺧﺎﻟﺪ اﻋﺪاد[email protected] ﻨﺕ ﺍﻟﺩﻭﺕ ﺒﻴﺌﺔ ﻋﻥ ﻋﺎﻤﺔ ﻤﻘﺩﻤﺔ ﺃﻭﻻ: ﺍﻟﻤﺘﺼﻠﺔ ﺍﻟﺒﻴﺌﺔ ﺘﻌﺭﻴﻔ ﻬﺎ: ﺍﻟﻤﺘﺼﻠﺔ ﺍﻟﺒﻴﺌﺔ ﻫﻲ ﺒﺎﺴﺘﻤﺭﺍﺭ ﻤﺘﺼﻼ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻓﻴﻬﺎ ﻴﻜﻭﻥ ﺍﻟﺘﻲ ﺍﻟﺒﻴﺌﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻤﺼﺩﺭ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻊ ﺍﻟﺘﻌﺎﻤل ﻓﺘﺭﺓ ﻁﻭﺍل. ﺃﻤﺜﻠﺔ ﻋﻠﻴﻬﺎ: ﺍﻟﻤﺴﺘﻔﻴﺩ ﻓﻴﻪ ﻴﻜﻭﻥ ﻤﻭﻅﻔﻴﻥ ﺸﺅﻭﻥ ﻨﻅﺎﻡ ﻫﻨﺎﻙ ﻴﻜﻭﻥ ﺃﻥ ﻫﻲ ﺍﻷﻤﺜﻠﺔ ﺃﺤﺩ ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻘﻭﺍﻋﺩ ﻤﺒﺎﺸﺭ ﺘﺼﺎل. ﻓﻭﺍﺌﺩﻫﺎ: ١ - ﺍﻟﺠﻤﺎﻋﻲ ﺒﺎﻟﻌﻤل ﺃﻗﻭﻯ ﺘﺤﻜﻡ: ﺒﺘﺤﺩﻴﺙ ﻴﻘﻭﻡ ﺤﻴﻥ ﺍﻟﻤﺘﺼﻠﺔ ﺍﻟﺒﻴﺌﺔ ﻓﻲ ﺍﻟﻤﺴﺘﻔﻴﺩ ﻷﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺤﺩﻴﺙ ﻤﻥ ﺍﻟﻤﺴﺘﻔﻴﺩ ﻫﺫﺍ ﻴﻨﺘﻬﻲ ﺤﺘﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻬﺫﻩ ﺍﻟﺘﺤﺩﻴﺙ ﻋﻤﻠﻴﺔ ﺇﻏﻼﻕ ﻴﺘﻡ ﻓﺈﻨﻪ ﺒﻴﺎﻨﺎﺕ ﻟﻜ ﺍﻵﺨﺭﻴﻥ ﻟﻠﻤﺴﺘﻔﻴﺩﻴﻥ ﺍﻟﺘﺤﺩﻴﺙ ﺇﻏﻼﻕ ﻋﻤﻠﻴﺔ ﺘﺘﻡ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺤﺩﻴﺙ ﻓﻲ ﺘﻌﺎﺭﺽ ﻴﺤﺩﺙ ﻴﻼ. ﻋﻤﻠﻴﺔ ﺇﻏﻼﻕ ﻓﻘﺩ ﺒﻬﺎ ﺍﻟﺘﺤﻜﻡ ﺍﻟﻤﻁﻭﺭ ﺃﻭ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻗﻭﺍﻋﺩ ﻤﺩﻴﺭ ﻴﺴﺘﻁﻴﻊ ﻋﻤﻠﻴﺔ ﻫﻲ ﺍﻟﺴﺠﻼﺕ ﺘﺤﺭﻴﺭ ﻋﻨﺩ ﻴﻜﻭﻥ ﻗﺩ ﺃﻭ ﺍﻟﺠﺩﻭل ﻤﺴﺘﻭﻯ ﻋﻠﻰ ﺃﻭ ﺍﻟﺼﻑ ﻤﺴﺘﻭﻯ ﻋﻠﻰ ﺍﻟﺴﺠﻼﺕ ﺇﻏﻼﻕ ﻴﻜﻭﻥ ﻓﻘﻁ ﺘﺤﺩﻴﺜﻬﺎ ﻋﻨﺩ ﺃﻭ ﺍﻟﺤﻘﻭل. ٢ - ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻲ ﺃﻜﺜﺭ ﺤﺩﺍﺜﺔ: ﻭﺫﻟﻙ ﻫﻲ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻫﺫﻩ ﻓﺈﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺴﺘﺭﺠﻊ ﺤﻴﻥ ﺃﻨﻙ ﺍﻷﺨﻴﺭﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﺴﺘﺭﺠﺎﻉ ﻓﺘﺭﺓ ﻓﻲ ﻟﻬﺎ ﺘﺤﺩﻴﺙ ﻫﻨﺎﻙ ﻴﻜﻥ ﻟﻡ ﻤﺎ، ﻤﻨﻊ ﻴﻤﻜﻥ ﺃﻨﻪ ﺍﻟﻌﻠﻡ ﻤﻊ ﻻﺤﻘﺎ ﺸﺭﺤﻪ ﺴﻴﺘﻡ ﻤﺎ ﻭﻫﻭ ﺍﻟﺘﺤﺩﻴﺙ ﻓﺘﺭﺓ ﺃﺜﻨﺎﺀ ﺍﻻﺴﺘﺭﺠﺎﻉ. ﻋﻴﻭﺒﻬﺎ: ١ - ﺩﺍﺌﻡ ﺍﺘﺼﺎل ﺸﺒﻜﺔ ﻭﺠﻭﺩ ﻭﺠﻭﺏ: ﻷﻥ ﻨﻅﺭﺍ ﺍﻟﺒﻴ ﺒﻘﻭﺍﻋﺩ ﺍﻻﺘﺼﺎل ﻗﻨﺎﺓ ﻤﻔﺘﻭﺤﺔ ﺎﻨﺎﺕ ﻓﻼ ﺍﻷﺤﻴﺎﻥ ﻜل ﻓﻲ ﻴﺘﻭﻓﺭ ﻤﺎ ﻭﻫﻭ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻘﻭﺍﻋﺩ ﺩﺍﺌﻤﺔ ﺍﺘﺼﺎل ﺸﺒﻜﺔ ﻭﺠﻭﺩ ﻤﻥ ﺒﺩ. ٢ - ﺍﻻﻤﺘﺩﺍﺩ ﺍﻟﺘﻭﺴﻊ ﻓﻲ ﻀﻌﻑ: ﻗﻭﺍﻋﺩ ﻤﻊ ﺍﺘﺼﺎل ﻟﻪ ﺍﻟﻤﺘﺼﻠﺔ ﺍﻟﺒﻴﺌﺔ ﻓﻲ ﻤﺴﺘﺨﺩﻡ ﻜل ﺍﻟﺒﻴﺎﻨﺎﺕ، ﻋﺩﺩ ﺯﻴﺎﺩﺓ ﻤﻊ ﺃﻨﻪ ﻴﻌﻨﻲ ﻤﻤﺎ ﺍﻻﺘﺼﺎل ﻨﻔﺱ ﻓﻲ ﻴﺸﺘﺭﻜﺎ ﺃﻥ ﻤﺴﺘﺨﺩﻤﻴﻥ ﻷﻱ ﻴﻤﻜﻥ ﺍﻟﻤ ﺴﺘﻔﻴﺩﻴ ـ ﻤﺜل ﻟﺤﺎﻟﺔ ﻤﺴﺘﺤﻴﻠﺔ ﺸﺒﻪ ﺍﻟﻌﻤﻠﻴﺔ ﻴﺠﻌل ﻤﺎ ﻭﻫﻭ ﻁﺭﺩﺍ ﺍﻻﺘﺼﺎﻻﺕ ﺯﻴﺎﺩﺓ ﻋﻠﻴﻨﺎ ﻴﺠﺏ ﻴﻭﻡ ﻜل ﺍﻷﻟﻭﻑ ﻤﺌﺎﺕ ﻴﺭﺘﺎﺩﻩ ﺍﻻﻨﺘﺭﻨﺕ ﻋﻠﻰ ﻤﻭﻗﻊ. 2

Upload: tar3q

Post on 27-Jul-2015

311 views

Category:

Documents


9 download

DESCRIPTION

كتاب يهتم بتقديم لغة الفيجوال بيسك دوت نت

TRANSCRIPT

Page 1: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

مقدمة عامة عن بيئة الدوت نت

البيئة المتصلة :أوال

البيئة التي يكون فيها المستخدم متصال باستمرار هي البيئة المتصلة : هاتعريف •

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

أحد األمثلة هي أن يكون هناك نظام شؤون موظفين يكون فيه المستفيد :عليها أمثلة •

.تصال مباشر بقواعد البيانات على ا

:فوائدها •ألن المستفيد في البيئة المتصلة حين يقوم بتحديث : تحكم أقوى بالعمل الجماعي -١

بيانات فإنه يتم إغالق عملية التحديث لهذه البيانات حتى ينتهي هذا المستفيد من تحديث البيانات و

.يال يحدث تعارض في تحديث البياناتتتم عملية إغالق التحديث للمستفيدين اآلخرين لك

السجالت هي عملية يستطيع مدير قواعد البيانات أو المطور التحكم بها فقد إغالق عملية

يكون إغالق السجالت على مستوى الصف أو على مستوى الجدول أو قد يكون عند تحرير

.الحقول أو عند تحديثها فقط

أنك حين تسترجع البيانات فإن هذه البيانات هي وذلك : حداثة أكثر في البيانات -٢

مع العلم أنه يمكن منع ، ما لم يكن هناك تحديث لها في فترة االسترجاعالبيانات األخيرة

. االسترجاع أثناء فترة التحديث وهو ما سيتم شرحه الحقا

: عيوبها • انات مفتوحة قناة االتصال بقواعد البينظرا ألن : وجوب وجود شبكة اتصال دائم-١

. بد من وجود شبكة اتصال دائمة بقواعد البيانات وهو ما ال يتوفر في كل األحيان فال

كل مستخدم في البيئة المتصلة له اتصال مع قواعد : ضعف في التوسع و االمتداد -٢

ال يمكن ألي مستخدمين أن يشتركا في نفس االتصال مما يعني أنه مع زيادة عدد ، البيانات

ن يجب علينا زيادة االتصاالت طردا وهو ما يجعل العملية شبه مستحيلة لحالة مثل ـستفيديالم

.موقع على االنترنت يرتاده مئات األلوف كل يوم

2

Page 2: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

المنفصلةالبيئة : ثانيا

من مجموعة من البيانات يتم نسخهايمكن تعريف هذه البيئة بأنها :تعريفها •

هذه التعديالت إرجاعومن ثم ن قواعد البيانات بعيدا عمصدر البيانات و تعديلها

هذه البيئة ال توجد قناة اتصال مفتوحة مع قواعد في. إلى مصدر البيانات

.البيانات

المواقع التجارية في االنترنت مثل موقع يبيع منتجات ما فإنك : أمثلة عليها •

لذا ، آخرعند تصفح أحد المنتجات ال تقوم بإغالق عملية الشراء عن أي متصفح

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

: يمكن ذكر فائدتين للبيئة المتصلة وهما : هافوائد •

نظرا ألن المستخدم يقوم باالتصال ثم : راك أكثر من مستخدم بنفس االتصال إمكانية اشت-١

لذا ، خدم فترة ضئيلة جدانسخ البيانات ثم قطع االتصال فإن فترة وجود االتصال مع المست

.يمكن أن يستفيد مستخدم آخر من نفس االتصال بعد أن ينتهي منه المستخدم األول

نظرا ألن المستخدم ال : شكل كبير مقارنة بالبيئة المتصلة أداء عالي و قابل للتوسع ب-٢

قنية بعض التقنيات مثل تنستخدميحجز االتصال فإن عدد المستخدمين حين يزيد فإننا قد

وهو ما يوفر أعدادا -سيأتي لها الكالم في فصل االتصال بقواعد البيانات –أحواض االتصال

. كبيرة من االتصاالت

: عيوبها •

لو رجعنا إلى مثال المتصفح الذي يريد شراء : عدم حداثة البيانات-١

، ةمنتج من االنترنت لوجدنا أن البيانات التي توجد عنده غير البيانات الحقيق

بمعنى أن رصيد الكتب مثال الموجود أمامه غير الرصيد الحقيقي ألنه قد قام عدة

. لههمتصفحين بشراء نفس الكتاب أثناء تصفح

حدوث تضارب عند تحديث البيانات وهو ما يتطلب حل هذا إمكانية -٢

و افترضنا أن هناك برنامجا لشؤون ليتضح بالمثال ف وهو ما : التضارب

ا أقوم بتحديث عمر الموظف و صادف أن كان هناك موظف الموظفين و أن

3

Page 3: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

هذا الشيء سوف يحدث غيري يقوم بتحديث بيان العمر لنفس الموظف فإن

.تضاربا في التحديث يتطلب حال وهو ما ستعرف كيف تقوم به

لذا ، نظرا ألن البيئة غير متصلة فال يوجد أي قفل على البيانات في قواعد البيانات

.ارد بشكل كبيرفالتضارب و

:قواعد البياناتإلى الوصولنماذج د على بيئة أو لغة هذه النماذج ال تعتم، البيانات قواعدىيوجد أربعة نماذج أساسية للوصول إل

.معينة إنما هي نماذج عامة

A. نموذج الطبقة الواحدة:

برنامج يمكن تمثيل هذا النموذج بمستفيد يعمل على جهاز واحد فيه : مثال عليه -١

. النظامأجزاءيحوي كل

نظرا ألن كل شيء في نفس المكان ال توجد أي صعوبات في الوصول :مزاياه -٢

. النظامأجزاءإلى كل جزء من

عند تعديل أي جزء من النظام يجب إعادة توزيع التعديالت على كل : العيوب-٣

.مستفيد

:الث طبقات شهيرةنا عند ذكر طبقات النظام نعطي تقسيما أوليا لثل ولع

الشرح الطبقةتحوي هذه الطبقة واجهة المستفيد مثل أزرار األمر و مربعات النص طبقة واجهة المستفيد

وقد تحتوي هذه الطبقات على بعض التدقيقات التي ال تحتاج الوصول

إلى قواعد البيانات مثل تدقيق أقصى طول لحقل ما أو تدقيق أن تاريخ

.يخا صحيحاالميالد يمثل تار

تحتوي هذه الطبقة الوظائف التي تطبق قواعد العمل مثل الوظيفة التي طبقة قواعد العمل

.تدقق استحقاق موظف ما إلجازة من عدمه

هذه الطبقة هي التي تقوم باالتصال بقواعد البيانات و عمل التحديثات طبقة الوصول للبيانات

.عليها

4

Page 4: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

B .نموذج الطبقتين

: أحد الخيارات الثالثةفكرة هذا النموذج تتمثل في :جفكرة النموذ •

I. إما اجتماع طبقة واجهة المستفيد و طبقة قواعد العمل مع بعضيهما ومن ثم

.الطبقة الثانية هي طبقة البياناتتكون

II. أو اجتماع طبقة البيانات مع طبقة قواعد العمل .

III. و طبقة البيانات أو توزيع طبقة قواعد العمل بين طبقة واجهة المستفيد.

.المستفيد/من أمثلة هذا النموذج ما يسمى بالخادم :مثاله •

جزئي لوظائف الفصل ال يمكن القول بأن أبرز مميزات هذا النموذج هي : المزايا •

.النظام

:العيوب •صعوبة التوسع المستقبلي للخلط بين طبقتي قواعد البيانات و واجهة المستفيد وهو -١

.“Fat Client”دم المتضخم يسمى بالمستخ ما

وذلك عند تعديل أي جزء من أجزاء النظام فإن ذلك صعوبة الصيانة المستقبلية -٢

ر ث يكايتطلب إعادة توزيع النظام على كل المستخدمين وهو ما يكون مكلفا عندم

.عدد المستخدمين

تعديالت على النظام إجراء النظام بعضها ببعض مما يعني صعوبة أجزاءاختالط -٣

.تبعثر قواعد العمل في أماكن مختلفةل

C.نموذج الطبقات الثالث:

يمكن تمثيل هذا النموذج بأنه النموذج الذي ينقسم إلى ثالث : فكرة النموذج •

، طبقة قواعد العمل، طبقة واجهة المستفيد : طبقات وهي

.) ١-١ ( انظر الشكلطبقة البيانات

5

Page 5: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

لكانت تكلفة صيانة Webالمستفيد سهولة الصيانة ولو كانت واجهة : المزايا •

.صفر = أجهزة المستفيد

.قد تبرز تكاليف جديدة مثل تكاليف خادم البيانات : العيوب •

نموذج الطبقات الثالث :١ -١شكل

طبقة قواعد العمل

تفيدلمسطبقة ولجهة ا طبقة واجهة المستفيد

البيانات طبقة

D .نموذج الطبقات المتعددة

يمكن تمثيل هذا النموذج بأكثر من ثالث طبقات حسب احتياج كل : فكرة النموذج •

ل طبقة للتعامل مع األمن و إعطاء منشأة يمكن أن يكون هناك طبقة رابعة مث

.تصاريح الدخول للنظام وغير ذلك حسب الحاجة

:المزايا • . تشغيل مختلفةأنظمةتجعل من السهولة االمتداد و اتصال مجموعة من التطبيقات على

:العيوب •

. عدة أجهزة ببعضها البعضالتصالعيوب أمنية -١

و التنفيذ وذلك الزدياد عدد الطبقات وهو ما ينشئ تعقيدا في التطوير و صعوبة التطوير -٢

.التنفيذ

6

Page 6: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

بيئة الدوت نت

:يمكن تقسيمها إلى ثالثة عناصر

.)٢-١( انظر الشكل (CLR, FCL, ASP, WinForms) إطار العمل و يشمل -١

.win.net،vs.net,office منتجات مثل -٢

.جهة خدمات منتجة من قبل أي -٣

إطار العمل - ١ العمل في أي جهاز سوف إطارد من تهيئة يعتبر إطار العمل قلب بيئة الدوت نت لذلك الب

العمل مجانا من موقع إطارإنزاليمكن . ي بيئة الدوت نت فصمميعمل عليه تطبيق

: العمل إلى قسمين أساسيين هما إطارسيم قيمكن ت. مايكروسوفت

I. التشغيل المشترك للغاتCommon Language Runtime

II. المواصفات المشتركة للغاتCommon Language Specification

إطار العمل في بيئة الدوت نت : ٢-١شكل

Windows APIWindows API COM+ ServicesCOM+ Services

Common Language RuntimeCommon Language RuntimeType System Metadata Execution

The .NET Class LibraryThe .NET Class LibraryADO.NET IO XML Threading Security

ASP.NETASP.NET Windows FormsWindows FormsWeb Services Web Forms Controls Drawing

Windows APIWindows API COM+ ServicesCOM+ Services

Common Language RuntimeCommon Language RuntimeType System Metadata Execution

The .NET Class LibraryThe .NET Class LibraryADO.NET IO XML Threading Security

ASP.NETASP.NET Windows FormsWindows FormsWeb Services Web Forms Controls Drawing

7

Page 7: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

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

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

يستطيع استضافة لغات CLR وهو ما يعني أن CLSالمواصفات المشتركة للغات بناء على

منها CLR أكثر من عشرين لغة إلى إضافةتم وقد . البرمجة المختلفة

VB,C#,C++,Delphi,COBOL ويجري تطوير الكثير من اللغات لتضاف إلى CLR

.لدوت نت بيئة غير معتمدة على لغة برمجة ماوهو ما يجعل بيئة ا

: يقدم عدد كبير من الفوائد للمطورين منها

.األمن )١

المتابعة من كود إلى آخر حتى أثناءتستطيع القفز : – Debugging–متابعة الكود )٢

.لو كانا مكتوبان بلغات مختلفة

.DLL Hell بــ ىما يسم مشكلة وهو ما أنهىدعم أقوى لإلصدارات المتعددة )٣

.إدارة الذاكرة و تجميع النفايات )٤

.Threadإدارة )٥

II . المواصفات المشتركة للغاتCLS وهو مايعني أن كل لغات CLR لجميع لغات البيانات معيارا قياسيا ألنواع CLSيعرف

CLS سوف يكون لها نفس الحجم لألنواع الصحيحة و الطويلة –Integers,Long-

من فئة مرجع إلى إرسالسوف يكون بإمكانك ، اونا أكثر بين اللغات هذا المعيار يعني تع

كل لغة ال تطبق هذه المعايير لن تستفيد .كائن إلى آخر حتى لو كانا مكتوبين بلغات مختلفة

: يمكن تلخيص هذه المواصفات بالنقاط التالية . CLRمن الخدمات التي تقدم من قبل

.أنواع بيانات قياسية -١

.- كل فهارس المصفوفات البد أن يبدأ من صفر–سية مصفوفات قيا -٢

.معالجة هيكلية لألخطاء -٣

.طرق الوصول إلى األنظمة التطبيقية الخاصة بإطار العمل -٤

8

Page 8: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

مع العلم أن اللغات المستضافة في بيئة الدوت نت لها الحق في زيادة مميزات أخرى لكن هذه

.المميزات لن تستطيع الوصول إلى كائنات الدوت نت

المدار و الكود غير المدارالكود

Managed Code– مدار يسمى كود CLSالكود المطور بلغة موافقة لــ

مدار يسمى كود غير WIN32 API أو COMالكود الذي يعتمد على تقنية أما

بنسبة مائة بالمائة و على النقيض منه مدار كود غير ٦لذا يمكن القول بأن فيجوال بيسك

لذا يمكن القول بأن الكود غير . بنسبة مائة بالمائةمداربيئة الدوت نت هو كود الكود في

.CLRالمدار لن يستفيد من الخدمات المقدمة من قبل

اللغة الوسطية لميكروسوفتMSIL

– في بيئة الدوت نت فإنه ال يتم تأليفه إلى كود أولي -Compile–عندما تقوم بإنتاج الكود

Native code- . يقوم مؤلف الدوت نت بإنشاء ملف يحوي التالي:

a.ة ي لغة وسطIL.

b. بيانات واصفة Metadata : وتحوي معلومات مثل:

. معلومات عن جميع األنواع التي استخدمتها-١

. معلومات عن كل أنواع الدوال-٢

. الدوال التي توجد لها مرجعية في كودك-٣

)٣-١( انظر الشكل في البيئة التشغيليةCLR التي يحتاجها وغيرها من البيانات

9

Page 9: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

أسلوب إنتاج الكود في بيئة الدوت نت : ٣ -١شكل

AssemblyAssemblySource Source CodeCode

Language Language CompilerCompiler

االنتاجاالنتاج

عند استدعاء النظام ألول مرةعند استدعاء النظام ألول مرة

التنفيذالتنفيذ

JIT JIT CompilerCompiler

NativeNativeCodeCode

CodeCode (IL)(IL)

MetadataMetadataAssemblyAssemblyAssemblyAssemblySource Source

CodeCodeLanguage Language CompilerCompilerLanguage Language CompilerCompiler

االنتاجاالنتاج

عند استدعاء النظام ألول مرةعند استدعاء النظام ألول مرة

التنفيذالتنفيذ

JIT JIT CompilerCompiler

NativeNativeCodeCode

التنفيذالتنفيذ

JIT JIT CompilerCompiler

NativeNativeCodeCode

JIT JIT CompilerCompiler

NativeNativeCodeCode

CodeCode (IL)(IL)

MetadataMetadata

نظرا ألن الملف المؤلف في بيئة الدوت نت يحتوي على الشيئين السابقين فإنه يعتبر ملفا •

وال Type Libraryموضحا لمحتواه لذا فال يوجد أي حاجة بعد اليوم لمكتبات األنواع

.اجة لتعريفات في الريجستري كما ال توجد حIDLإلى ملفات

JITالمؤلف في الوقت المحدد

عتمد على نظام التشغيل فإنه عند يعتبر ملف يILألن ال يدوم كما هو ILبالطبع فإن ملف

تتم عملية التأليف بواسطة أداة من أدوات نطاق .تشغيل هذا الملف يتم تأليفه إلى كود أولي

. انظر الشكل السابقالعمل تسمى المؤلف في الوقت المحدد

NameSpaces االمتدادات أسماءالهدف من هذا التقسيم هو .يقسم إطار العمل في بيئة الدوت نت الوظائف إلى امتدادات منطقية

أو NameSpaces هرميه تسمى أشكالهذه االمتدادات موزعه على ، ترتيب وتنظيم الوظائف

المجموعة تُجمع فياتّنظام الملف مع عملالتي ت ظائفالوكّل ، على سبيل المثال. االمتداداتأسماء

(System.IO).

10

Page 10: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

فضاءات األسماءطرق إضافة مرجع إلى : ما وهمافضاءات األسماءيوجد هناك طريقتان أساسيتان إلضافة مرجع إلى

فضاءات مرجع إلى بإضافةعندما تقوم : من محرر الكود مباشرة Imports إضافة عبارة -١

الفضاء االسمي فإنك تستطيع استخدام كل الوظائف في ذلك Importsما عن طريق عبارة أسماء

و لعلنا نأخذ المثال التالي، مباشرة ودون الحاجة إلى كتابة االسم الكامل

Syst

فضاء االسم إلى

وجب عليك عند

ية الكود قبل أي

: -أرجوا أن تهتم بالفكرة و ليس بالمحتوى –من الكود السابق نالحظ ما يلي

I. فضاء اسم إلى مرجعأضفنافي بداية الكود em.Convert

II. ثم قمنا بمكان آخر باستخدام الدالةToInt32و التي تنتمي

System.Convert ، لذلك قمنا بكتابة اسم الدالة مباشرة.

III. فضاء االسم مرجع إلىنضفلو لم System.Convertل

:هو أن تكتب االسم كامال وToInt32استخدام الدالة System.convert.ToInt32

ما البد من وضع جملة االستيراد في بدافضاء االسم مرجع إلى إضافة عند

.جملة

11

Page 11: مقدمة عامة عن بيئة الدوت نت

[email protected]اعداد خالد الجديع

اتبع الخطوات التالية إلضافة مرجع عن طريق : عن طريق مستكشف الحل -٢

:مستكشف الحل

I. انقر بزر الفأرة األيمن على مجلدRefrences مستكشف الموجود في

)٤-١ (الحلول كما يظهر من الشكل

إضافة مرجع :٤-١شكل

)٥-١(ليظهر لك الشكل Add Refrenceر على

.اختيار المرجع الذي تريد

اختيار المرجع :٦-١

فوائدهاض االمتدادات في بيئة الدوت نت و

الشرح queues, linked lists, hashيقدم أنواع المجموعات مثل

sorted lists.

.يقدم وظائف معالجة قواعد البيانات عند المستفيد

.للوصول إلى الوظائف الخاصة بالرسومات

.معالجة الملفات

للعمل مع ملفات إكس إم إل

12

II. انق III .قم ب

شكل

ع

Sy

الجدول التالي يوضح ب

االمتدادstem.Collections

System.Data

System.Drawing

System.IO

System.XML

Page 12: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

زومقدمة لبناء تطبيقات الوند

نعني ببيئة . قبل أن تبدأ بالتطوير في بيئة الدوت نت عليك بتفحص بيئة التطوير

عندما تشغل . التطوير كل ما تتعامل معه أثناء تطويرك لبرنامج ما في بيئة الدوت نت

سوف نحاول جاهدين في هذا. بيئة الدوت نت فإن كل ما تراه أمامك هو بيئة التطوير

قد ال نشرح كل . الفصل أن نتعرض ألهم ما تحتاجه أثناء تطوير نظام في بيئة الدوت نت

شيء في بيئة التطوير لكن لن نترك شيئا مهما تحتاجه باستمرار إال و سنتعرض له إما

. بالتصريح أو بالتلميح

Visual Studio.Net طريقة الدخول إلى .Windowsهام في نظام التشغيل الموجود على شريطا المStartانقر فوق زر -١

.Programsسوف تظهر لك قائمة اختر -٢

.سوف تظهر لك قائمة فرعية فيها العديد من البرامج -٣

Microsoft Visual Studio.Netانقر على القائمة -٤

.)١-٢ ( كما يظهر في الشكلMicrosoft Visual Studioانقر على -٥

تشغيل فيجوال ستوديو دوت نت: ١-٢شكل

15

Page 13: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

.٢-٢تالحظ في الشكل ولى بعد دخول بيئة التطويرالصفحة األ :٢-٢شكل

: جزأين هما تتكون هذه الصفحة من

: ويحوي نوعين من المعلومات وهي : وسط الجزء األ -١

I. شريطالمشاريع األخيرة التي سبق و عملت عليها و تندرج تحت Projects كما

كما يظهر من الشكل مشروع جديد من هنا أو فتح مشروع سابقإنشاءكنك أنه يم

)٣-٢(. ٣-٢شكل

16

Page 14: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

II. جميع المشاريع فية وهي طريقة سريعة للبحث عن مساعد: مشاريعال فيالبحث

. )٤-٢( كما يظهر من شكل كعينة من قبل بيئة الدوت نتالمتوفرة لديك

على مجموعات اإلطالع و تميكروسوفزيارة موقع هخاللتستطيع من :الجزء األيسر -٢

. آخر التحديثات و العديد من األشياء األخرى واألخبار

البحث في المشاريع :٤-٢شكل

My Profileالملف الشخصي تستمر التي سوف تعدادااإل خواص الصفحة األولى و يمكنك من اختيار بعض أحدهو

.)٥-٢( انظر الشكل في كل المشاريع التي تنشئها في بيئة الدوت نتكمع

: مما يلي أياتستطيع عمل

عرض أسلوب عرض النماذج من األسلوب الحديث في الدوت نت إلى أسلوبتغيير -١

. طريقة عرض النماذجرال تتغي إذا أردت أن ٦النماذج في فيجوال بيسك

حصر المساعدة في بيئة الدوت نت على خيار محدد مثل أن تختار حصر المساعدة في -٢

انظر الشكل قة بفيجوال بيسك أو بالمواضيع المتعلقة بلغة سي شاربالمواضيع المتعل

)٥-٢(

. فتح آخر مشروع عملت فيه آليا كلما فتحت بيئة الدوت نت -٣

. مشروع جديد كلما فتحت بيئة الدوت نتإنشاءعرض مربع فتح مشروع أو -٤

17

Page 15: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

مالية التي قد ال تحتاج أن ترجع لها الكاالعدادات الملف الشخصي من عداداتا

ير في بيئة الدوت نت

الدوت نت بيئةع فيشروع في بيئة الدوت نت يحسن بنا أن نرشدك إلى أنواع المشاريع التي يمكنك

.وت نت

الشرحWindowدم إلنشاء تطبيقاتيستخ. ClassLibطريقة إلنشاء مكونات دوت نت الستخدامها في تطبيقات أخرى .

لهذا النوع من التطبيقات واجهة دال يوج ةالمكتب مع العلم أنلسطح

يحوي هذا النوع من التطبيقات . مرئية يتعامل معها المستخدم

.وظائف يمكن استخدامها في باقي أنواع التطبيقاتWindowLibrary

. تطبيقات تهدف إلنشاء أدوات يمكن استخدامها في تطبيقات وندوز

هذا . هل فكرت يوما بطريقة بناء أداة مربع النص أو أداة القائمةف

النوع من التطبيقات يمكنك من بناء أدوات ومن ثم استخدامها وقد

الملف الشخصي :٥-٢شكل

18

تعتبر :مالحظة

طوال فترة التطو

أنواع المشاريقبل إنشاء أول م

بنائها في بيئة الد

عنوع المشروsApplication

rary

s Control

Page 16: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

.تتمكن من بيعها إذا كانت أداة ذات قيمةASP.NET Web Application

. و هي التطبيقات التي تعمل من خالل المتصفحWebتطبيقات

تطبيقات ترتبط بقواعد إنشاءأصبح اآلن من السهولة بمكان و

.البيانات وكتابة الكود بشكل مساو لسهولة كتابته في تطبيقات وندوزASP.NET Web Service

يهدف هذا النوع من التطبيقاتو .XML من نوع Webخدمات

مثل خدمة تحويل . XMLإلى أداء خدمة يكون ناتجها ملف

أنت تستدعي هذا النوع من التطبيقات ف .االنترنتالعمالت عبر

.ليعطيك النتيجة على شكل اكس ام الConsol Application تطبيق مماثل لتطبيقات الدوسDOS. Windows Service دم الدخول إلى تخستطبيقات خدمات وندوز و تعمل قبل أن يسجل الم

تستطيع إنشاء خدمات وندوز ألداء هدف ما بسهولة وهو و .وندوز

.ما كان متعذرا إال على محترفي البرمجةWeb Control Libraryدف إلنشاء أدوات يمكن استخدامها في تطبيقات الوبهتطبيقات ت

.كما هو الحال في أدوات وندوز

مشروع جديد في بيئة الدوت نتإنشاء

وكيف يتم ذلك ؟ن تنشأ المشاريع في بيئة الدوت نتأي و بيئة الدوت نت أنه بمجرد ضغطك على زر ٦ األساسية بين بيئتي فيجوال بيسك تالفرو قامن

يقوم بإنشاء كل نت ستوديو دوت مشروع جديد في بيئة الدوت نت فإن فيجوال إنشاءموافق عند

. وفي المكان الذي اخترتهخترتهالملفات و تخزينها في مجلد باالسم الذي ا

هو عبارة و،عند إنشاء مشروع جديد من نوع وندوز يقوم فيجوال ستوديو بإنشاء ما يسمى بالحل

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

. واحد كما يقوم بإنشاء نموذج داخل هذا المشروع

: قم بالخطوات التالية إلنشاء مشروع

.قم بفتح برنامج فيجوال ستوديو دوت نت -١

19

Page 17: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

)٧-٢( كما هو واضح من الشكل File New Projectمن القائمة الرئيسية اختر -٢

كيف تنشئ مشروع جديد :٧-٢شكل

: و الذي ينقسم إلى ثالثة أجزاء )٨-٢(سوف يظهر لك الشكل -٣

. فيهاالتطبيقالجزء األيسر و تستطيع من خالله تحديد اللغة التي سوف تكتب •

إنشائه الذي تريد التطبيقالجزء األيمن و الذي يحوي نوع •

لذي او المسار الجزء السفلي و الذي تستطيع من خالله تحديد اسم المشروع •

المشروع هذا المشروع إلىإضافةومن ثم تحديد ما إذا أردت سوف يخزن فيه

.المفتوح إن وجد أو بدء مشروع جديد

ثم اكتب اسم Windows Applicationيجوال بيسك ثم قم باختيار لغة فرباختيا قم

ثم انقر على زر موافقMyFirstApplicationالمشروع

خيارات إنشاء مشروع جديد :٨-٢شكل

20

Page 18: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

Form1.vb هذا المشروع يحتوي على نموذج واحد اسمه MyFirstApplاسمه

بناء على اللغة التي إنشاؤه وهذا االمتداد يتم vbالحظ أن امتداد النموذج هو

لتكون لغة كتابة التطبيق فإن #C قمت باختيار لغة وفل. تكتب بها التطبيقأناخترت

.C Sharp وهو اختصار CSامتداد النماذج سوف يكون

التعرف على مكونات فيجوال ستوديو دوت نتكمل كتابة أول برنامج يحسن بنا أن نتعرف على بعض المكونات في بيئة قبل أن ن

.الدوت نت و التي سوف تساعدنا في إنشاء المشاريع في المستقبل إن شاء اهللا

نافذة مستكشف الحلول

األداة األساسية للعمل مع الحلول و مع المشاريع و تعتبر توجد في الجهة اليمنى في بيئة التطوير

التي كانت في Project Window وهي أداة مماثلة لنافذة المشروع - )٩-٢(شكل انظر –

. مثل عرضها للمراجع التي يستخدمها المشروعأخرى السادس غير أنها تحمل إضافات اإلصدار

ويعرض متصفح المشاريع كل عناصر برنامجك من مشاريع ومكونات، وما يندرج تحت كل منها

يمكنك بنقر أي منها مرتين أن تعرضه في مصمم النماذج ـ لو كان من أعضاء وعناصر، بحيث

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

كما يمكنك أن تُظهر القائمة الموضعية بضغط زر الفأرة األيمن فوق أي عنصر، حيث يمكنك

.ض نافذة الخصائص، لتعدل خصائص هذا العنصر ، لتعرProperties" خصائص"اختيار األمر

كان المشروع يحتوي على أكثر من نموذج، وتريد أن تجعل أحدها هو أول ما يظهر لك عند وإذا

من القائمة Set As StartUp Object" اجعله كائن بدء التشغيل"تشغيل البرنامج، فاضغط األمر

.الموضعية

هذه النافذة كل النماذج التي توجد في المشروع فلو من العناصر التي يمكن أن تجدها في

الذي Form1.vb لوجدت أنه ال يوجد لدينا إال نموذج واحد وهو )٩-٢(نظرت إلى الشكل

21

Page 19: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

إظهارعند اختيار أي عنصر في المستكشف تستطيع . قامت بيئة الدوت نت بإنشائه لنا

.خصائصه

.المستكشفقائمة من خالل ايقونات صغيرة تظهر في

مستكشف الحل :٩-٢شكل

. المستكشف يمكنك النقر المزدوج على هذا العنصر إذا أردت االنتقال إلى أي عنصر في

نفس المشروع فإنه يمكنك االنتقال من أكثر من نموذج فيلديكعلى سبيل المثال لو كان

عند . وسوف يظهر أمامكفيهآخر بالنقر المزدوج على النموذج الذي ترغب نموذج إلى

أو القائمةCtrl+Alt+L من خالل إظهارهاتستطيع و نافذة مستكشف الحلول اختفاء View Solution Explorer

إضافة نموذج آخر إلى المشروع فإذا كنت تريد المشروعآخر إلىإضافة عنصر

: قم بما يلي . الذي أنشأته

ر لك قائمة لتظه- في مستكشف الحلول–انقر بزر الفأرة األيمن على اسم المشروع -١

)١٠-٢( انظر شكل Add New Item سوف تظهر لك قائمة فرعية اختر Add اختر

22

Page 20: مقدمة عامة عن بيئة الدوت نت

kal_judaia@ho خالد الجديعtmail.com

23

إضافة عنصر للمشروع :١٠-٢شكل

و الذي يحوي عدد من أنواع العناصر التي يمكن أن )١١-٢(سوف يظهر لك الشكل -٢

و فعلى سبيل المثال تستطيع إضافة نظام تطبيقي إلى المشروع. تضيفها إلى المشروع

HTMLما نريد أن نضيفه إلى مشروعنا هو نموذج من نوع . لى ذلك إذا احتجت إ

سوف تالحظ في األسفل . قم بالتظليل عليهWindow Formويندوز وهو ما يوجد باسم

. تستطيع تغييره أو تركه كما هو. إضافته اسم النموذج الذي تريد الختيارمربع نص

Openاضغط على زر

أنواع العناصر التي يمكن إضافتها للمشروع :١١-٢شكل

Page 21: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

نموذج آخر كما يظهر من أضيفشف الحلول لتالحظ أنه قد ارجع إلى نافذة مستك

.)١٢-٢(الشكل

:الطريقتين التاليتين يمكنك اختيار احدإذا أردت التنقل بين النموذجينف

التنقل بين النماذج :١٢-٢شكل

I. من خالل نافذة مستكشف النقر المزدوج على النموذج الذي تريد االنتقال إليه

.الحلول

II. وهي ول عناصر قائمة مستكشف الحل النقر علىج ثمنقر مرة واحدة على النموذلا

View Designer Form١٣-٢( كما يظهر من الشكل(

طريقة أخرى للتنقل :١٣-٢شكل

بين النماذج

هذا األمر الفإن ، Exclude From Projectأردت أن تحذف عنصًرا باستخدام إذا

إذا . إعادته للمشروع من جديدتستطيع، حيث ا نهائيالجهازحذف ملف العنصر من ب يقوم

.Remove" حذف" نهائًيا من المشروع والقرص الصلب استخدم األمر ذف الملفأردت ح

24

Page 22: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

.)١٤-٢( كما يظهر لك من الشكل بناء التطبيقات

صندوق األدوات:١٤-٢شكل

:وهى كما يلي ج ما يوجد ثالثة طرق إلضافة أداة إلى نموذ

في إفالتهاو ذلك بسحب األداة المراد و ضعها في النموذج ومن ثم : السحب و اإلفالت -١

.محيط النموذج

– انتبه للمالحظة التالية –وذلك بالنقر المزدوج على األداة : عن طريق النقر المزدوج -٢

.وهو ما سيضيفها إلى النموذج

.ثم لصقها على النموذج ا على النموذج ومنوذلك بنسخ أداة موجودة مسبق: النسخ -٣

إلضافة أداة إلى نموذج البد أن يكون النموذج مفتوحا بشكله التصميمي و ليس بشكل : مالحظة

.محرر الكود

هي أنك صندوق األدوات إلى بيئة الدوت نت فيما يختص بةمن اإلضافات الجديد

للتحكم قوية إضافةحذف أو تعديل و هي تستطيع إضافة مدخل جديد إلى صندوق األدوات أو

.)١٦-٢( انظر الشكل بتنظيم األدوات

25

Page 23: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: بالتالي قم-Tab– جديد شريطإلضافة و

لتظهر لك )١٥-٢( كما يظهر من الشكل صندوق األدواتالنقر بزر الفأرة األيمن على -١

Add Tab اختر ثم القائمة التي تراها

إضافة شريط جديد إلى صندوق األدوات :١٥-٢شكل

الحظ أنني( )١٦-٢( كما يظهر من الشكل الشريط اسم سوف يفتح لك مكانا لكتابة -٢

)This Is New Tab كتبت

تسمية الشريط :١٦-٢شكل

جديدال

26

Page 24: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: على األشرطة التاليةصندوق األدوات ويحتوي

:Crystal Reports كريستالتقارير

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

.المكاناتمحدودة ا

:Data" قواعد البيانات"

.وتحتوي على األدوات التي تستخدُم لالتصال بقواعد البيانات وقراءة وتحديث بياناتها :Windows Forms" نماذج الويندوز"

.وتحتوي على األدوات التي تستخدم مع نماذج الويندوز

:Web Forms" نماذج اإلنترنت"

تعطي Web Controlهذه األدوات و مع نماذج اإلنترنتوتحتوي على األدوات التي تستخدم

. االنترنتتطبيقاتسهولة في تصميم

:HTMLأدوات "

.وتحتوي على األدوات التي تستخدم مع نماذج اإلنترنت

27

Page 25: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

كتابة البرنامج

).الشفرات( محرر الكود من خالل تستطيع كتابة البرنامج

:إلى محرر الكودـ كيفية الوصول أ

ثم نفذ أي من الطرق صندوق األدواتول إلى محرر الكود قم بإضافة زر أمر من للوص

: الية الثالث الت

للتعرف أكثر على هذه األداة اقرأ الجزء الخاص بخصائص زر األمر في الفصل : مالحظة

التالي

:للوصول إلى محرر الكود يوجد ثالثة طرق

ي أداة فإن ذلك سوف يقوم بنقلك إلى محرر عند النقر المزدوج على أ: النقر المزدوج -١

.الكود

األيقونة األولى من مستكشف الحلول تنقلك إلى محرر : من خالل مستكشف الحلول -٢

و األيقونة التي بجانبها تنقلك إلى وضع تصميم )١٧-٢(الكود كما يظهر من الشكل

.النموذج

الوصول إلى محرر الكود من خالل :١٧-٢شكل

مستكشف الحل

28

Page 26: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

كما ViewCodeة على النموذج ثم اختيار النقر بزر الفأرة األيمن على أي أداة موجود -٣

)١٨-٢(يظهر من شكل

من النموذجالوصول إلى محرر الكود :١٨-٢شكل

. وهو ما يمثل واجهة محرر الكود)١٩-٢(بعد االنتقال إلى محرر الكود أنظر الشكل

١٩-٢شكل

لكود المنتج منا

قبل فيجوال

ستوديو

للرجوع إلى

واجهة تصميم

النموذج

29

Page 27: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:ي بيئة الدوت نت ف محرر الكودمميزاتب ـ

بك معرفتها ألنها تسهل توجد عدة مميزات لمحرر الكود في بيئة الدوت نت يجدر

: منها ميزات لخمسسوف نتعرض ، العمل أثناء عملية البرمجة

I. و يحصل عند ، ويمكنك من التظليل الدقيق لما تريد من كود:نمط االختيار المربع

)٢٠-٢( انظر الشكل و تحريك الفأرة ألسفلaltضغط زر

II. حيث تقوم بيئة الدوت نت بترتيب الكود الذي تكتبه ترتيبا يسهل : التحرير الذكي

لن تحتاج بعد اليوم إلى . التكرار مثل ترتيب جمل الشرط و جمل قراءتهعرضه و

لوضعهما بوضع متوازي فسوف تقوم بيئة Else if وجملة Ifالبحث عن جملة

. الدوت نت بعمل ذلك نيابة عنك

III. تركيب الجمل المشهورة مثل إكمالمثل : الجمل إكمال select case,if,do

Select Case أو جملة If لن تحتاج بعد اليوم إلى حفظ صيغة جملة و.وغيرها

سوف تقوم الدوت Enter زر بضغط ثم الشرط ثم تقوم Ifفبمجرد ما تكتب جملة

.نت بإكمال الجملة نيابة عنك

IV. من خالل : تجزئ الجملEdit Advance Word Wrapping

عند إعمال هذه المميزة سوف تقوم الدوت نت بتقسيم األسطر الطويلة إلى سطرين أو

.أكثر لتسهل عملية قراءة الكود

V. تتيح لك هذه الميزة الترقيم اآللي ألسطر الكود: ترقيم األسطر. Tool – Option – Text Editor - General – All Language – Line Numbers

طريقة دقيقة لتظليل الكود : ٢٠-٢شكل

30

Page 28: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Propertiesالخصائص على على الخصائص الخصائصعرفعرفتتيمكن أن يمكن أن .تتميز كل أداة في بيئة الدوت نت بمجموعة من الخصائص

هذه الخصائص و .الخ... به الكائن من مواصفات مثل الطول، العرض، اللون يتميزما أنها أنها

ية أو أداة بخاص كل كثيرا و قد تتميزرما يتكرقد يتشابه بعضها بين أداتين مختلفتين وهو

: هما يوجد طريقتين لتعيين خاصية ألداة ما. أكثر ال توجد إال فيها

.إعطاء هذه الخاصية أثناء وقت التصميم -١

.إعطاء هذه الخاصية أثناء وقت التشغيل -٢

يوجد فصل كامل يتكلم عن خصائص األدوات و القيم التي تأخذها و شرح كل قيمة و : مالحظة

اجعة هذا الفصل و التمرن عليه جيدايجدر بك مر. مثال تطبيقي عليها

أداةكيف تعين خصائص أ ـ وتوجد -Propherty Window– )٢٢-٢( انظر شكل توجد نافذة تسمى نافذة الخصائص

يوجد . وهدف هذه النافذة هي تعيين خصائص األدوات،عادة في الجهة اليمنى لبيئة التطوير

: عدة طرق للوصول إلى هذه النافذة

كما Properties الفأرة األيمن على أي أداة موجودة على النموذج ثم اختيار النقر بزر -١

)٢١-٢(يظهر من الشكل

الوصول إلى خصائص أداة ما :٢١-٢شكل

31

Page 29: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

الطريقة الثانية للوصول إلى نافذة الخصائص أن تقوم باختيار التالي من القائمة الرئيسية -٢View Property Window

أقسام نافذة اخلصائص :٢٢-٢شكل

قائمة األدواتقائمة األدوات

الحظ وجود خصائص فرعية لخاصية الخط

الحظ وجود خصائص فرعية لخاصية الخط

خيارات عرض الخصائص خيارات عرض الخصائص

.F4 زر الضغط على -٣

:ب ـ طرق عرض ترتيب الخصائص : يوجد هناك طريقتين أساسيتين لعرض ترتيب الخصائص في نافذة الخصائص

i. وهو ترتيب الخصائص حسب الحروف األبجدية : الترتيب األلف بائي

Text تأتي قبل خاصية Fontفعلى سبيل المثال سوف نجد أن خاصية

.T يسبق حرف Fألن حرف

ii. الخصائص إلى وفي هذا الترتيب يتم تصنيف: يفي الترتيب التصن

ومن ثم إدراجها تحت تلك)٢٣-٢(انظر الشكل مجموعات

خاصية تحوي Appearanceل مجموعة اسبيل المث المجموعات فعلى

Backcolor و خاصية Font.

32

Page 30: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:ج ـ تطبيق

يفيالعرض التصن :٢٣-٢شكل

للخصائص

م بإضافة زر أمرق -١

Propertiesثم اختر انقر بزر الفأرة األيمن عليه -٢

و اكتب محاولة تغيير Textاذهب إلى خاصية -٣

.الخصائص

الحظ كيف تغير النص المكتوب على زر األمر-٤

33

Page 31: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Events األحداثمثل ، ماأداةيحصل عند قيام المستخدم أو النظام بعمل ما تجاه يمكن تعريفه بزمن حصوله حيث

فلو أخذنا على سبيل المثال أداة زر . توي صندوق النصير محتغيل، على زر أمرنقر بالفأرة

فإذا أردت أن . األمر لوجدنا أنه بمجرد نقر الفأرة على زر األمر فإن حدث النقر سوف يعمل

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

كيف تصل إلى الحدث لكتابة الكود : ما يليافعل . الحدث الذي ينفذ عند النقر على زر األمر إلى للوصول

)٢٤-٢(أضف زر أمر إلى النموذج كما يظهر من الشكل -١

الوصول إىل احلدث بالنقر املزدوج :٢٤-٢شكل

القول اآلن أنك داخل يمكن. )٢٥-٢( األمر ليظهر لك الشكل انقر مزدوجا على زر -٢

في هذا اإلجراء سوف ينفذ عند النقر الحدث فكل ما ستكتبه

34

بعد النقر المزدوج على زر األمر تم االنتقال إلى حدث النقر الخاص بهذا الزر : ٢٥-٢شكل

نت الدوتتقوم بيئة معلومات بانشاء

الحدث

نت الدوتتقوم بيئة معلومات بانشاء

الحدث

Page 32: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

.طريقة الوصول حلدث ما : ٢٦-٢شكل

اختر األداة التي تريد الوصول ألحداثها

اختر األداة التي تريد الوصول ألحداثها اختر الحدثاختر الحدث

تصغير او تكبير الكودتصغير او تكبير الكود

: شاشة إلى ثالثة أقسام ال هذه يمكننا تقسيم

I. عبارة من بدء: القسم األولPublic Class Form1 إلى عبارة End Class هذا

حيث أن بيئة الدوت نت أصبحت . الخاص بالنموذج-Class– الفئةالقسم هو

ه هو عبارة مطابقة مائة بالمائة لمواصفات البرمجة الشيئية فإن النموذج الذي أنشأت

و كل ما يندرج تحته من أداوت سوف ترث الخصائص الخاصة بالنموذج فئةعن

للنموذج سوف الفئةبالطبع فإن . تقم بتغييرها على مستوى األداة نفسهاما لم

.يحوي بداخلة كل تعريفات األحداث و خصائصها و األحداث الخاصة بها

II. يبدأ من كلمة : القسم الثانيPrivate Sub Button1_Click إىل End Sub

عند النقر على ليعمل الذي أنشأته لك بيئة الدوت نت لتقوم بكتابة الكود داخلة اإلجراءوهذا هو

تالحظ أن السطر األول طويل جدا، ولكي تتمكن من رؤيته على الشاشة كامال دون أن . زر األمر

" _ " يمنحك الرمز VB.NET، فإن Horizontal ScrollBaarتضطر الستخدام المنزلق األفقي

، والذي بإضافته لنهاية السطر، يعتبر Underscoreالذي هو عبارة عن مسافة وشرطة منخفضة

VB.NET ،وبهذا يمكنك أن تشطر . هو مكمل لهيليهوأن السطر الذي أن السطر لم ينتِه بعد

وهناك .Syntax في قواعد اللغة خطأاألسطر الطويلة إلى عدة أسطر، دون أن تتسبب في

طريقة أخرى وهي تجزيء الجمل ارجع إلى مميزات محرر الكود لمعرفة هذه الطريقة وتعتبر

.هذه الطريقة أسهل من الطريقة األولى

35

Page 33: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

عند النقر المزدوج على أية أداة في بيئة الدوت نت فإن بيئة الدوت نت سوف تقودك : مالحظة

ألداة إلى محرر الكود و تضعك في الحدث الخاص بتلك ا

III- وهو عبارة : القسم الثالثWindows Form Designer generated code

هذه المنطقة . لو ضغطت عليها لظهر لك حجم كبير من العبارات+ ويوجد أمامه عالمة زائد

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

Inherits System.WinForms.Form المعالم األساسية للنموذج من الكتساب

WinForms.Form ومعنى ذلك أن هذا

قائم ومعتمد ومكتسب Form1النموذج

WinForms.Form لـ للخصائص األساسية

. أن يعمل النموذجيمكن الوبدون هذه الجملة Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub

يتم تنفيذ هذا اإلجراء عند بدء تحميل

Form_Intialize يحل محل وهو . النموذج

لسابق من والتي كانت موجودة في اإلصدار ا

إذا أردت عمل شيء ما في . فيجوال بيسك

بداية البرنامج فاكتبه في السطر الذي يلي دالة

InitializeComponent() . Protected Overloads Overrides SubDispose(ByVal disposing AsBoolean) If disposing Then If Not (components IsNothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

. البرنامجإنهاءيتم تنفيذ هذا اإلجراء عند

قما يتعليقوم هذا اإلجراء بإزالة كل

هذا اإلجراء حل محل . بالبرنامج من الذاكرة

Form_Terminate الذي كان موجودا و

. السادساإلصدارفي

Private Sub InitializeComponent() Me.Button1 = NewSystem.Windows.Forms.Button() إلى نهاية هذا اإلجراء End Sub

يحفظ كل إجراءهذا اإلجراء مهم جدا وهو

الخصائص التي غيرتها أثناء تصميم النموذج

. ئص من هنا تعديل الخصالال تحاو لكن .

36

Page 34: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

من فوائد هذا اإلجراء أنه يمكنك تصميم و

نموذج بالطريقة التي تريدها ثم نسخ هذا

اإلجراء ووضعه في نماذج أخرى مثل نماذج

. اإلنترنت

أنصح بعدم محاولة تعديل القسم الثالث و الذي يمثل الكود المنتج إال إذا كنت على : مالحظة

.دراية تامة بما تعمل

37

Page 35: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

لمعالجة األخطاءمقدمة عند اكتمال أي برنامج فإن هناك عدد من األخطاء المتوقعة و غير المتوقعة قد تحث في النظام

من الجدير . بلغ احتراف المبرمج فإنه لن يستطيع أن يخلي برنامجه من األخطاءامهم. أثناء عمله

:إلى ثالثة أقسام وهي يمكن تقسيم أنواع األخطاء ، بالذكر هنا ذكر أنواع األخطاء بصفة عامة

وهو النوع الشائع من األخطاء ويحصل عند كتابة عبارة في الكود : األخطاء البنائية -١

: ويمكن التمثيل لهذا النوع من األخطاء بمثالين . بصيغة تخالف قواعد لغة البرمجة

a. كما يظهر من المثال التالي; الخطأ اإلمالئي في كتابة دالة ما Dim a As String Dim b As Integer ctyp(a, b)

. في آخر الدالةe حيث لم نكتب حرف ctypeالحظ الخطأ اإلمالئي في دالة

b. فقدان جزء من الجمل المركبة مثل: Dim a As Integer If a > 10 Then a = a + 10

.If و التي يفترض أن تأتي بعد نهاية جملة end ifالحظ الخطأ وهو نسيان جملة

وجود خطأ بنائي فإن بيئة الدوت نت تظهر خطا متعرجا تحت العبارة التي يكمن فيها عند

. النظامإنتاجالخطأ وتظهر هذه األخطاء في نافذة المهام عند محاولة

و.ويحصل هذا الخطأ عند محاولة تنفيذ جملة من المستحيل تنفيذها : األخطاء التشغيلية -٢

كما انه ال يمكن اكتشاف هذه .عد تنفيذ النظامال يظهر هذا النوع من األخطاء إال ب

األخطاء عند إنتاج النظام ولعل أبرز األمثلة على هذا النوع هو محاولة القسمة على

صفر وهاك مثال آخر ماذا لو حاول البرنامج االتصال بقاعدة البيانات لكن الخادم الذي

ذا الخطأ هو خطأ تشغيلي لسبب أو آلخر فإن هلتوجد فيه قاعدة البيانات كان ال يعم

.الخطأ عند عدم معالجة هذا النوع من األخطاء قد يتوقف البرنامج بعد حدوث و.بحت

.Try Catch هذا النوع من األخطاء من خالل عبارة معالجة يتم

38

Page 36: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تعتبر من األخطاء التي يصعب إيجادها و يحدث عندما ال يؤدي : األخطاء المنطقية -٣

: انظر المثال التالي . بغيالنظام نتائجه كما ينDim a As Integer a = 5 Do While a < 5 a = a - 5 Loop

. التكرار لن ينتهياالحظ أن هذ

يتم معالجة هذا النوع من األخطاء بمراجعة الكود يدويا من قبل المبرمج و اكتشاف الخطأ

.بنفسه

39

Page 37: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

الدرس األول

مما يكون له الدور في إزالة vb.netقيقي مع بيئة سوف تكون بداية التعامل الح: الهدف

.ئة البرمجيةيالحاجز النفسي ويمكنك من التعلم على أساسيات هذه الب

مرحبا بكم في برنامجي األول " بعد نقر زر األمر بالفأرة سوف تظهر لنا : . ماذا سينتج

على أداة العنوان"

زر أمر وأداة عنوانسوف يكون لدينا نموذج وعليه : األدوات

الشرح التفصيلي الخطوة

وضع األداوت -١

على النموذج

كما هو موضح Form1 ضع زر أمر وأداة عنوان على النموذج -١

.)٢٧-٢(بالشكل

تجزئ الجمل -٢

Edit Advance Word Wrappingمن خالل

أداة عنوان وزر أمر :٢٧-٢شكل

40

Page 38: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:ات لتصبح مطابقة للجدول التالي غير خصائص األدو تغيير -٣

خصائص بعض

األدوات

القيمة الخاصيةاسم األداةButton1Name CmdWelcome Text مرحبا Label1 Name LblHello Text Form1 Text البرنامج األول RightToLeftYes

تغيير خاصية -٤

Text ألداة

العنوان عند حدث

. النقر لزر األمر

. cmdWelcomeيتين بالفأرة على زر األمر انقر مرتين متتال-١

وسوف يكون المؤشر بين السطرين محرر الكودسوف تظهر لك

التاليين

اكتب العبارة التالية بين السطرين السابقين-٢

lblHello.Text = " مرحبا بكم في برنامجي األول"

41

Page 39: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تنفيذ البرنامج -٤

ومالحظة تغير أداة

ند النقر العنوان ع

، على زر األمر

و بمعنى آخر أن

– Clickالحدث

تم تنفيذه -النقر

عند النقر على زر

.األمر

Form1.vb ارجع إلى شاشة التصميم وذلك بالنقر المزدوج على -١

في أعلى *Form1.vb[Design] شريط في المستكشف أو النقر على

. شاشة محرر الكود

ثم Debug أو اختر من القائمة F5 لتشغيل البرنامج اضغط -٢

Start.

انظر العنوانأداة انقر على زر مرحبا ثم الحظ تغير -٣

. )٢٨-٢(الشكل

رنامجي األول بمرحبا بكم في "ظهور : ٢٨-٢شكل

بعد النقر على زر األمر مرحبا"

42

Page 40: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

أداة العنوان

في العادة تستخدم . رغب أن يحررها المستخدمي لنصوص التي ال

. خرى

ك مربع نص إلدخال اسماء الطالب استخدم أداة العنوان لتكون

استخدام أداة العنوان١ -٥شكل )١-٥(ع كما في الشكل

صائص أداة العنوانخ

لألداة مع مالحظة أنه اليمكن أن توجد أداتين على نفس النافذة بنفس

الشرح

هذه هو اسم أداة العنوان وهو ماتستخدمه إذا أردت

.الوصول للخصائص برمجيا

٦٦

تستخدم لعرض ااستخدامها

عنوانا ألدوات أ

عندما يكون عند مثال

عنوانا لهذا المرب

اسم : خاصية االسم .١

. االسم

القيمة الخاصيةName

Page 41: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

اقع األدوات في النافذة هي خاصية جديدة تستخدم للمحافظة على مو: ة تالمرساة أو المثب .٢

.عند تغيير حجمها

الشرح القيمة الخاصيةAnchor جميع الجهات مثل

يمين أو يسار أو

يمين فوق أو

يسار أسفل

من هذه ) ٢-٥شكل (إذا اخترنا الجهة اليمنى : مثال

الكائن الحاوي وفإن المسافة بين هذا الكائن الخاصية

ا هي سواء سوف تبقى كمنى اليمالجهة من له

)٣-٥(في الشكل .ه أو كبرناالكائن الحاويصغرنا

لما اخترنا الجهة اليمنى من هذه الخاصية بقيت

–وحد النموذج المسافة كما هي بين أداة العنوان

األيمن -الكائن الحاوي

مل تتغري كما تالحظ املسافة بني أداة العنوان و احلد األمين للنموذج ٣-٥شكل

كما ترى اخترنا اجلهة اليمىن٢-٥شكل

تستخدم عندما تكون غير متأكد من طول النص الذي سيعرض على أداة: الحجم التلقائي .٣

وهي متوفرة أثناء التصميم مع النص طوال و قصرا أداة العنوان لتمتد Trueاجعلها . العنوان

Label1 أثناء التنفيذ ألداة لو أردت أن تغير قيمتهامثال .والتنفيذLabel1.Autosize = True

الشرح القيمة الخاصيةAutosize True يتغير الحجم بناء على النص طوال وقصرا.

False سوف يبقى حجم أداة العنوان . هي القيمة اإلفتراضية

.ثابتا كما تم تحديده أثناء التصميم) طولها وعرضها(

. تغيير لون الخلفية لألداة أثناء التصميم والتنفيذيمكن: لون الخلفية .٤

٦٧

Page 42: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح القيمة الخاصيةBackcolor تمكنك هذه الخاصية من تغيير اللون الخلفي ألداة

لعنوانا

مثال لتغيير لون الخلفية ألداة عنوانLabel1.BackColor = Color.Blue

في العادة نستخدمها للتفريق بين أدوات العنوان ،تستخدم لتغيير شكل حدود األداة: شكل الحد .٥

مثل لو كان عندك على النافذة أدوات عنوان لعرض األسعار و أداة عنوان لعرض . المختلفة

وهي متوفرة أثناء التصميم والتنفيذ. ير األدوات األولىغفاألداة األخيرة تأخذ المجموع

lblHelloمثال للتغيير أثناء التنفيذ ألداة اسمها lblHello.BorderStyle = BorderStyle.Fixed3D

الشرح القيمة الخاصيةBorderStyle Fixed3D ما عند )٤-٥(لتغيير حدود أداة العنوان أنظر شكل

كما تالحظ الحدود Fixed3Dجعلنا قيمة الخاصية

.اصبحت ثالثية أبعاد FixedSingleإلظهار حد خطي. None إللغاء الحد.

Fixed3D إىل BorderStyle عندما غرينا قيمة اخلاصية ٤-٥كل

٦٨

ش

Page 43: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

وهي متوفرة أثناء . تستخدم هذه الخاصية للتحقق من أي أمر يريده المستخدم: التحقق .٦

.التصميم والتنفيذ

الشرح القيمة الخاصيةCauseValidate True عند اختيارTrue يتم ربط أداة العنوان مع أداة

أخرى للتحقق من شروط معينة ومن ثم سوف ينفذ

.الحقاسيأتي لها مزيد تفصيل . Validateالحدث False لن يتم تنفيذ ماسبق.

.هذه الخاصية تربط قائمة الزر األيمن بأداة العنوان: قائمة الزر األيمن .٧

الشرح يمةالق الخاصيةContextmenu فعندما . هذه الخاصية تربط القائمة بأداة العنوان اسم القائمة

تضغط الزر األيمن والمؤشر عند أداة العنوان سوف

هي نفس القائمة التي ربطت أداة ، تظهر لك قائمة

. العنوان بها

ستخدم حسب نوع في العادة ت. لتغيير نوع المؤشر عند مرورة فوق هذه األداة: المؤشر .٨

وهي متوفرة . نالمؤشر فمثال مؤشر الساعة الرملية يخبر المستخدم بأن هناك عملية ما تحدث اآل

.أثناء التصميم والتنفيذ

الشرح القيمة الخاصيةCurser تتيح لك هذه الخاصية تغيير نوع مؤشر الفأرة عند نوع المؤشر

ت قائمة من المؤشراهناك. مرورة فوق أداة العنوان

.حاول تجربتها

Windowsكشف النوافذ تمسهل تذكر القائمة الشجرية ألسماء المجلدات في : الحوض .٩

Explorer .إذا أردت تثبيت أداة العنوان في أي جهة فيمكنك . ومالئة للجهة اليسرى انها ثابته

ة أثناء وهي متوفر. )٧-٥(و )٦-٥(انظر الشكلين فقط اختر الجهة. من خالل هذه الخاصية

.التصميم والتنفيذ

٦٩

Page 44: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح القيمة الخاصيةDock Right فقط اختر . مأل األداة الجانب األيمن تإذا أردت أن

).٧-٥(و )٦-٥(الجهةانظر الشكلين Left مأل األداة الجانب األيسرتإذا أردت أن. Top مأل األداة الجانب العلويتإذا أردت أن. Bottom أل األداة الجانب السفليمتإذا أردت أن. Fill مأل األداة النافذة كلهاتإذا أردت أن. Non ؟إذا لم ترغب باستخدام هذه الحاصية

٧-٥ الحظ كيف اخترنا اجلهة اليمىن مث الحظ شكل ٦-٥شكل

الحظ كيف احتلت أداة العنوان اجلهة اليمىن من النموذج ٧-٥شكل

مثال لو أردت منع المستخدم من . تستخدم لمنع هذه األداة من اإلستجابة لألحداث: التمكين .١٠

وهي متوفرة . Falseالخاصية نقر زر دخول حتى يدخل كلمة السر واسم المستخدم اجعل هذه

.أثناء التصميم والتنفيذ

٧٠

Page 45: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح القيمة الخاصيةEnabled True ستجيب لألحداثتمكين هذه األداة مما يجعلها ت.

False عندما )٨-٥(عدم تمكين هذه األداة انظر الشكل

.False اخترنا

أداة العنوان بعد أن جعلنان لوت الحظ كيف ٨-٥شكل False Enabled=خاصية

لتغيير خصائص الخط على هذه األداة ويندرج تحت هذه الخاصية عدة خصائص : الخط .١١

.فرعية ويمكن تغيير جميع هذه الخصائص أثناء التصميم أو التنفيذ

الشرح قيمةال الخاصية الفرعية الخاصيةFont FontName يمكنك تحديد اسم الخط الذي تريده.

FontBold True إذا أردت أن يكون الخط سميك

False إذا أردت الخط غير سميك FontSize رقم

صحيح

للتحكم بحجم الخط

FontStrikThruTrue False

وضع سطر تحت الخط

عدم وضع سطر تحت الخط FontItalic True

False إذا أردت الخط مائل

إذا أردت الخط غير مائل

٧١

Page 46: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

.وهي متوفرة أثناء التصميم والتنفيذ. هذه الخاصية لتغيير لون الكتابةتستخدم: لون الكتابة .١٢

الشرح القيمة الخاصيةForeColor لتغيير لون الخط

عند انتهائك من : مثال . تستخدم لتثبيت مكان وحجم األداة في وقت التصميم: اإلغالق .١٣

. تصميم نافذة معينة ترغب في استخدام هذه الخاصية حتى التغير حجم أو مكان أداة أثناء التصميم

الشرح القيمة الخاصيةLocked True لن تستطيع تكبير وال تصغير وال تحريك أداة العنوان

.أثناء التصميم False لعنوان أثناء تستطيع تكبير و تصغير و تحريك أداة ا

.التصميم

: اليمين والشمال .١٤

الشرح القيمة الخاصيةRightToLeft Yes عرض النموذج من اليمين إلى الشمال

No عرض النموذج من الشمال إلى اليمين

تستخدم هذه الخاصية للتحكم بحجم األداة أثناء التصميم والتنفيذ ولها عدة خصائص : الحجم .١٥

.فرعية

الشرح القيمة الخاصية الفرعية صيةالخاSize Heght يحدد طول هذه األداة

Width يحدد عرض هذه األداة

vb.netيحدد . تحدد هذه الخاصية ترتيب اإلنتقال بين أدوات النافذة: اإلنتقال بين األدوات .١٦

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

.مع مالحظة أن البدء في الترتيب يكون من الصفر. متوفرة أثناء التصميم والتنفيذ. كما تريد

٧٢

Page 47: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح القيمة الخاصيةTabIndex إلى مجموع ١من

األدوات التي على

النافذة ناقص واحد

Tabبعد تشغيل البرنامج إذا ضغطت زر

. خرآئن سوف ينتقل المؤشر من كائن إلى كا

ترتيب التنقل حسب هذه وسوف يكون

.الخاصية

إلى ١من لذلك تالحظ أن القيمة تتراوح . البدء في الترتيب يكون من الصفر :مالحظة

مثال تكون أول أداة تريد زيارتها ترتيبها . مجموع األدوات التي على النافذة ناقص واحد

.صفر والثانية واحد وهلم جرا

تستخدم أثناء التصميم والتنفيذ . هذه الخاصية النص المكتوب داخل هذه األداة تمثل: النص .١٧

أثناء التشغيل Label1والتي لها االسم لو أردنا تغيير النص المكتوب على أداة العنوانمثال ،

.إلى مرحبا بكم

Label1.Text = "مرحبا بكم"

الشرح القيمة الخاصيةText ه على أداة العنوانالنص الذي تريد عرض.

تتيح لك هذه الخاصية تنسيق النص داخل األداة إما إلى اليمين أو إلى : محاذاة النص األفقية .١٨

لتنسيق النص للوسط أثناء التشغيل .وهي متوفرة أثناء التصميم والتنفيذ. اليسار أو في الوسط

.Label1ألداة اسمها Label1.Textalig = Label1.HorizontalAlignment.Center

الشرح القيمة الخاصيةTextAlign Right تنسيق النص إلى اليمين.

Left تنسيق النص إلى اليسار. Center تنسيق النص في الوسط.

٧٣

Page 48: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

& تستخدم لتحديد ما إذا كانت هذه األداة سوف تستجيب لعالمة : الذاكرية أو الرابطة .١٩

إلى يتم الوصول فإنهTrueإذا كانت قيمة هذه الخاصية . داةالموجود في خاصية النص لنفس األ

الحرف المسبوق + Alt طريق عنTab األداة التي تلي أداة العنوان في ترتيب خاصية األداة

. Text النص في خاصية &بعالمة

الشرح القيمة الخاصيةUseMnoneic True/False إذا اخترناTrueالمة سيكون الحرف المسبوق بع&

لي أداة تي ت هو المفتاح للوصول لألداة ال Altمع زر

. في الترتيبالعنوان

٧٤

Page 49: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

مربع النص أداة

. ستخدم لتحرير النصوص تتستخدم إلدخال البيانات و عرضها كما استخدامها

عندما يكون عندك مربع نص إلدخال اسماء الطالب استخدم مربع نص لكتابة مثال

.أسماء الطالب

)١-٦(الشكل

أداة مربع النص :١-٦شكل

خصائص مربع النص

: خصائص أداة العنوان وهي هناك خصائص لمربع النص الكالم فيها نفس الكالم عن

Anchor ، Autosize ، Backcolor ، Borderstyle ، CauseValidate ،

Contextmenu ، Curser ، Dock ، Enabled ، Font ، ForeColor ، Locked ،

Size ، TabIndex ، Text ، TextAlign

: ن بإسهاب اآلوهناك بعض الخصائص التي التوجد في أداة العنوان وهي ماسنشرحه

تتيح لك هذه الخاصية التحكم بحالة األحرف التي : CharacterCasingحالة األحرف -١

تدخل إلى مربع النص فيمكنك تحويل كل حرف يدخله المستخدم إلى الحالة التي تريد

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

Capital كبيرةت تريد أن تكون حالة جميع األحرف التي يدخلها المستخدم أنمثال. تريد

ل وبالتالي كلما أدخل المستخدم حرف تحو Upperيمكنك هذا بجعل قيمة هذه الخاصية

تحول تلقائيا من صغيرة في هذا الشكل الحروف ت )٢-٦(انظر شكل . إلى حرف كبير

إلى حروف TxtUpperنص الذي اسمه لو أردنا تحويل حروف مربع الف، إلى كبيرة

:كبيرة أثناء التنفيذ سنكتب الكود التالي

٧٦

Page 50: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

TxtUpper.CharcterCasing = CharcterCasing.Upper

تتحول إلى bهذه الخاصية لحروف اللغة اإلنجليزية فقط فعندما يدخل المستخدم : مالحظة

B إذا كانت حالة األحرف Upper.

حالشر القيمة الخاصيةCharcterCasing Upper تحويل الحروف إلى كبيرة.

Lower تحويل الحروف إلى صغيرة. Normal ابقاء حالة الحرف كما أدخلها المستخدم.

الحظ حتويل احلروف إىل كبرية تلقائيا ٢-٦شكل

عندما تظلل نصا موجود في مربع النص وتنتقل من هذا المربع وتريد أن : اخفاء التظليل -٢

)٣-٦(الشكل انظر .لنص استخدم هذه الخاصيةيبقى التظليل حتى بعد انتقالك من مربع ا

الشرح القيمة الخاصيةHideSelection True إبقاء النص مظالال بعد اإلنتقال من مربع النص

False إخفاء التظليل بعد اإلنتقال من مربع النص

٣- ٤-

حاول أن تنقر خارج مربع النص والحظ بقاء التظليل٣-٦شكل

٧٧

Page 51: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

عندما تريد كتابة نص طويل أثناء التصميم في مربع النص ) : Lines(األسطر -٣

.تخدم هذه الخاصية لكتابة النص الطويلاس

انظر ( لمربع النص الحاويالكائنتمثل هذه الخاصية موقع مربع النص في : الموقع -٤

. للزاوية اليسرى العلوية لمربع النصY و Xوالموقع محدد بخانتي ) المالحظة التالية

Y و Xحاول تغيير مربع النص والحظ تغير قيم

قد يكون هذا الحاوي، النص يكون بالنسبة للحاوي الذي يحوي المربعموقع مربع: مالحظة

.يع أو نافذة أو غيرهممربع تج

الشرح القيمة الخاصيةLocation X موقع النقطة س للزاوية اليسرى العلوية.

Y موقع النقطة ص للزاوية اليسرى العلوية .

في مربع مكن إدخالها يحرف التي هذه الخاصية تحدد عدد األ: خاصية الحد األقصى -٥

.أثناء التصميم والتنفيذ وهي متوفرة ، النص

الشرح القيمة الخاصيةMaxLength اليوجد قيد على عدد األحرف المدخلة أو المعروضة ٠.

.هو الحد األعلى لعدد الحروف المدخلة لألداة رقم صحيح

. أداة النصب أو تعرض أكثر من سطر على ماذا لو أردت أن تكت: خاصية األسطر المتعددة -٦

. استخدم هذه الخاصية

الشرح القيمة الخاصيةMultiLine True امكانية تعدد األسطر في أداة النص.

False اليوجد إال سطر واحد للكتابة.

٧٨

Page 52: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

٧-PasswordChar : مثال . تستخدم هذه الخاصية إلظهار رمز معين بدال من النص المكتوب :

عندك شاشة ادخال الكلمة السرية فإنك التريد أن تظهر الحروف إنما تريد أن يظهر بدال لو كان

)٤-٦ (انظر الشكل. خرآمنها نجمة أو أي رمز

الشرح القيمة الخاصيةPasswordChar * تظهر لك نجمة بدل الحرف.

.تظهر لك عالمة استفهام بدل الحرف ؟

ر النجمة مع أنين أدخل حروفو الحظ ظه ٤0-٦شكل

نص معين للمستخدم بدون أن تمكنه من ض هذه الخاصية إذا أردت عرتستخدم: القراءة فقط -٨

.تعديله

الشرح القيمة الخاصيةReadOnly True أو ضلن يتمكن المستخدم من تعديل النص المعرو

.الكتابة على مربع النص False سوف يتمكن المستخدم من تحرير النص والكتابة

.على مربع النص

. Tab زر عند الضغط علىمربع النصبزيارة أو عدم زيارة تسمحخاصية هذه ال: التوقف -٩

الشرح القيمة الخاصيةTabStop True زيارة مربع النص عند ضغطTab .

False عدم زيارة مربع النص عند ضغطTab .

٧٩

Page 53: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

فسوف تتم زيارة مربع النص حسب الترتيب Trueإذا كانت قيمة هذه الخاصية : مالحظة

.)TabIndex( لخاصية اإلنتقال بين األدوات

وهذه الخاصية . اخفاء أداة ما اثناء التنفيذ يمكنك استخدام هذه الخاصيةتإذا أرد: الظهور -١٠

: عند التنفيذ اكتب الكود التالي txtNameإلخفاء مربع النص . تعمل عند التصميم والتنفيذTxtName.visible = False

الشرح القيمة الخاصيةVisible True اظهار األداة.

False اخفاء األداة.

إللتفاف النص التلقائي MultiLineتستخدم هذه الخاصية مع خاصية : اإللتفاف التلقائي -١١

متوفرة أثناء وهي. بمعنى أن يبدأ النص سطرا جديدا تلقائيا إذا وصل إلى نهاية السطر الحالي

.التصميم والتنفيذ

الشرح القيمة الخاصيةWordWrap True التفاف تلقائي.

False لن يحصل التفاف تلقائي وسوف تستمر الكتابة على

.نفس السطر

٨٠

Page 54: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

تطبيقات عملية على مربع النص

: ي سوف نورد تطبيق على أغلب خصائص مربع النص و شرح لها من خالل الكود التال النص مربع على بكم مرحبا صن عرض'

TextBox1.Text = "بكم مرحبا" جديد سطر فتح إىل يؤدي مما الرجوع زر ضغط من املستفيد ميكن سوف'

TextBox1.AcceptsReturn = True تاب زر ضغط بعد النص مربع إىل االنتقال قبول من ميكن سوف'

TextBox1.AcceptsTab = True سطر يف األوىل العبارة مع أخرى مرة بكم مرحبا عبارة دمج يتم سوف'

جديد TextBox1.AppendText(vbCrLf & "أخرى مرة بكم مرحبا")

أزرق إىل اخللفية لون تغيري' TextBox1.BackColor = Color.Blue

أسود إىل نصال لون تغيري' TextBox1.ForeColor = Color.Black

الصورة النص مربع خلفية جعل' TextBox1.BackgroundImage = Image.FromFile("C:\MyTextBoxBackground.gif")

احلدود منط تغيري' TextBox1.BorderStyle = BorderStyle.FixedSingle

النص مربع يف املوجود النص مسح' TextBox1.Clear()

النص مربع على مروره عند يد إىل الفأرة مؤشر تغيري' TextBox1.Cursor = Cursors.Hand

النص ملربع اخلط تغيري' TextBox1.Font = New Drawing.Font("Comic Sans MS", 12, FontStyle.Bold, GraphicsUnit.Pixel)

احلروف من عدد أقصى تعيني' TextBox1.MaxLength = 3000

االفرتاضية القيمة إىل النص إرجاع' TextBox1.ResetText()

النص مربع ميني إىل انزالق شريط إضافة' TextBox1.ScrollBars = ScrollBars.Vertical

حرفا 12 بطول البداية من النص تظليل يتم سوف' TextBox1.Select(0, 11)

النص مربع يف النص آل تظليل يتم سوف' TextBox1.SelectAll()

املظلل النص تساوي قيمته وتعيني متغري تعريف' Dim SelectedText As String = TextBox1.SelectedText

حرف أول من التظليل بدء' TextBox1.SelectionStart = 0

املظلل النص طول' TextBox1.SelectionLength = 11

النص مربع حجم تغيري' TextBox1.Size = New Size(300, 400)

نصال مربع منتصف يف النص عرض' TextBox1.TextAlign = HorizontalAlignment.Center

النص مربع يف املوجود النص طول قيمته متغري عرفنا' Dim i As Integer = TextBox1.TextLength

النص ملربع حترير آخر عن الرتاجع' TextBox1.Undo()

النص مربع إخفاء' TextBox1.Visible = True

نسخه مث النص آل اختيار' TextBox1.SelectAll()

٨١

Page 55: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

TextBox1.Copy() قصه مث النص آل اختيار'

TextBox1.SelectAll() TextBox1.Cut()

٨٢

Page 56: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

زر األمر

. يستخدم زر األمر في العادة لتنفيذ عمليات معينة بعد النقر عليهاستخدامه

- مثال–عندما يكون عندك مربع نص إلدخال اسماء الطالب استخدم زر األمر مثال

.لحفظ هذه البيانات في قاعدة البيانات كما سوف تتعلم إن شاء اهللا

: فيها نفس الكالم عن خصائص األداوات السابقة وهي هناك خصائص لزر األمر الكالم

Anchor ، Backcolor ، CauseValidate ، Contextmenu ، Curser ، Dock ،

Enabled ، Font ، ForeColor ، Locked ، Size ، TabIndex، TabStop ،Text ،

TextAlign ، Visible

ن وال في أداة العنوان وهي ماسنشرحه اآلوهناك بعض الخصائص التي التوجد في مربع النص

:بإسهاب

)١-٧(تستخدم هذه الخاصية لعرض صورة في مربع النص انظر الشكل : الخلفية -١

كما ذكرنا مسبقا لن نتطرق لجميع الخصائص ألن ذلك سيطول جدا وسيضيع الفائدة من هذا

. هدف هذا الكتابالكتاب إنما سوف نتكلم عن الخصائص التي تساعد في تحقيق الحظ الصورة على زر األمر١-٧شكل

٨٤

Page 57: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

،هذه الخاصية تحتفظ بقيمة نتيجة نافذة الحوار : DialogResult نتيجة نافذة الحوار -٢

نعم (لنفترض أن أمامك شاشة حوار فيها زري أمر . لنضرب لك مثاال حتى تتضح أكثر

فإنك لو نقرت على أي. للثاني Cancel لألول و Okوقيمة هذه الخاصية لهما ) ال/

منهما فسوف تغلق نافذة الحوار بدون الحاجة لكتابة أي أمر إلغالقها وكذلك سوف

.تستطيع معرفة أي زر اختاره المستخدم ألن هذه الخاصية سوف تحتفظ لك باختياره

لكي تصبح ShowDialogيجب أن تكون نافذة الحوار قد فتحت باستخدام األمر : مالحظة

.سوف نطبق هذه الخاصية تفصيليا في الفصل القادم فال تقلق إذا لم تستوعبها. نافذة حوار

الشرح القيمة الخاصيةDialogResult None إذا لم ترغب في استخدام هذه الخاصية.

Ok قيمة لهذه الخاصية. Cancel قيمة لهذه الخاصية.

صية لتغيير شكل زر األمر عندما تمرر الفأرة تستخدم هذه الخا:FlatStyleالنمط -٣

في الشكل . هناك ثالثة قيم لهذه الخاصية1.12عليه أو تضغط عليه بالفأرة انظر الشكل

يمكنك مالحظة الزر قبل المرور عليه بالفأرة وبعد المرور عليه بالفأرة لتعرف 1.12

هذه . ليمنى بعد مرورهامع مالحظة أن الجهة اليسرى قبل مرور الفأرة والجهة ا الفرق

.الخاصية متوفرة أثناء التصميم والتنفيذ

الشرح القيمة الخاصيةFlatStyle Flat ٢-٧(هو الشكل الثاالث في شكل.(

PopUP ٢-٧(في شكل هو الشكل الثاني.( Standard ٢-٧(في شكل الشكل األول.(

الحظ الفرق عند مترير الفأرة يف هذه اخلاصية٢-٧كل

٨٥

ش

Page 58: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

مربع اإلختيار

) خطأ/صح) (ال/نعم(يستخدم مربع اإلختيار لتحديد أو عرض أحد اإلختيارات مثل استخدامه

تفي هذه العالمة عند عدم اإلختيار خ عند اإلختيار و تفيظهر في األداة عالمة

. لة تعني عدم تحديد اإلختيارل مظوقد يكون هناك قيمة ثالثة وهي عالمة

صل باإلنترنت تأتيك نافذة فيها مربع خيار يسألك هل تريد حفظ الكلمة عندما تت مثال

.السرية عند الدخول في المرة القادمة

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

Anchor ، Backcolor، Background ،CauseValidate ، Contextmenu ،

Curser ، Dock ، Enabled، FlatStyle ،Font ، ForeColor ، Locked ، Size ،

TabIndex، TabStop ،Text ، TextAlign ، Visible

:ن بإسهاب وهناك بعض الخصائص التي التوجد في األدوات السابقة وهي ماسنشرحها اآل

هناك . ر تستخدم هذه الخاصية للتحكم في شكل مربع اإلختيا: الظهورطشكل أو نم -١

وهي متوفرة عند التصميم والتنفيذ. شكالن رئيسان حسب قيمة هذه الخاصية

الشرح القيمة الخاصيةAppearance Normal ١-٨(هو الشكل العادي كما في الشكل.(

Button ١-٨(يأخذ شكل زر األمر انظر شكل.(

الشكلني بني الحظ الفرق١-٨سكل

٨٧

Page 59: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

وهي متوفرة عند . تيار تلقائيا عند النقرتستخدم لتغيير حالة مربع اإلخ: اإلختيار التلقائي -٢

.التصميم والتنفيذ

الشرح القيمة الخاصيةAutoCheck True اختيار تلقائي عند النقر بمعن أنك سوف ترى عالمة

. عند النقر False يار مهما نقرت على مربع تلن تتم عملية اإلخ

.اإلختيار

انظر . ي في مربع اإلختيار يق المربع الذتستخدم هذه الخاصية لتنس: تنسيق اإلختيار -٣

وهي متوفرة عند ) . أعلى متوسط ( TopCenter عندما اخترنا القيمة )٢-٨(الشكل

.التصميم والتنفيذ

الشرح القيمة الخاصيةCheckAlign جميع اإلتجاهات

كما ترى في الشكل

)٣-٨(

عند اختيارك لتنسيق ما سوف يظهر ذلك

.ختيار التنسيق في مربع اإل

كما تالحظ كيف جاء املربع يف٢-٨كل سط

الحظ عندما اخترنا التنسيق الوسط العلوي كيف ٣-٨شكل ٢-٨ أثر ذلك يف شكل

٨٨

شالو

Page 60: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

أو لم ) (نستفيد من هذه الخاصية معرفة ما إذا كان المستخدم قد اختار : اإلختيار -٤

.وهي متوفرة عند التصميم والتنفيذ. يختر

الشرح القيمة الخاصيةChecked True قام المستخدم باإلختيار.

False المستخدم باإلختيارملم يق .

.نستفيد من هذه الخاصية معرفة حالة اإلختيار: حالة اإلختيار -٥

الشرح القيمة الخاصيةCheckState Unchecked المستخدم باإلختيارملم يق .

Checked قام المستخدم باإلختيار. Indeterminateغير محدد يعني لم يوافق ولم يرفض.

استخدام خاصية من نحتىتتمك ThreeState = Trueالبد أن تكون خاصية : مالحظة CheckState

تمكنك هذه الخاصية من وضع حالة ثالثة في مربع اإلختيار توجد في : الحاالت الثالث -٦

مثل عدم المعرفة أو التحفظ ( الغالب عندما اليستطيع المستخدم اإلختيار ألي ظرف ما

.)٤-٨(انظر الشكل ) عن اإلختيار أو غيرها

الشرح القيمة الخاصيةThreeState True ثالث حاالت لمربع اإلختيار.

False أو بدونهاحالتان فقط إما .

الحظ احلاالت الثالث ٤-٨كل

٨٩

ش

Page 61: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

)Radio Button(زر اإلختيار

تستخدم أداة زر اإلختيار إلعطاء الفرصة للمستخدم إلختيار واحد من عدة استخدامه

يمكن تجميع أداة زر اإلختيار في مجموعات ضمن اطار واحد وعند . اختيارات

ر المستخدم ألحدها يلغي النظام اختيار بقية أزرار اإلختيار في نفس اختيا

. المجموعة

. يوضح لك المثال )٥-٨(الشكل مثال

: وهي الكالم فيها نفس الكالم عن خصائص مربع اإلختيار بال فرق : خصائص زر اإلختيار

Anchor ،Appearance ، AutoCheck ، Backcolor، Background ،

CauseValidate ، CheckAlign ، Checked ، Contextmenu ، Curser ، Dock ،

Enabled، FlatStyle ،Font ، ForeColor ، Locked ، Size ، TabIndex،

TabStop ،Text ، TextAlign ، Visible

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

اليظهر لك الفرق واضحا بين مربع اإلختيار و زر اإلختيار والتفريق بينهما مهم جدا قد

الفرق بينهما هو أن المستخدم عندما يختار زر أمر ما فإن النظام . ألنه يؤثر على استخدامهما

يلغي اإلختيار عن جميع األزرار في نفس المجموعة لكن مربع اإلختيار يسمح لك باإلختيار

)٥-٨( انظر الشكلالمتعدد الحظ الفرق بني مربع اإلختيار و زر اإلختيار ٥-٨شكل

٩٠

Page 62: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الدرس الثاني

التدرب أكثر للتعامل مع فيجوال بيسك

برنامج األلوان

سوف نقوم في التدريب التالي للتدرب أكثر على فيجوال بيسك وسوف يكون الهدف

.التركيز على التعود أكثر في التعامل مع األدوات والخصائص واألحداث

وثالث أزرار -RadioButton–اختيار ثالث أزرار ليه إسوف نضيف ونموذج األدوات

انظر . وأداة عنوان ومربع تجميع لجمع األزرار الثالثة في إطار واحد أمر

)٦-٨(شكل

سوف تكتب في مربع النص ثم تنقر زر مرحبا ثم سينتقل . ستكون العملية كالتالي الناتج

لضغط على أي من أزرار الراديو عند ا. ماكتبته من مربع النص إلى أداة العنوان

يتغير لون النص الذي على أداة العنوان عند الضغط على زر حول البرنامج

" هذا هو البرنامج الثاني" تظهر لك رسالة

عند البدء في البرمجة التحاول استخدام الخاصية اإلفتراضية ألي كائن : مالحظة مهمة جدا

يجوال بيسك إذا أردت أن تظهر فمثال في اإلصدار السابق من . vb.netألنها التعمل في

برمجيا يمكنك كتابة العبارة التاليةtxtNameرسالة في مربع النص لنفترض أن اسمه

txtName.text = " مرحبا "

كذلك يمكنك عدم كتابة اسم الخاصية ألنها الخاصية اإلفتراضية فتستطيع كتابة العبارة بصورة

ا يليمكافئة كم

TxtName = مرحبا "

فاليمكن ذلك بل البد من كتابة العبارة كاملة مع vb.net أما في Text الحظ بدون الخاصية

. الخاصية

٩١

Page 63: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح التفصيلي الخطوة

وضع األداوت -١

.على النموذج

ثم ضع مربع ضع أداة العنوان ثم مربع النص ثم ثالثة أزرار أمر

.رار اختيار فوقه لكي تكون مجموعة واحدةالتجميع ثم ضع ثالثة أز

تغيير خصائص -٢

بعض األدوات

.)أثناء التصميم(

انظر الشكل غير خصائص األدوات لتصبح مطابقة للجدول التالي

)٦-٨(.

القيمة الخاصية اسم األداةForm1 Text “ البرنامج

"األول RightToLeftRight

RadioButton1Name rdbBlue Text أزرق

RadioButton2Name rdbRed Text أحمر

RadioButton3Name rdbGreen Text أخضر

GroupBox1 Name GrbColors Text ألوان

Label1 Name LblColor Text

Text1 Name txtColor

التصميم املبدئي لنموذج األلوان٤-٨شكل

٩٢

Page 64: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

Text Button1 Name cmdMove

Text نقل النص Button2 Name cmdExit

Text خروج Button3 Name CmeAbout

Text حول البرنامج

تغيير خاصية -٣

( لون الكتابة

ForColor ( ألداة

العنوان عند النقر

على أي من أزرار

األختيار ثم الحظ أن

تغيير اللون يتم عند

أثناء . (الحدث

)التنفيذ

I. ليواكتب التا. انقر مزدوج على زر اإلختيار األزرق lblColor.ForeColor = color.Blue

في هذه العبارة نالحظ أننا نغير قيمة خاصية لون الخط ألداة

لو أردت تغيير اللون الخلفي بدل لون الخط ضع . العنوان إلى أزرق

BackColor بدال من ForeColor .ارجع إلى شاشة التصميم

II .انقر مزدوج على زر اإلختيار األحمر واكتب التالي lblColor.ForeColor = color.red

III .انقر مزدوج على زر اإلختيار األخضر واكتب التالي lblColor.ForeColor = color.Green

نقل مايكتبه -٤

المستخدم من أداة

النص إلى أداة

العنوان وذلك بنقل

Textقيمة خاصية

في أداة النص

ووضعها في

ألداة Textخاصية

العنوان الحظ أن

واكتب التالي" نقل النص" انقر مزدوج على زر األمر lblcolor.Text = txtColor.Text

txtColor.Textفي هذه العبارة تالحظ أننا نأخذ قيمة الخاصية

lblcolor.Textونضعها في

افترض أن

txtColor.Text= ال أهال وسه

سوف تصبح قيمة lblcolor.Text = txtColor.Textبعد تنفيذ

lblcolor.Textأهال وسهال .

٩٣

Page 65: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

ملية النقل سوف ع

ر على قتتم عند الن

cmdMoveزر

أي عند حدث النقر

.لهذه األداة

عرض رسالة -٥

عن البرنامج

الدالة باستخدامMessageBox.Show مع شرح مبسط لهذه

الحظ أن . الدالة

عرض الرسالة

سوف يتم عند النقر

على زر األمر

cmdAbout.

وأكتب التاليcmdAboutمزدوج على زر األمر انقر MessageBox.Show("ألوان" ,"األلوان برنامج هو هذا", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

هذه العبارة سوف تظهر لنا رسالة مكتوب عليها هذا هو برنامج

. األلوان

. لرسالة يعني صندوق ا MessageBox.Showكما تالحظ األمر هو

. هذه هي دالة ولها ثالثة عوامل تحتاج إليها

MessageBox.Show ( الرسالة، عنوان الرسالة ، نوع الرسالة )

.وتكتب فيها الرسالة التي تريد اظهارها : الرسالة

. وسوف تظهر لك قائمة أنواع كثيرة تختار مايناسبك : نوع الرسالة

. ورسائل معلوماتيه مثال هناك رسائل تحذيريه ورسائل تأكيديه

وهي المعلوماتيه Informationونحن في هذا المثال اخترنا

. وأنصحك بتغيير نوع الرسالة عدة مرات لتعرف الفرق بينها

انهاء البرنامج -٦

ر على زر قعند الن

cmdExit.

انقر مزدوج على زر األمر خروج واكتب العبارة التالية -٦End

.كامالالبرنامج هذه العبارة سوف تنهي

٩٤

Page 66: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

تنفيذ البرنامج

نفذ البرنامج حسب الخطوات التالية

.أكتب في مربع النص أهال وسهال بكم -١

.انقر مره واحدة على زر األمر نقل النص ثم الحظ انتقال النص الى أداة العنوان -٢

.انقر زر اإلختيار أزرق مرة واحدة ثم الحظ تغير لون النص في أداة العنوان -٣

.هذا هو برنامج األلوان: ر حول البرنامج لتظهر لك الرسالة أنقر ز -٤

).٧-٨( يجب أن يكون الشكل مطابقا للشكل -٥

.انقر زر خروج ألنهاء البرنامج -٦

٤ إىل١ات منو امتام اخلط بعد٧-٨شكل

٩٥

Page 67: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

)List Box(أداة القائمة

للمستخدم على شكل ) بيانات(تستخدم أداة القائمة لعرض مجموعة من العناصر استخدامه

قائمة بحيث يتمكن من اختيار عنصر أو أكثر إن كان ذلك مسموحا انظر الشكل

)١-٩(

.إذا أردت عرض قائمة أسماء المدن أو اإلدارات أو غيرها من القوائم مثال

الحظ الشكل العام للقائمة١-٩شكل

: وهي الكالم فيها نفس الكالم عن خصائص مربع اإلختيار بال فرق:خصائص زر اإلختيار

Anchor ،Backcolor، BorderStyle ، CauseValidate ، Contextmenu ،

Curser ، Dock ، Enabled ، Font ، ForeColor،Location ، Locked ، Size ،

TabIndex، TabStop ،Visible

:بالتفصيلن بعض الخصائص التي التوجد في األدوات السابقة وهي ماسنشرحه اآلوهناك

يستطيع المستخدم تحديد عرض األعمدة في القائمة من خالل هذه : عرض العمود -١

.الخاصية

حتى تتمكن من استخدام هذه MultiColumn = Trueالبد أن تكون خاصية : مالحظة

.الخاصية

٩٧

Page 68: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

لشرحا القيمة الخاصيةColumnWidht النظام سوف يحدد عرض األعمدة صفر.

.عرض العمود في القائمة متعددة األعمدة عدد صحيح

تستخدم هذه الخاصية لتحديد مصدر العناصر التي ) : DataSource(مصدر البيانات -٢

.سوف تعرض في القائمة

. جدول أسماء اإلدارات من قاعدة بيانات : مثال لمصدر البيانات

إذا استخدمت خاصية مصدر البيانات وحددت ): DisplayMember(المعروض -٣

تحدد أي حقل من هذا أن ه القائمة فال بد ذجدول اإلدارات ليكون هو مصدر البيانات له

هذا الحقل الذي ) مثال قد تريد عرض اسماء اإلدارات( الجدول تريد أن يظهر للمستخدم

ماذا عن أرقام اإلدارات كيف تحصل . هذه الخاصيةتريد عرضه للمستخدم هو قيمة

.)القيمة( VauleMemberعليه ؟ يمكنك ذلك عن طريق الخاصية

هذه . أم تريد أن تتحكم به متحديد شكل القائمة هل ستتركه للنظا: شكل الظهور -٤

.الخاصية هي التي تحدد هذا األمر

الشرح القيمة الخاصيةDrawMode Normal سوف يحدد شكل عرض العناصر النظام

.)ارتفاعها( OwnerDrawFixed المستخدم سوف يحدد شكل عرض

مع مالحظةأن ) ارتفاعها(العناصر

اإلرتفاع سوف يكون هو نفسه لجميع

العناصر وذلك من خالل الخاصية

Height. OwnerDrawVariable المستخدم هو الذي يحدد شكل عرض

يع اعطاء طتستالعناصر مع مالحظة أنك

.ارتفاعات مختلفة للعناصر

٩٨

Page 69: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

تستخدم هذه الخاصية لتحديد ارتفاع ) : ItemHeight ( ارتفاع العنصر -٥

.العنصر في القائمة

إذا أردت أن تستخدم هذه الخاصية فالبد أن تكون قيمة خاصية شكل الظهور : مالحظة

أما . OwnerDrawVariable أو OwnerDrawFixedإحدى القيمتين التاليتين إما

. فإن النظام هو الذي يتحكم باإلرتفاع لذلك لن تستفيد من هذه الخاصية Normalقيمة

:عندنا هنا قيمتان لهذه الخاصية تبعا لقيمة خاصية شكل الظهور

I. الظهور شكل إن كانت قيمة خاصيةOwnerDrawFixed فسوف تكون قيمة

ر في أن إرتفاع العناصر هذه الخاصية ارتفاع العنصر في القائمة وأنت خبي

.سوف يكون موحدا في هذه الحاله

II. الظهور شكل إن كانت قيمة خاصيةOwnerDrawVariable فسوف تكون

في الفصول التطبيقية . خر عنصر تمت إضافتهآقيمة هذه الخاصية هي ارتفاع

.سوف تتمرن جيدا على استخدام هذه الخاصية

ن العناصر الموجودة في القائمة تعبر هذه الخاصية ع) : Items(العناصر -٦

إذا أردت أن تحمل العناصر أثناء . فكل عنصر بها هو أحد عناصر القائمة

التصميم فيمكنك ذلك من خالل هذه الخاصية انقر الزر الذي عليه ثالث نقاط

اكتب العناصر واضغط زر الرجوع بعد كتابة كل )٢-٩(ليظهر لك الشكل

لتظهر لك Ok في سطر جديد ثم انقر زر خرآعنصر لتستطيع كتابة عنصر

.)١-٩(القائمة بعناصرها كما في الشكل

كانت تلك طريقة تعبئة القائمة أثناء التصميم كذلك تستطيع تعبئتها بعد تنفيذ البرنامج من

.خر وهو ماسنشرحه في الفصل القادم آقاعدة بيانات أو من مصدر

. طريقة تعبئة القائمة أثناء التصميم٢-٩كل

٩٩

ش

Page 70: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

خاصية لتحديد ما إذا كانت هذه القائمة سوف تعرض تستخدم هذه ال: تعدد األعمدة -٧

.أكثر من عمود

الشرح القيمة الخاصيةMultiColumn True امكانية عرض عدة أعمدة.

False عمود واحد فقط.

لتحديد ColumnWidth استخدم خاصية Trueإذا كانت قيمة هذه الخاصية : مالحظة

.عرض العمود

تستخدم هذه الخاصية إلظهار شريط التمرير دائما : مرير الظهور الدائم لشريط الت -٨

.بغض النظر عن عدد العناصر في القائمة

الشرح القيمة الخاصيةScrollAlwaysVisibleTrue امكانية عرض عدة أعمدة.

False عمود واحد فقط. تيار يستطيع إخالمستخدمتستخدم هذه الخاصية لتحديد ما إذا كان : طريقة اإلختيار -٩

.عنصر أو أكثر أو اليستطيع إختيار أي عنصر

الشرح القيمة الخاصيةSelectionMode None اليستطيع المستخدم اختيار أي عنصر من

القائمة One يستطيع اختيار عنصر واحد فقط MultiSimple يستطيع اختيار أكثر من عنصر انظر

)٣-٩(شكل MultiExtendedانظر ر أكثر من عنصريستطيع اختيا

)٣-٩(شكل

اإلختيار (MultiExtendedو ) اإلختيار البسيط (MultiSimpleالفرق بين : مالحظة

إلختيار متعدد بعكس Ctrl و Shiftأن اإلختيار المطور يمكنك من استخدام زر ) المطور

.اإلختيار البسيط الذي يتوجب عليك النقر على كل عنصر إلختياره

١٠٠

Page 71: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

اإلختيار املتعدد٣-٩شكل

.تستخدم للترتيب التلقائي للعناصر: الترتيب -١٠

الشرح القيمة الخاصيةSorted True ترتيب حسب حروف الهجاء.

False ترتيب حسب تحميل العناصر في القائمة.

٣ارجع الخاصية : ValueMemberالقيمة -١١

١٠١

Page 72: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

)Combo Box(األداة المركبة

كأداة نص أو قائمة اأغرض منها أنه يمكن استخدامه داة لعدةتستخدم هذه األااستخدامه

.منسدلة أو قائمة عادية مثل أداة القائمة السابقة

أو إضافة . إذا أردت عرض قائمة أسماء المدن أو اإلدارات أو غيرها من القوائم مثال

.إدارات جديدة يمكنك ذلك عن طريق هذه الخاصية

بينما التي ستعرض قليللقائمة عندما يكون عدد العناصرفي الغالب تستخدم ا: مالحظة

.تستخدم القائمة المنسدلة إذا كان عدد العناصر ضخما

الكالم فيها نفس الكالم عن خصائص أداة القائمة مع زيادة : خصائص األداة المركبة

: وهي الخصائص التالية

ن عرضه عند انسدال أكبر عدد ممكن من العناصر يمك: العدد األقصى للعناصر -١

مع مالحظة أنك تستطيع الوصول لباقي العناصر )٤-٩(انظر الشكل . القائمة

.بواسطة أشرطة التمرير

= Style أو Style = DropDownالبد أن تكون خاصية : مالحظة

DropDownListحتى تتمكن من استخدام هذه الخاصية .

الشرح القيمة الخاصيةMaxDropDownItemsعدد العناصر عند انسدال القائمة د صحيحعد.

٢= عندما جعلنا قيمة العدد األقصى من العناصر املنسدلة٤0-٩شكل

١٠٢

Page 73: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

)٥-٩(انظر شكل .تستخدم للتحكم بشكل وأداء األداة المركبة: النمط أو الشكل -٢

.لمعرفة الفرق بين القيم الثالث لهذه الخاصية

الشرح القيمة الخاصيةStyle Simple تكون فيه األداة المركبة مشابهه لمربع

.النص DropDown تخدم كتابة نص سائمة منسدلة يستطيع المق

.في مكان التحرير DropDownList المستخدم ليس . أشبه ماتكون بأداة القائمة

.لديه إال خيار اإلختيار من القائمة

يظهر لك الفرق بني القيم الثالث خلاصية النمط٥-٩شكل

١٠٣

Page 74: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

)CheckedListBox(قائمة مربع الخيار

تخدم بالضبط كما تستخدم أداة القائمة لكن تس. تعتبر هذه األداة امتدادا ألداة القائمةااستخدامه

)٦-٩(كل عنصر من هذه األداة يبدوا كأنه مربع نص انظر الشكل

إذا أردت أن تعرض قائمة الطالب وتريد أن يظهر أمام الطالب الناجح عالمة مثال

)٦-٩(انظر الشكل . وأما الطالب غير الناجح فال يظهر بجانبه عالمة

تالفات في بعض الخصائص بين أداة القائمة وأداة قائمة مربع اإلختيار تبعا يوجد اخ: مالحظة

إلضافة مربع اإلختيار

الكالم فيها نفس الكالم عن خصائص أداة القائمة مع زيادة :قائمة مربع الخيارخصائص

: وهي الخصائص التالية

أكبر عدد :لعناصرالعدد األقصى لأهم خاصية يمكن ذكرها هنا هي خاصية

مع )٧-٩(انظر الشكل . ممكن من العناصر يمكن عرضه عند انسدال القائمة

.مالحظة أنك تستطيع الوصول لباقي العناصر بواسطة أشرطة التمرير

= Style أو Style = DropDownالبد أن تكون خاصية : مالحظة

DropDownListحتى تتمكن من استخدام هذه الخاصية .

قائمة مربع اخليار : ٦-٩شكل

١٠٤

Page 75: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح القيمة اصيةالخMaxDropDownItemsعدد العناصر عند انسدال القائمة عدد صحيح.

٢= عندما جعلنا قيمة العدد األقصى من العناصر املنسدلة٧-٩: شكل

١٠٥

Page 76: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الدرس الثالث

بداية حقيقية لكتابة البرامج

برنامج قائمة األسماء

سوف نقوم في التدريب التالي بداية التعامل مع القوائم وهي من األدوات المهمة الهدف

وف تتدرب أكثر على كتابة عبارات برمجية مما يعطيك س كذلك vb.netفي

. القدرة على بدء التفكير برمجيا

ار أمر وأداة و أربع أزر-ListBox–نموذج وسوف نضيف إليه مربع قائمة األدوات

)٨-٩(انظر شكل عنوان وأداة نص

ة النص ثم تنقر زر اضافة أو سوف تكتب اسم في أدا. ستكون العملية كالتالي الناتج

. ثم سينتقل ماكتبته من مربع النص إلى القائمة -Enter –تضغط زر الرجوع

ف يظهر في مربع النص ليمكنك من وعند الضغط على أي اسم من القائمة س

لحذف أي اسم . تعديله إذا أردت ثم ضغط زر تعديل ليعيده إلى القائمة بعد التعديل

مة ثم انقر على زر حذف ستظهر لك رسالة تأكيدية اختر اختر اإلسم من القائ

Yes للحذف أو No انظر . للخروج انقر على زر خروج. إللغاء أمر الحذف

)١٠-٩( و )٩-٩(الشكلين

١٠٦

Page 77: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح التفصيلي الخطوة وضع األدوات - ١

وتعديل الخصائص

المطلوبة أثناء

التصميم

ابقة للجدول التالي انظرغير خصائص األدوات لتصبح مط

)٨-٩(الشكل

القيمة الخاصية اسم األداةLabel1 Name LblName

Text االسم Text1 Name txtName

Text Button1 Name cmdAdd

Text اضافة Button2 Name cmdUpdate

Text تعديل Button3 Name CmdDelete

Text حذف Button4 Name CmdExit

Text خروج ListBox Name LstName

Form1 RightToLeft Right AcceptButtoncmdAdd BackColor Moccasin

ن نحن نريد اآل- ٢

إضافة مايكتبه البدء في البرنامج

بدء التعامل مع القوائم:٨-٩شكل

١٠٧

Page 78: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

المستخدم في مربع

األمر إلى أداة القائمة

ليصبح عنصرا من

لكي نفعل . عناصرها

ذلك البد من أربع

: أوال وهي خطوات

التأكد من أن

المستخدم كتب شيئا

ثانيا . في مربع النص

. عملية اإلضافة:

مسح ماهو :ثالثا

موجود في مربع

النص إلضافة عنصر

التركيز : أخيرا . خرآ

على مربع النص

.استعداد للكتابة

:واكتب التالي. افةضانقر مزدوج على زر اIf txtname.Text <> "" Then lstname.Items.Add(txtname.Text)

txtname.ResetText()

txtname.Focus() End If

نتأكد من أن المستخدم أدخل اسم في مربع السطر األول في

ألنها هي التي تحوي Textفنتأكد عن طريق الخاصية . النص

فيعني أن المستخدم لم يدخل "" كانت مايدخل في مربع النص فإذا

.شيء

بالطبع البد . لإلضافة للقائمة Add نستخدم الدالة السطر الثانيفي

في مثالنا هذا نحن نريد اضافة . أن تعطي هذه الدالة ماتريد اضافته

االسم الذي يدخله المستخدم في مربع النص لذلك أعطينا هذه الدالة

Textهو موجود في الخاصية االسم الذي أدخله المستخدم و

والتي تزيل االسم ResetText استخدمنا الدالة السطر الثالثفي

خرآالموجود في مربع النص لكي نتمكن من ادخال اسم

لكي يعود المؤشر إلى Focusتخدمنا الدالة س االسطر الرابعفي

خرآمربع النص لنتمكن من كتابة اسم

If جملة الشرط األخير نغلقالسطر

اظهار العنصر - ٣

الذي يختاره المستخدم

من القائمة في مربع

النص

انقر مزدوج على القائمة واكتب التاليtxtname.Text = lstname.SelectedItem.ToString

في مربع النص العنصر الذي اختاره نعرض السابقةفي العبارة

الحدث عندألننا نكتب هذه العبارة . المستخدم

SelectedIndexChanged فإن قيمة مربع النص تتغير كلما

.غير المستخدم االسم الذي يختاره

نقر المستخدم على االسم محمد ظهر لنا في مربع النص محمد فلو

. ثم نقر على خالد ظهر لنا خالد

يتم تنفيذه كلما SelectedIndexChangedالحدث : مالحظه

١٠٨

Page 79: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

رة أو األسهم أو أفآخر سواء بالانتقل المستخدم من عنصر إلى

.أي طريقة كانت

تعديل أحد عناصر - ٤

القائمة يتم بأربع

التأكد : أوال . خطوات

من أن المستخدم

اختار عنصرا من

: ثانيا . القائمة لتعديلة

حذف العنصر من

ثالثا وضع . القائمة

العنصر الجديد بدال

مسح : أخيرا . منه

ماهو موجود في

مربع النص

زر التعديل واكتب التاليانقر مزدوج على If lstname.SelectedIndex <>-1 Then

lstname.Items.Remove(lstname.SelectedIndex) lstname.Items.Add(txtname.Text) txtname.ResetText() End If

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

إذا لم ١– تكون SelectedIndexل األول أن قيمة صتذكر من الف

. يختر المستخدم أي عنصر

لحذف عنصر من Removeفي العبارة الثانية نستخدم الدالة

د من البديهي أن هذه الدالة تطلب رقم العنصر الذي نري. القائمة

وأنت تعلم أن . حذفه

تعطينا رقم العنصر الحالي lstname.SelectedIndex العبارة

.أي الذي نقر عليه المستخدم لذلك فنحن نرسله إلى هذه الدالة

وهيفي العبارة الثالثة تنظيف مربع النص

txtname.ResetText()

حذف عنصر من - ٥

خطوتان . القائمة

. مليةإلتمام هذه الع

أوال التأكد من أن

المستخدم يريد حذف

. العنصر من القائمة

.عملية الحذف: ثانيا

Dim s As String s = txtname.Text " هل أنت متأكد من حذف "& If MessageBox.Show(s ،"حذف: تحذير "، MessageBox.YesNo + MessageBox.IconQuestion) _ = DialogResult.Yes Then lstname.Items.Remove(lstname.SelectedIndex) End If

١٠٩

Page 80: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

في العبارة األولى نعرف متغير لحفظ الرسالة التحذيرية قبل حذف

.االسم

في العبارة الثانية نحفظ االسم الحالي الموجود في مربع النص باإلضافة

اختار المستخدم من القائمة اسم أحمد مثال لو . إلى الجملة التحذيرية

فإذا نقر المستخدم على زر حذف فستكون . فإنه سيظهر في مربع النص

كما تعرف أن قيمة الخاصية . العباره هل أنت متأكد من حذف أحمد

Text استخدمنا اإلشارة ببى أنه نص ولهذا السن هي قيمة نصية بمع &

. وهي إلضافة نص إلى نص

للحذف فإذا ضغط ةظهر للمستخدم رسالة تأكيديتة سوف العبارة الثالث

. فذفسوف يتم الح Yesزر

.العبارة الرابعة سبق توضيحها وسوف تقوم بعملية الحذف

في النموذج معناها أن هذا الزر الذي هو AcceptButtonخاصية : مالحظة

cmdAdd ي لوحة سيكون هو الزر اإلفتراضي بمعنى عندما أضغط زر الرجوع ف

وهذا يفيد عندما يكون . بالفأرة-cmdAdd– كأني نقرت هذا الزر -Enter–المفاتيح

هناك حاجة لسرعة التعامل مثل أن تكون البيانات كثيرة فال أحتاج كل مره أن أنقر زر

ولن AcceptButtonفقط اجعل الزر الذي تريد هو . اإلضافة بالفأرة مما يسبب البطء

.ثالنا هذا فقط اكتب االسم واضغط زر الرجوع وسوف يضيفه للقائمةفي م. تحتاج للفأرة

تنفيذ البرنامج

:نفذ البرنامج حسب الخطوات التالية

.أكتب في مربع النص أحمد ثم انقر اضافة أو اضغط زر الرجوع -١

.أكتب في مربع النص خالد ثم انقر اضافة أو اضغط زر الرجوع-٢

. انقر اضافة أو اضغط زر الرجوعأكتب في مربع النص مساعد ثم-٣

.أكتب في مربع النص دخيل ثم انقر اضافة أو اضغط زر الرجوع-٤

.)٩-٩(ن الحظ أن االسماء التي كتبتها اضيفت إلى القائمة انظر الشكل حتى اآل

١١٠

Page 81: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

.اختر أحد االسماء من القائمة والحظ أنه يظهر في مربع النص-٥

.م الحظ أن مربع النص يتغيراختر اسم ثاني وذلك بالنقر عليه ث-٦

غير هذا االسم في مربع النص ثم انقر زر تعديل والحظ انه يتغير في -٧

.القائمة

.)١٠-٩(انقر زر حذف ستظهر لك الرسالة كما في شكل -٨

.انقر زر خروج ألنهاء البرنامج-٩

اضافة امساء إىل القائمة٩-٩شكل مة حذف اسم من القائ١٠-٩شكل

١١١

Page 82: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الدرس الرابع

التعامل مع ثالثة أنواع من القوائم تائج امتحان الطالببرنامج ن

التعامل مع ثالثة أنواع من القوائم وهي مربع بسوف نقوم في التدريب التالي الهدف

vb.netوهي من األدوات المهمة في . القائمة واألداة المركبة و قائمة مربع الخيار

.خصوصا لمن يريد التعامل مع قواعد البيانات

و أداة مركبة و قائمة مربع -ListBox–ئمة مربع قا ليهسوف نضيف إ ونموذج األدوات

-٩ (شكل انظر . وأداة نص عنوانواتأداسبع و أمر أزرار أربعوالخيار

١١(

سوف تكتب اسم في أداة النص ثم تنقر زر إضافة أو . ستكون العملية كالتالي الناتج

القائمة من مربع النص إلى ه ثم سينتقل ما كتبت-Enter –تضغط زر الرجوع

لحذف أي اسم اختر اإلسم من القائمة ثم انقر على زر حذف . ذات العالمة

عند . إللغاء أمر الحذف No للحذف أو Yesستظهر لك رسالة تأكيدية اختر

اإلنتها من كتابة األسماء انقر على اسم الطالب الناجح مرة واحد مما يؤدي إلى

. جوار االسم لكي تظهر عليه عالمة تظليل هذا اإلسم انقر على المربع الذي ب

في النهاية انقر زر توزيع لكي ينقل . ضع هذه العالمة امام الطالب الناجحين

الطالب الناجحين إلى مربع القائمة والطالب غير الناجحين إلى األداة المركبة

ويظهر لك على أدوات العنوان عدد الطالب الكلي وعدد الناجحين وعدد

)١٢-٩(انظر الشكل . روج انقر على زر خروجللخ. الراسبين

١١٢

Page 83: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

الشرح التفصيلي الخطوة وضع -١

األداوت على

النموذج

وجدول الخصائص)١١-٩( ضع األدوات كما هو موضح في شكل

تعديل -٢

الخصائص

المطلوبة أثناء

التصميم

)١١-٩( الشكل انظردوات لتصبح مطابقة للجدول التالي غير خصائص األ

القيمة الخاصية اسم األداةLabel1 Name LblName

Text االسم Label2 Name lblSuccess

Text عدد الناجحين Label3 Name lblFail

Text عدد الراسبين Label4 Name lblAll

Text عدد الطالب Label5 Name Label5

Text جميع الطالب Label6 Name Label6

Text الناجحون Label7 Name Label7

Text الراسبون Text1 Name txtName

Text Button1 Name cmdAdd

ثالثة أنواع من القوائم :١١-٩شكل

١١٣

Page 84: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

Text اضافة Button2 Name cmdUpdate

Text حذف Button3 Name CmdMove

Text توزيع Button4 Name CmdExit

Text خروج ListBox1 Name LstSuccess

ComboBox1 Name cboFail CheckedListBoxName chsAll

Form1 RightToLeft Right AcceptButtoncmdAdd BackColor Moccasin

إضافة -٣

عنصر إلى

قائمة مربع

ويقال . الخيار

ما فيه مثل

في إضافة لقي

عنصر إلى

القائمة

I. واكتب التالي. انقر مزدوج على زر إضافة

If txtName.Text <> "" Then chsAll.Items.Add(txtName.Text) txtName.Focus() txtName.ResetText() Else MessageBox.Show( " يجب كتابة اسم في مربع النص"، "تنبيه "، MessageBox.OK) End If

II.نستخدم الدالة . د من أن المستخدم أدخل اسما في مربع النص بعد التأك

Add في مثالنا هذا . إضافتهدبالطبع البد أن تعطي هذه الدالة ما تري. لإلضافة للقائمة

نحن نريد إضافة االسم الذي يدخله المستخدم في مربع النص لذلك أعطينا هذه الدالة

Textخاصية االسم الذي أدخله المستخدم وهو موجود في ال

chsAll.Items.Add(txtname.Text)

١١٤

Page 85: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

III. في حالة أن المستخدم لم يدخل اسم في مربع النص لن يتم تنفيذ مايندرج

لذلك سوف تظهر رسالة للمستخدم تخبره أنه Else وسينفذ بدال منه مابعد Ifتحت

.يجب أن يكتب اسم في مربع النص

حذف -٤

عنصر من

القائمة

I. قر مزدوج على زر حذف واكتب التاليان Dim s As String If chsAll.SelectedIndex <>-1 Then s " = هل أنت متأكد من حذف " & chsAll.SelectedItem.ToString If MessageBox.Show(s ، _"حذف: تحذير "، MessageBox.YesNo + MessageBox.IconQuestion) _ = DialogResult.Yes Then chsAll.Items.Remove(chsAll.SelectedIndex) End If End If

II. نعرف متغيرsتحذير من الحذف ال نص يحفظ من نوع نص لكي

.باإلضافة إلى العنصر الذي يريد المستخدم حذفه

III. أن هناك اسم مختار في القائمة وذلك بالتأكد من قيمة الخاصية نتأكد من

chsAll.SelectedIndex عرفنا أن المستخدم لم ١- فإذا كانت قيمتها

.يختر شيئا

IV. بعد تحويله إلى -يتم في العبارة التالية دمج العنصر الذي اختاره المستخدم

: كما يلي مع الرسالة التحذيرية–نص

s " = د من حذف هل أنت متأك" & chsAll.SelectedItem.ToString

ومن ثم اظهار الرسالة للمستخدم

V. يتم حذف العنصر من المجموعة وذلك باستخدام الدالةRemove وهذه

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

chsAll.SelectedIndex المظلل– وهو رقم العنصر المختار -.

١١٥

Page 86: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

يع توز-٥

الطالب إلى

ناجحين

. وراسبين

فالمربع الذي

أمامه عالمة

X سوف

يكون ناجحا

وسيذهب إلى

.القائمة

I. انقر مزدوج على زر األمر توزيع Dim i As Integer Dim intSuccess As Integer Dim intFail As Integer Dim intAll As Integer cboFail.Items.Clear() lstSuccess.Items.Clear() For i = 0 To (chsAll.Items.Count – 1) If chsAll.GetItemChecked(i) = True Then lstSuccess.Items.Add(chsall.Items(i)) intSuccess = intSuccess + 1

intAll = intAll + 1 Else cboFail.Items.Add(chsall.Items(i)) intFail = intFail + 1 intAll = intAll + 1 End If Next lblSuccess.Text = lblSuccess.Text & " = " & intSuccess lblFail.Text = lblFail.Text & " = " & intFail lblAll.Text = lblAll.Text & " = " & intAll

II. أول هذه المتغيرات، عرفنا أربعة متغيرات I عداد و الهدف منه أن يكون

عدد الراسبين ب لنحتفظ intAll و intSuccess و intFail. في التكرار

.والعدد الكلي للطالبوالناجحين

III. نحذف جميع العناصر الموجودة في القائمة واألداة المركبة وذلك فيما لو

ويكون حذف جميع العناصر عن طريق . كان هناك عناصر مسبقا

. clearالخاصية

IV. تبدأ عملية التكرار للتأكد من حالة العناصر فكل عنصر قد وضع امام

الحظ أن عداد . ذلك راسب فهو ناجح والعنصر الذي بخالف مربعه

يعني لو كان العدد الكلي chsAll.Items.Count – 1التكرار ينتهي إلى

للعناصر ستة فنهاية التكرار خمسة لكن لو الحظت بدايته فهي من صفر

. معنى ذلك أنه ستكرر ست مرات

V. سوف يمكننا التكرار من المرور على جميع العناصر عنصر عنصر

للتأكد من قيمتها If chsAll.GetItemChecked(i) = True Then

هي التي تخبرنا هل العنصر chsAll.GetItemChecked(i)الحظ أن خاصية

. فهذا يدل أن أمامها عالمة Trueفإذا كانت قيمة هذه الخاصية . أو ال أمامه

١١٦

Page 87: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد اجلديع

تزيد كل مره حتى نصل Iطبعا تالحظ أننا نمر على جميع العناصر ألن قيمة

.خيرللعنصر األ

VI. تتم عملية اضافة العناصر ذات العالمة إلى القائمة والتي ليس أمامها

.عالمة إلى األداة المركبة

وإن لم intSuccessكما تالحظ إن كان أمام العنصر عالمة أضفنا واحد إلى قيمة

وفي كلتا الحالتين نضيف واحد إلى intFailيكن أمامه عالمة أضفنا واحد إلى قيمة

. ثم نعرضها على أدوات العنوان intAllقيمة

تنفيذ البرنامج

:نفذ البرنامج حسب الخطوات التالية

.أكتب في مربع النص خالد ثم انقر اضافة أو اضغط زر الرجوع -١

.أكتب في مربع النص محمد ثم انقر اضافة أو اضغط زر الرجوع -٢

.لرجوعأكتب في مربع النص أحمد ثم انقر اضافة أو اضغط زر ا -٣

.أكتب في مربع النص عبدالرحمن ثم انقر اضافة أو اضغط زر الرجوع -٤

.أكتب في مربع النص عبداهللا ثم انقر اضافة أو اضغط زر الرجوع -٥

أكتب في مربع النص عمرثم انقر اضافة أو اضغط زر الرجوع -٦

الرجوع أو ن الحظ أن االسماء التي كتبتها تضاف إلى القائمة إما بضغط زرحتى اآل

النقر على اضافة

.انقر مره واحده على اسم محمد والحظ أنه تظلل -٧

.انقر على المربع الذي على يمين محمد والحظ ظهور العالمة -٨

. كرر الخطوتين السابقتين بالنسبة لعبدالرحمن وعمر -٩

. )١٢-٩(يجب أن يظهر لك شكل -١٠

.انقر زر خروج ألنهاء البرنامج -١١

استخدام القائم الثالث :١٢-٩شكل

١١٧

Page 88: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

التعامل بشكل جيد مع النموذجسوف نحاول . لقد حصل تغير في طريقة التعامل مع النموذج بين االصدار السادس و الدوت نت

.أن نتكلم عن أبرز مايهم المستفيد عند تعامله مع النموذج من خالل أمثلة تقرب الفكرة

نموذج أضف ثم Form1قم بإضافة نموذج إلى المشروع ليكن اسمه : كيفية فتح نموذج -١

.ارجع إلى النموذج األول و أضف زر أمر إلى النموذج. Form2ثاني و ليكن اسمه

انقر مزدوجا على زر األمر لتنتقل إلى الكود الخاص بحدث النقر الخاص بالنموذج و

:اكتب الكود التالي

Private Sub Button1_Click(ByVal Sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim frm2 As New Form2() frm2.Show() End Sub

: في الكود السابق قمنا بما يلي

I. تعريف متغير من نوعForm2.

II. عرض نموذجForm2.

III. حاول تشغيل المثال و انقر على زر األمر والحظ أنه يفتح نموذج عند كل نقره.. الحظت في المثال السابق أنه كلما نقرت على زر األمر : رهمنع عرض النموذج أكثر من م-٢

ماذا لو أردت أن يتم عرض النموذج مره واحدة فقط مهما نقر ، عرض لك نفس النموذج

: الكود التالي يوضح لك الفكرة . المستخدم على زر األمرPrivate frm2 As Form2 Private Sub Button1_Click(ByVal Sender As Object, ByVal e AsEventArgs) Handles Button1.Click If IsNothing(frm2) = False Then If frm2.IsDisposed = False Then Else frm2 = New Form2() frm2.Show() End If Else frm2 = New Form2() frm2.Show() End If End Sub

Page 89: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: في الكود السابق قمنا بالخطوات التالية

.Instanceفقط تعريف بدون إنشاء نسخة منه ، Form2عرفنا متغير من نوع -١

.Isnothing غير موجود اطالقا من خالل عبارة ٢قمنا بالتأكد من أن نموذج -٢

.Isdisposed من خالل عبارة مهلك من أنه نا تأكدثم -٣

.نقوم بعرضهبعد ذلك إذا انتفت الشروط السابقة -٤

إرسال المتغيرات بين النماذج -٣يوجد عدة طرق إلرسال . قد تريد أن تعين قيمة لمتغير في نموذج و تسترجعها في نموذج آخر

ومنها الطريقة التالية Moduleمتغير بين نموذجين منها تعريف المتغير على أنه متغير عام في

: التي سنوضحها من خالل الكود التالي

وهو تعريف للمتغير و يجب أن يكون على مستوى النموذج Form1لكود يجب أن يكون في هذا ا

: Public PassingVar As String

:١ إلعطاء قيمة للمتغير الذي عرفناه في نموذجForm2الكود التالي يكون في نموذج Dim myForm As Form1 myForm.myVar = "٢هذه القيمة مت تعيينها يف منوذج"

تغيير موقع النموذج في الشاشة -٤ وهي أحد خصائص DesktopLocationلتغيير موقع النموذج في الشاشة استخدم خاصية

: فإذا أردت نقل النموذج إلى الجزء العلوي الشمالي من الشاشة استخدم المثال التالي . النموذجMe.DesktopLocation = New Point(0, 0)

Page 90: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

إنشاء القوائممن أهم فوائد القوائم هي تنظيم و . عتبر استخدام القوائم معيارا اساسيا في كثير من األنظمةي

توفر لنا بيئة الدوت نت طريقة سهلة جدا إلنشاء . تسهيل الوصول إلى وظائف النظام المختلفة

من في بيئة الدوت نت انتقلت القوائم لتصبح أداة مثل األدوات األخرى تستطيع إضافتها.النظام

.)١-١١( من الشكل كما ترىمربع األدوات عن طريق السحب و االفالت

أداة القوائم : ١-١١شكل

الفرعية يمكن أن ينفذ أمرا ما مثل كل واحد من هذه القوائم

. )٢-١١(ميم قائمة كما يظهر لك من الشكل

ت نت

بها و افالتها في النموذج أو بالنقر المزدوج عليها ليظهر لك

تتكون القائمة من عدة قوائم فرعية

سوف نقوم بتص. استدعاء نموذج آخر

تصميم القوائم في بيئة الدو : ٢-١١شكل

: اتبع الخطوات التالية لتصميم القوائم

أداة القوائم و ذلك بسحأضف -١

)٣-١١(الشكل

بعد إضافة أداة القائم للنموذج: ٣-١١شكل

Page 91: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

المربع الصغير الذي ظهر لك مرة واحدة واكتب كلمة ملف كما يظهر من انقر -٢

)٤-١١(الشكل

طريقة إضافة قائمة رئيسية أو فرعية :٤-١١شكل

يمثل هذا . لن و اآلخر إلى أسفان آخران أحدهما على اليمي

قم بالنقر على القائمة اليمنى واكتب مساعدة . اسم القائمة األخرى

٥-١(.

أخرى رئيسية عند إضافة قائمة رئيسيةظهور قائمة فرعية و :٥-١١

. عنوان البرنامج تظهرلمساعدةلع قائمة فرعية

زدوجا عليها لكي تنتقل إلى الحدث الخاص ية لقائمة ملف و انقر م

: تالي Dim frm2 As New Form2() frm2.Show()

شغل النظام ثم اختر . Form2ض أن هناك نموذجا آخر اسمه

. ثم انقر عليها ليتم فتح هذا النموذج

لك مربعيظهر سوف -٣

المربعان مكانان لكتابة

١(كما ترى من الشكل

شكل

ض

ع

ال

٢

ثم أكمل بقية القوائم -٤

اذهب إلى القائمة الفر -٥

بنقرها ثم اكتب الكود

الحظ أن هذا الكود يفتر

القائمة الفرعية فتح نموذج

Page 92: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Timerت يوقتأداة الفإذا أردت مثال أن . تستخدم أداة التوقيت لتنفيذ عمل ما كل فترة زمنية أو عند وقت معين

أهم خصائص هذه . تعمل نسخ احتياطي للملفات كل يوم فإن أداة التوقيت ستكون خيار جيد

قم . لدقات الوقت)Millisecond (تمثل الفترة بالملي ثانية و Intervalاألداة هي خاصية

و هو أهم أحداث هذه ()Tickكتابة الكود الذي تريد تنفيذه كل فترة من الزمن داخل الحدث ب

أما إذا أردت إيقاف ، وهي أحد طرق أداة التوقيتStartقت استخدم الطريقة ؤلبدء الم. األداة

.Stopهذه األداة فاستخدم الطريقة

برنامج الساعة

سوف يكون لدينا زر أمر و . مثل ساعةفي هذا البرنامج سوف نقوم ببناء برنامج ي

عند النقر على زر األمر سوف يتم تشغيل أداة التوقيت و التي ، و أداة توقيت أداة عنوان

)٦-١١( أضف األدوات التي تظهر في الشكل.ستقوم بعرض الساعة على أداة العنوان تصميم برنامج الساعة :٦-١١شكل

:صائص التالية

ةالقيمcmdStartStop تشغيل الساعة

lblClock

Timer1 1000

برنامج الساعة

أعط األدوات الخ -١

الخاصية اسم األداةButton1 Name

Text

Label1 Name Text

Timer Name Timer Interval Form Text

Page 93: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ملي ثانية و يساوي ثانية واحدة وهو ما ١٠٠٠ هي Interval الحظ أن قيمة خاصية

.تنفيذه كل ثانية سيتم Tick الحدث يعني أن الكود داخل : قم بالنقر المزدوج على زر األمر و أضف الكود التالي -٢

If Not Timer1.Enabled Then Timer1.Start()

Button1.Text = "الساعة إيقاف" Else Timer1.Stop()

Button1.Text = "الساعة تشغيل" End If

الحظ أنه يقوم بالتأكد من تشغيل أداة التوقيت ، يقوم هذا الكود بتشغيل أو إيقاف أداة التوقيت

Stop للتشغيل و Start ثم يستخدم الطريقة Enabledأو إيقافها من خالل الخاصية

.لإليقاف

ث سوف تنتقل إلى الحد، ارجع إلى شاشة مصمم النماذج ثم انقر مزدوجا على أداة التوقيت-٣

Tickاكتب الكود التالي . وهو أحد أحداث هذه األداة : Label1.Text = "الساعة = " & TimeString

يتم Tickالحدث و نظرا ألن ، في هذا الكود نقوم بعرض الوقت الحالي على أداة العنوان

أداة العنوان كل ثانية مما يعني أنك سوف ىتنفيذه كل ثانية فإنه سوف يتم عرض الساعة عل

)٧-١١(تشاهد ساعة كما يظهر من الشكل

تنفيذ برنامج الساعة :٧-١١شكل

Page 94: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

DateTimePicker و التاريخأداة الوقتتستخدم هذه األداة لعرض الوقت بشكل جميل على شكل تقويم آما تقوم بحفظ التاريخ الذي تم

:أهم خصائص هذه األداة هي . اختياره من قبل المستخدم

الشرح الخاصيةMinDate أقل قيمة يمكن اختيارها من التقويم. MaxDate أآبر قيمة يمكن اختيارها من التقويم.

ShowCheckBox إذا أردت عرض مربع اختيار في األداة. Value التاريخ الذي تم اختيار.

تب أنقر مزدوجا على زر األمر ثم اك. أضف زر أمر و أداة الوقت و التاريخ

: الكود التالي DateTimePicker1.MinDate = New DateTime(1985, 6, 20) DateTimePicker1.MaxDate = DateTime.Today DateTimePicker1.ShowCheckBox = True MessageBox.Show(DateTimePicker1.Value)

ار أي تاريخ يتجاوز الحظ أننا عينا قيمة دنيا و عليا ألداة الوقت و التاريخ فلو حاولت اختي

.)٨-١١( انظر شكل هاتين القيمتين فلن تسمح لك األداة

أداة الوقت و التاريخ : ٨-١١شكل

Page 95: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

العامةأدوات الحوار : للحوار العام وهي أدوات لنا بيئة الدوت نت ستتقدم

.أداة الحوار لفتح الملفات -١

.أداة الحوار لتغيير الخط -٢

.أداة الحوار لتغيير اللون -٣

.اتأداة الحوار لحفظ الملف -٤

.أداة الحوار إلعداد الصفحة -٥

.أداة الحوار للطباعة -٦

تتشابه بعض هذه األدوات فيما بينها بطريقة التعامل معها فبمجرد أن تتعامل مع واحدة من هذه

سوف نتعرض ألول ثالث أدوات . األدوات حتى يصبح التعامل مع باقي األدوات مجرد وقت

.ونترك الثالث الباقية لك

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

يذكر أنه حصل تطور كبير بين هذه األداة في ، الخصائص و الطرق جعلت التعامل معها سهال

.االصدار السادس و في بيئة الدوت نت

كما Picturebox الملفات و أداة صورة في هذا المثال قم بإضافة أداة الحوار لفتح

:يظهر من الخصائص التالية القيمة الخاصية اسم األداةButton1 Name cmdOpenPicture

Text فتح صورة Picturebox Name pb

OpenFileDialogName ofd

Page 96: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:الكود التاليأضف انقر مزدوجا على زر األمر ثم With ofd .CheckFileExists = True .ShowReadOnly = False .Filter = "All Files|*.*|Bitmap Files (*)|*.bmp;*.jpg" .FilterIndex = 1 If .ShowDialog = DialogResult.OK Then pb.Image = Image.FromFile(.FileName) End If End With

: في الكود السابق قمنا بالخطوات التالية

. حتى النعيد كتابة اسم أداة الحوار كل مرةWithاستخدم عبارة -١

.استخدمنا خاصية التأكد من وجود الملف قبل فتحه -٢

.منعنا إظهار الملفات التي للقراءة -٣

و Bmpالملفات التي من نوع حددنا أنواع الملفات التي ستظهر في مربع الحوار وهي -٤

Jpg وكل الملفات في حالة اختيار All Files.

من مربع الحوار سوف نقوم بعرض الصورة التي اختارها على Okإذا اختار المستفيد -٥

.أداة الصورة

بعد التشغيل و النقر على زر فتح الصورة)٩-١١(انظر الشكل

ع الحوار بالطريقة ب لمرFile Of Typeفي نوع الملفات التي تريد ترشيح تتم عملية

ثم نوع . ثم * ثم | ثم عالمة File Nameاالسم الذي تريد أن يظهر وهو في حالتنا : التالية

. ثم تبدأ ترشيح آخر بنفس الطريقةBmpالملف مثل اختيار ملف من نافذة احلوار :٩-١١شكل

Page 97: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

أداة الحوار لتغيير الخطأردت تغيير الخط الموجود على فإذا ، تستخدم هذه األداة لتغيير الخط المكتوب على أداة ما

مربع نص أو زر أمر فاستعمل هذه األداة لتغيير الخط وذلك بتعيين خاصية الخط في األداة

أنت خبير بأنك . التي تريد أن تغيير خطها إلى الخط الذي تم اختياره في أداة حوار الخط

.ذا النموذجعندما تغير خط النموذج فإن ذلك يؤدي إلى تغيير خط كل األدوات على ه

قم بإضافة أداة عنوان و زر أمر و أداة حوار الخط ثم انقر مزدوجا على مربع

: النص و اكتب الكود التالي With FontDialog1 .ShowApply = True If .ShowDialog = DialogResult.OK Then Button1.Font = .Font Label1.Font = .Font End If End With

: في الكود السابق قمنا بما يلي

. في مربع حوار الخطApply مما يؤدي إلى إظهار ShowApplyتفعيل خاصية -١

.Okالتأكد أن المستفيد نقر زر -٢

تغيير خط أداة العنوان و زر األمر بالخط الذي اختاره المستفيد -٣

خلطاختيار مواصفات ا :١٠-١١شكل

Page 98: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

أداة الحوار لتغيير اللونتستخدم هذه األداة لتغيير . ر الخطاال تختلف أداة حوار األلوان عن قرينتها السابقة أداة حو

فعلى سبيل المثال أداة مربع النص يوجد لها خاصيتين تتعلقان ، خاصية اللون ألداة ما

تستطيع من .BackColor و الثانية هي خاصية ForColorى هي خاصية ولاأل، باأللوان

.خالل أداة حوار األلوان تغيير أيا من هاتين الخاصيتين

: قم بإضافة األدوات التالية و أعطها الخصائص كما في الجدول القيمة الخاصية اسم األداةButton1 Name cmdChangeColor

Text تغيير األلوان Label1 Name Label1

ColorDialog Name ColorDialog1

ثم نفذ البرنامج وانقر زر األمر لترى مزدوجا على زر األمر و اكتب الكود التاليانقر

:)١١-١١(الشكلWith ColorDialog1 .SolidColorOnly = True If .ShowDialog = DialogResult.OK Then Button1.BackColor = .Color Label1.ForeColor = .color End If End With

اختيار مواصفات اللون :١١-١١شكل

Page 99: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

: أن نتكلم عن أقسام تدقيق البيانات بنالذا يجدر . لقواعد و إجراءات العمل

ن يمكن تسمية هذا النوع م: ال يتطلب الرجوع إلى قاعدة البيانات اتدقيق البيانات بم -١

في هذا النوع من ، -Front End Validation–التدقيق بالتدقيق النموذجي للبيانات

التدقيق ال تحتاج الوصول إلى قاعدة البيانات لمعرفة دقة و صحة البيانات التي يقوم

: من أمثلة هذا النوع و. المستفيد بإدخالها

.التأكد من عدم إدخال قيمة سالبة لحقل ال يقبل إال قيمة موجبة •

.عدم تجاوز الطول المحدد لحقل ماالتأكد من •

الحظ أن كال المثالين السابقين ال يتطلب أي رجوع إلى قاعدة البيانات لذا يتم بناء هذا

.النوع من التدقيق في واجهات المستفيد

يمكن تسمية هذا النوع من :تدقيق البيانات الذي يوجب الرجوع إلى قاعدة البيانات -٢

في هذا النوع من التدقيق ، -Back End Validation–ق الخلفي للبيانات تدقيالالتدقيق ب

يتوجب الرجوع إلى قواعد البيانات و التأكد من مدخالت المستفيد قبل تنفيذ العملية

: من األمثلة على هذا النوع . المطلوبة حتى ال يتم مخالفة قواعد و إجراءات العمل

أكد من أن هذا الموظف لم يستنفذ رصيده عند إدخال إجازة جديدة لموظف يجب الت •

ال يمكن عمل هذا التدقيق إال بعد الرجوع إلى قواعد البيانات ثم ، من األجازات

.حساب األجازات التي سبق أن أخذها الموظف

يجب التأكد من رصيد المادة ، مثال آخر ماذا لو أردنا أن نصرف مادة من مستودع •

.قبل صرفها

.ن البد من الرجوع إلى قواعد البيانات لتطبيق تلك التدقيقات في المثالين السابقي

120

Page 100: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

التدقيق النموذجي للبيانات لتدقيق مدخالت المستفيدإرشادات

:توجد بعض اإلرشادات العامة عند التدقيق النموذجي للبيانات وهي

كن بيانات غير صحيحة إن أمكن مثل استخدام القوائم كلما أمإدخال المستفيد من امنع •

.ذلك

المستفيد أثناء عملية إدخال البيانات إلى اسم الحقل الذي يحمل الخطأ معيدا إليه أرشد •

.المؤشر

يريده هو ما لم يكن هناك حقل الذي بالترتيب البياناتإدخالامنح المرونة للمستفيد على •

.يعتمد على آخر

. تحليل و تصميم النظام التدقيق و قواعد العمل أثناء عملية أنواعخذ بعين االعتبار كل • لألدواتتدقيق الذاتيال

بما أننا في النوع األول من أنواع التدقيق وهو التدقيق النموذجي فإن جزء من تطبيق هذا النوع

بعض األدوات في بيئة الدوت نت تساعدك في إجراء ، يعتمد على األدوات المستخدمة في النموذج

.التدقيق

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

: الجدول التالي يوضح بعض األمثلة على التدقيق الذاتي لألدوات

الكائن التدقيقأسلوب

مربع النص .تحديد أو تعديل البيانات المدخلة

مربع االختيار . عدمهو أباختيارحصر القيم

ارزر االختي .اختيار قيمة واحدة

القائمة .تقدم مجموعة من البيانات الصحيحة

أداة التاريخ .حصر المدخالت بالتاريخ

121

Page 101: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

التدقيق الذاتي في مربع النص : يمكن إجراء التطبيق الذاتي في مربع النص باستخدام مجموعة الخصائص وهي

١- PasswordChar : تغيير شكل المدخالت إلى رموز تحجب من تمكنك هذه الخاصية

.)١-١٠( كما يتضح من الشكللكلمات المدخلة إلى مربع النصا

PasswordCharاستخدام خاصية :1-١٠شكل

Ma : عند . حد أقصى لعدد الحروف المدخلة إلى مربع النصإلعطاءتستخدم

طي العدد األقصى فإن مربع النص لن يسمح لك بالكتابة وسوف تسمع نغمة

.ولت الزيادة على الحد األقصى

R : لمنع المستفيد من إدخال أي نص إلى مربع النص تستخدم هذه الخاصية

في هذه الحالة يستطيع المستفيد رؤية ما هو مكتوب في مربع . هذه الخاصية

.لن يستطيع تغيير النص

Charct : قد – صغير أو كبير –تستخدم للتحويل اآللي بين حاالت الحروف

المفيد استخدامها في الكلمة السرية إذا كانت كلمة السر عبارة عن حروف

كائن مزود األخطاء. لتنبيه المستفيد إلى األخطاء وطرق إصالحهاErrorProviderزود األخطاء

أمام عين اودظل موجي هفتح نافذة أخرى للمستفيد كما أني ال ع الرسالة بأنه

إذا أضفت أداة واحدة من مزود .صلح الخطأ وهو ماال يتوفر في مربع الرسالة

SetError أهم طريقة لهذه األداة هي .كفيك لكل التدقيقات في النموذج

.لبيان األخطاء

122

٢- xLength

محاولة تخ

بيب إن حا

٣- eadOnly

قم بإعمال

النص لكن

٤- erCasing

يكون من

.صغيرة

كيف تستخدم كائن مستخدمي

تميز عن مربي

المستفيد حتى ي

األخطاء فإنها ت

و التي تستخدم

Page 102: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

و الموجودة في الجدول قم بإضافة نموذج وأضف فيه األدوات حسب الخصائص

)٢-١٠(كما يظهر من الشكل

القيمة الخاصية اسم األداةButton1 Name cmdValidate

Text تدقيق البيانات Textbox Name Textbox1

Text Label1 Name Label1

Text ErrorProviderName er

Form Name frmErrorTest ظهور رسالة تنبيه من مزود األخطاء :٣-١٠شكل

٢-١٠ :شكل

: تالي داخل حدث النقر الخاص بزر األمر قم بكتابة الكود ال

If Trim(TextBox1.Text) = "" Then er.SetError(TextBox1, "قيمة إدخال يرجى") Else er.SetError(TextBox1, "") End If

: في الكود السابق نقوم بما يلي

.نتأكد هل أدخل المستفيد نصا في مربع النص أم ال -١

رسالة الخطأ سوف .er من خالل مزود األخطاء و الذي اسمه الة خطأنقوم بإظهار رس -٢

.)٣-١٠ (تظهر عند مرور الفأرة على مزود الخطأ كما ترى من الشكل

.إذا أدخل المستفيد نصا نقوم بإزالة رسالة الخطأ -٣

123

Page 103: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تدقيق البيانات بجملة واحدةدون أن من نوع مربع نص بإذا أردت القيام بإجبار المستفيد بإدخال بيانات في كل األدوات

: فإليك هذا المثال الذي يوفر لك الوقت و الجهد تتأكد من كل أداة على حدةDim ControlVar As Control For Each ControlVar In Me.Controls If TypeOf ControlVar Is TextBox Then If Trim(ControlVar.Text) = "" Then erReq.SetError(ControlVar, "يرجى إدخال البيانات") Else erReq.SetError(ControlVar, "") End If End If Next

: في الكود السابق قمنا بما يلي

.نوع أداة عرفنا متغير من -١

موذج من خالل تكرار فإذا كان نوع األداة مربع نقمنا بالمرور على كل األدوات داخل ال -٢

فإذا لم يكن بها نص نقوم بإظهار رسالة خطأ ، نص نقوم بالتأكد هل يوجد فيها نص أم ال

.من خالل مزود األخطاء

124

Page 104: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

المتغيرات و الثوابت في بيئة الدوت نت

يمكن تعريف المتغير بأنه ما يمكن أن يحمل قيما متنوعة أثناء عمل النظام و من ثم يسهل تعريف

تختلف . الثابت بأنه ما يحمل قيمة واحدة تسند إليه عند تعريفه وال يمكن تغيير هذه القيمة بعد ذلك

كل متغير في بيئة . الثوابت في بيئة الدوت نتطريقة تعريف المتغيرات عن طريقة تعريف

لذا من الضروري معرفة مجال بعد تعدي هذا المجال يفقد المتغير قيمته، الدوت نت له مجال

.المتغير أو ما يسمى بفترة حياة المتغيرات

تعريف المتغير في بيئة الدوت نت

. Dim عبارة خدامباست Visual Basic .NET بيئة المتغير الجديد فييمكنك تعريف

:كما يلي

Dim Variable as DataType

:هناك أربعة أجزاء لعبارة تعريف المتغيرات

١- Dimو تمثل مجال المتغير وسوف نتكلم عن مجاالت المتغيرات بالتفصيل .

٢- Variableاسم تقوم أنت بإعطائه للمتغير تمثل .

٣- Asيمكنك تغييرها وهي كلمة محجوزة ال.

٤- DataTypeل نوع المتغير سواء حروف أو أرقام أو تاريخ أو غيره و يمث.

Phone، Address انالجملة التالية تقوم بتعريف متغير ,على سبيل المثال

Dim Phone As Integer Dim Address

44

Page 105: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

الحظ أننا عرفنا من نوع رقم صحيح ثم Phoneاألول قمنا بتعريف متغير اسمه في السطر

وهو ما يعتبر حال -سيأتي الحقا أنواع المتغيرات–نا لم نذكر نوعه لكنAddressمتغير وهو

: غير مثاليا في الظروف االعتيادية لعدة أسباب

.عدم القدرة على تمييز نوع المتغير -١

متغير من نوع إلى متغير من نوع آخر وهو إسنادقد تحصل أخطاء غير مقصودة مثل -٢

.ما قد يسبب خلال في أداء النظام

.غير مثالي للذاكرة مما يسبب بطأ في تنفيذ النظام استخدام -٣

هذا النوع ، Object نوع كائن المتغير يمثّلنوع فإن عند عدم تحديد نوع المتغير

(String) سواء نوع الحروف .لدوت نتا يمكن أن يمثّل أي نوع من أنواع البيانات في بيئة

.رىأخأو أي أنواع (Integer) أو األعداد الصحيحة

البرنامج فإن النوع المناسب يتحدد في وقت تنفيذهستخدم المتغير من غير ذكر نوععندما ت (run-time).

يمثل الجدول التالي بعض أنواع البيانات في بيئة الدوت نت و الحجم التخزيني لكل نوع و

.القيم المسموح بها لكل نوع

بها القيم المسموح المساحة التخزينية نوع البيانات Boolean 4 bytes صحيحة (True) خاطئة (False) Byte 1 byte قيم موجبة فقط ( ٢٥٥ و ٠يمثل عدد بين ( Char 2 bytes يمثل حرف واحد فقط DateTime 8 bytes ٩٩٩٩-ديسمبر-٣١ م إلى ١-١-١قيم تبدأ من Decimal 12 bytes ١٦( يمثل األرقام العشرية-byte ب أو سالب الى موج٠وهي من

79,228,162,514,264,337,593,543,950,335 ( Int32 4 bytes 2,147,483,647 إلى 2,147,483,648-من Int64 8 bytes 9,223,372,036,854,775,807 إلى9,223,372,036,854,775,808-من Object 4 bytes أي نوع يمكن أن يخزن داخل هذا النوع Int16 2 bytes 32,767 إلى 32,768-من String 10 bytes + (2

(طول السلسلة * بليون حرف٢ إلىيمثل قيمة حرفية تتسع

45

Page 106: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

int32 و int16 الحظ ظهور بعض األنواع الجديدة في بيئة الدوت نت مثل

لمحة عن بعض أنواع البيانات .تسوف نرى ثالثة من أنواع البيانات و ماذا حدث لها في بيئة الدوت ن

Integerاألعداد الصحيحة

و int64 و int16 و Int32كما سبق و رأيت يوجد عدة أنواع من األعداد الصحيحة فهناك

التعريفان التاليان يعتبران متساويان. غيرها من األنواعDim Phone As Integer Dim Phone As Int32

.int32تم ترجمته إلى فإنه سوف يIntegerعند تعريفك لمتغير على أنه من نوع

يعني أن النوع وهو ما. Int64 و int16 أسرع بكثير من عمليات Int32الحظ أن عمليات

int32عند تحويلك لنظام كتب . في بيئة الدوت نت يعتبر أكثر أنواع األعداد الصحيحة فعالية

لتحصل على Int32 إلى Long السادس إلى بيئة الدوت نت قم بتغيير كل أنواع اإلصداربلغة

.نظام أكثر فعالية

String السالسل

تم استبدال كل الدوال التي تتعامل مع السالسل و التي كانت موجودة باالصدار السادس مثل

Left,Right,Mid الفئة بوظائف جديدة تندرج تحت System.Class . ارجع إلى الفصل

.الخاص بالتعامل مع السالسل الحرفية

Variantالنوع المتعدد في بيئة الدوت نت لم يعد هذا النوع . كان هذا النوع يخدم في بيئة الدوت نت كنوع بيانات عام

ليؤدي نفس المهام و ليخدم كنوع بيانات عامObjectموجودا فقد تم استبداله بنوع

46

Page 107: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:فترة حياة المتغير

.حتفظا بقيمتهيمكن تعريف فترة حياة المتغير بأنها الفترة التي يظل فيها المتغير م

مجال المناسب له حياته حتى يتسنى لك تعريفه في المن المهم جدا أن تحدد لكل متغير فترة

: ولعلنا نذكر مثالين لمشكلتين تحصالن عند عدم الدقة في تحديد مجال المتغير

فعلى سبيل ، ضياع قيم المتغيرات مما يؤدي إلى عدم أداء النظام للمهام المطلوبة منه -١

لو عرفت متغيرا على أنه متغير على مستوى االجراء و أردت أن تستخدمه في المثال

.مكان ما خارج المتغير فإنك لن تجد قيمة هذا المتغير

قد تأتي فكرة إلى شخص ما بتعريف كل المتغيرات تعريفا عاما : تضييع موارد الذاكرة -٢

الفكرة مريحة لكنها هذه ، على مستوى النظام حتى يتخلص من التفكير بمجال كل متغير

.لك موارد من الذاكرةضارة ألن المتغيرات العامة تسته

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

. و هي المتغيرات العامة وتنتهي بنهايته الفترة التي تبدأ عند بدء تشغيل الحل-١

فترة تبدأ عند تشغيل مشروع ما و تشمل كل ما يندرج تحت هذا المشروع من أنظمة -٢

.تطبيقية و نماذج و غيرها

فترة تبدأ عند تشغيل نموذج و هي المتغيرات العامة على مستوى النموذج أو من نوع -٣

Static ما داخل النموذجإجراء في .

وهي المتغيرات اإلجراء و تنتهي قيم المتغير بانتهاء تنفيذ اإلجراءفترة تبدأ عند تنفيذ -٤

.اإلجراءالمحلية داخل

من كود و تنتهي بنهايته و هي المتغيرات المحلية على مقطع تبدأ عند تنفيذ فترة-٥

.المقطع امستوى هذ

مجال المتغيرات

بعد تحديد الفترة التي تريد أن يبقى فيها المتغير محتفظا بقيمته تأتي مرحلة تحديد مجال هذا

.المتغير في بيئة الدوت نت

. المشاريع داخل الحل و تكون عامة لكلPublicالمتغيرات العامة تعرف بكلمة -١

47

Page 108: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

و تكون Friendالمتغيرات العامة داخل المشروع فقط يمكن تعريفها من خالل كلمة -٢

.عامة لكل النماذج و االجراءات داخل المشروع

. Privateالمتغيرات الخاصة بالنموذج أو بالنظام التطبيقي و يتم تعريفها من خالل كلمة -٣

. استخدام هذه الكلمة داخل اجراء ماال حظ أنه ال يمكن

الحظ أن قيم هذه Dimالمتغيرات المحلية في االجراءات يمكن تعريفها من خالل كلمة -٤

يمكن تمديد حياة متغير داخل اجراء و ذلك بتعريفه .المتغيرات تنتهي بنهاية االجراء

.Staticبكلمة

Variable Scope على مجال المتغير مثالSub Test1() Dim L As Integer ' جمال االجراء If L = 5 Then Dim B As Integer ' جمال املقطع B = L End If End Sub

: في هذا المثال يوجد نوعين من المجاالت

I. المتغيرLهو متغير معرف لمجال االجراء كامال .

II. المتغيرBير لمقطع جملة هو متغIf. لو حاولت معرفة قيمة B فإنك لن تستطيع بعد الجملة

Ifألن حياته تنتهي بنهاية هذه الجملة .

طرق متعددة لتعريف المتغيرات

.لنأخذ هذه الطرق على شكل أمثلة، جديدة سهلت تعريف المتغيرقا بيئة الدوت نت طرتأضاف

:عرف و أسند القيمة في نفس السطر -١Dim myVar As Integer = 9

:تعريف عدة متغيرات -٢

Dim I, J As Integer Dim L As Integer, M As Integer Dim N As Integer, X As Double

48

Page 109: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

بدون الحاجة إلى إعادة كلمة Integerالحظ في السطر األول كيف عرفنا متغيير من نوع

Dim .أما في السطر الثالث فعرفنا . ثم الحظ في السطر الثاني طريقة أخرى لنفس التعريف

. من أكثر من نوع في نفس السطرات متعددةمتغير

السادس بتعريف متغير من نوع اإلصدارفي التي في السطر األول تقوم هذه الجملة

Variant و آخر من نوع Integer لكنها في الدوت نت تعرف كال المتغيرين من نوع

Integer.

الصدار السادس و إليك هذا و هو مالم يكن موجود في ا: تعريف متغيرات للقراءة فقط -٣

:المثال ReadOnly x As Integer

يمكن تعريفه محليا داخل اجراء بل يلزم تعريفه على مستوى عند تعريف متغير للقراءة ال

.النموذج

ضوابط تسمية المتغيرات يجب التقيد بها و إال فإن بيئة ي التتعرف بيئة الدوت نت مجموعة من الشروط لتسمية المتغيرات

:وهذه الضوابط هي ، الدوت نت سوف لن تقبل تعريف المتغير المخالف لهذه الضوابط

. المتغيرات بحرف أبجديأسماءأن تبدأ -١

. حرف٢٥٥حرف و احد و أن يكون طول اسم المتغير بين -٢

. أن يكون اسم المتغير كلمة محجوزة من قبل بيئة الدوت نتحال يسم -٣

يتكون اسم المتغير من حروف ويمكن أن تدخل بعض األرقام في التسمية و كذلك أن -٤

.أما غير ذلك من الرموز فغير مسموح دخولها في االسم، الشرطة السفلية

سبب المخالفة اسم المتغيرClass اسم محجوز في بيئة الدوت نت

Phone&Number & عالمة غير مسموح باستخدامها 18Width وح أن يبدأ االسم برقمغير مسم

First Name المسافة غير مسموح بأن تدخل في اسم المتغير

تعيين قيم للمتغيرات

49

Page 110: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: الصيغة العامة لتعيين قيمة لمتغير ما هي الصيغة التالية Var=Value

مة ثم وضعنا قيمة المتغير هذه القيمة قد تكون قي= تالحظ أننا بدأنا باسم المتغير ثم وضعنا عالمة

.أنت تقوم باعطائها للمتغير أو قد تكون خاصية أحد األدوات في بيئة الدوت نت

. لترى كيف تقوم بتعيين قيم لهاأمثلةسوف نأخذ ثالثة

المثال األولDim NumberOfStudent as integer NumberOfStudent =15

: في المثال السابق قمنا بما يلي

.نوع عدد صحيح في السطر األول عرفنا متغير من -١

.١٥في السطر الثاني عينا قيمة لهذا المتغير وهي -٢

المثال الثانيDim Name as StringName=”Khalid”

:في المثال السابق قمنا بما يلي

.عرفنا متغير من نوع سلسلة حرفية -١

د من الحظ أنه عند تعيين قيم السالسل الحرفية الب. لهذا المتغيرKhalidقمنا بتعيين قيمة -٢

.وضع قيمها بين عالمتي تنصيص

المثال الثالثDim Result as Boolean Result=True

:في المثال السابق قمنا بما يلي

.Booleanعرفنا متغير من نوع -١

.قمنا بإسناد قيمة صح لهذا المتغير ألنها أحد القيمتين المسموحتين له -٢

تعيين قيمة متغير آلخر أو لخاصية أداة

50

Page 111: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

سند قيمة متغير إلى متغير آخر كما يوضح ذلك المثال التالييمكن أن تDim a As Integer = 5 Dim b As Integer b = a

: في المثال السابق قمنا بما يلي

.٥ و عينا له قيمة Integer من نوع aعرفنا متغير -١

.Integer من نوع bعرفنا متغير -٢

.٥ وهي a وهي قيمة المتغير bقمنا بتعيين قيمة للمتغير -٣

أن تسند قيمة خاصية أداة ما لمتغير كما يوضح ذلك المثال التاليDim a As String a = TextBox1.Text

:في المثال السابق قمنا بما يلي

.Integer من نوع aعرفنا متغير -١

وهي أحد خصائص األداة Textتحتويه خاصية وهي ماaن قيمة للمتغير يقمنا بتعي -٢

TextBox1.

Explicit م خياراستخدالكن ماذا إذا رغبت بكسر هذه ، البد من تعريف أي متغير قبل استخدامههمر بك في السابق أن

و الذي يحدد ما إذا كان Explicit نت بمنحك خيار تتقوم بيئة الدو. القاعدة لظرف من الظروف

مة االفتراضية القي. Off و On قيمتين هما Explicitيحمل . تعريف المتغيرات ضروريا أو ال

قم في حال رغبت بعدم تعريف المتغيرات، بمعنى أنه يجب عليك تعريف المتغيراتOnهي

أول أن جملة التغيير البد أن تكون في الحظ. )١-٣(من الشكل كما يتضحOffبتغييرها إلى

Option Explicitاستخدام عبارة :١-٣شكل .سطر

51

Page 112: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Constantsالثوابت متغيرات، ولكن هذه القيمة ال يمكن هذا نوع من مخازن الذاكرة، توضع فيه قيمة، تماما كال

: تعريفهاةتغييرها بعد ذلك، وهذه طريقConst MyConst = 3

: توجد عدة فوائد لتعريف الثوابت

.يعتبر التعامل مع الثوابت أسرع في التنفيذ من المتغيرات -١

بشكل كبير في النظام MyConstحيث لو افترضنا أنك تستعمل ، سهولة تغيير الثوابت -٢

أردت لسبب ما تغيير قيمته فإنك لن تتعب في ذلك حيث يمكنك تغيير هذه القيمة مرة و

.واحدة

52

Page 113: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

و النصوصالتعامل مع السالسليمكن تعريف السالسل الحرفية بأنها مجموعة من الحروف أو األرقام أو خليط منهما

. Stringومن أي نوع آخر من الرموز لكن بشرط أن يتم تعريفه بأنه من نوع أ

. التالي على سالسل حرفية معرفة في بيئة الدوت نتالمثالخذ Dim Name As String Dim HouseNumber As String Name = "أمحد" HouseNumber = "12345"

ثم عينا HouseNumber و الثانية Nameفي البداية عرفنا سلسلتين حرفيتين األولى

.HouseNumber إلى السلسلة ١٢٣٤٥ و قيمة Nameقيمة أحمد إلى السلسلة

. في المثال عند تعريف السالسل البد من وضعها بين عالمتي تنصيص كما مر

تقدم بيئة الدوت نت مجموعة كبيرة من الدوال التي تسهل عليك التعامل مع السالسل

، تصور أن لديك نص و تريد أن تقتطع جزء منه أو تبحث فيه عن نص ما. الحرفية و النصوص

.تنتهي فهل ستكتب برنامجا خاصا لتلك المهام أم ماذا ستفعل إلى غير ذلك من العمليات التي ال

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

مقارنة السالسلإذا أردت مقارنة سلسلتين لتكتشف هل هما متساويتان في المحتوى أم ال استخدم الدالة

Compare . على سبيل المثال: Dim str1 As String = "B" Dim str2 As String = "A"

وكما A بينما محتوى السلسلة الثانية B ألن محتوى السلسلة األولى str2 الدالة أكبر str1الدالة

في الجانب المقابل . ١ لذلك سوف تكون نتيجة المقارنة A يأتي بعد الحرف Bتعرف فإن الحرف

:المثال التالي Dim str1 As String = "AA" Dim str2 As String = "AA"

.str2 تساوي السلسلة str1مثال السابق فإن السلسلة أما في ال

54

Page 114: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

: وضيح كيفية مقارنة سلسلتيني المثال التالي

.قم بتعريف سلسلتين وعين لهما نفس القيمة كما يظهر في المثال التالي -١

.Integer عرف متغير من نوع -٢

.resلى المتغير لمقارنة السلسلتين ثم ارجع نتيجة المقارنة إCompareاستخدم الدالة -٣

. اعرض نتيجة المقارنة على أداة عنوان -٤Dim str1 As String = "AA" Dim str2 As String = "AA" Dim res As Integer res= String.Compare(str1, str2) Label1.Text = "نتيجة املقارنة:" + res.ToString()

: لمعرفة نتيجة المقارنة ارجع إلى الجدول التالي

النتيجة المعنى

أقل من صفر السلسلة األولى أقل من الثانية

صفر السلسلتان متساويتان

أكبر من صفر السلسلة األولى أكبر من الثانية

دمج سلسلتينماذا لو كان هناك سلسلتين و أردت أن تدمج السلسلتين بمعنى أن تنتج سلسلة أخرى تحوي السلسة

. نيةاألولى متبوعة بالسلسلة الثا

: الذي يوضح كيفية دمج سلسلتين لنأخذ المثال التاليDim FirstName As String = "Khalid" Dim LastName As String = "AL-Jduaia"

و FirstNameفي هذا المثال الحظ أننا بهدف تكوين اسم كامل فسوف نقوم بدمج السلسلتين

LastName .ي استخدام الدالة نحتاجه هو خطوة واحدة فقط وه كل ماConcat . والتي تقوم

.بإرجاع نتيجة دمج السلسلتين

55

Page 115: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

Label1.Text = String.Concat(FirstName, LastName)

.بعد دمج السلسلة األولى مع السلسلة الثانية قمنا بعرض نتيجة الدمج على أداة عنوان

. بعد دمج سلسلتين تظل قيمهما بدون أي تغير مالم تقم بذلك

إضافة حروف إلى سلسلةال نقصد بعملية . ماذا لو أردت أن تضيف بعض الحروف أو األرقام أو الرموز إلى سلسلة ما

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

.Insertإلضافة حروف إلى سلسلة قم باستخدام الدالة

:Insertستخدام الدالة يوضح كيفية ا المثال التاليDim str1 As String = “Saat” Dim strRes As String strRes = str1.Insert(2, "lam") Label1.Text = strRes.ToString()

: في المثال السابق قمنا بما يلي

.saatعرفنا سلسلة و عينا لها القيمة -١

.عرفنا سلسلة أخرى ولم نسند لها أي قيمة -٢

إلى السلسلة lam و التي تقوم بإضافة المقطع Insertثالث قمنا بتنفيذ الدالة في السطر ال -٣

str1 بدأ من الحرف الثاني ثم أرجعنا ناتج اإلضافة إلى السلسلة strRes ليصبح الناتج

.Salamatهو

تذكر أن الفهرس في الدوت نت يبدأ من صفر لذلك يعتبر الحرف الثاني في السلسلة

saatكبيرة التي تراها .

56

Page 116: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

من سلسلةحذف حروف و التي تقوم بحذف حرف أو أكثر Removeلحذف حرف أو أكثر من السلسلة استخدم الدالة

.كما سبق لك أن تعلمت فإن العد يبدأ من الصفر. بدأ من مكان ما تقوم أنت بتحديده

: Removeالمثال التالي يوضح كيفية استخدام الدالة Dim s As String = "salamat" Label1.Text = s.Remove(5, 2)

الشرح

.salamat و عينا لها قيمة وهي s في السطر األول قمنا بتعريف سلسلة -١

لحذف حرفين من السلسلة بدأ من الحرف Removeفي السطر الثاني استخدمنا الدالة -٢

:Removeلذا يمكن القول بأن هناك معامالن للدالة . الخامس

I. للدالة المعامل األولRemoveيمثل مكان بدأ الحذف في السلسلة .

II. و المعامل الثاني هو عدد األحرف التي تريد حذفها .

.salamنتيجة الحذف هي ، بعد تنفيذ عملية الحذف قمنا بعرض النتيجة على أداة عنوان -٣

عند حذف أحرف من سلسلة ما أو إضافة أحرف لها فإن محتواها يتغير حسب نتائج الحذف

.ضافةواإل

استرجاع جزء من سلسلةتتوفر في بيئة الدوت نت دالتين ، في كثير من األحيان تحتاج إلى استرجاع جزء من سلسلة ما

: ألداء هذه العملية

في هذه ، الدالة األولى تقوم باسترجاع جزء من سلسلة بدأ من مكان ما حتى نهاية السلسلة-١

.كان بدأ االسترجاعالحالة يوجد معامل واحد لهذه الدالة وهو م

:Substringالمثال التالي يوضح كيفية استخدام الدالة Dim s As String = "salamat" Label1.Text = s.Substring(5)

57

Page 117: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

الشرح

I. في السطر األول قمنا بتعريف سلسلة و عينا لها قيمةsalamat.

II. في السطر الثاني قمنا باسترجاع جزء من السلسلةs الخامس حتى نهاية بدأ من الحرف

.atالسلسلة ثم عرضنا النتيجة في أداة عنوان و هي حرفي

في هذه الحالة .الدالة الثانية تقوم باسترجاع جزء من سلسلة بدأ من مكان ما و انتهاء بمكان ما-٢

االسترجاع و الثاني يمثل عدد األحرف التي تود ءيوجد معامالن لهذه الدالة األول يمثل مكان بد

. المثال التالي لكي تتضح الفكرةخذلنأ. اعهااسترجDim s As String = "salamat" Label1.Text = s.Substring(3, 2)

: الشرح

.salamatفي السطر األول قمنا بتعريف سلسلة و عينا لها قيمة -١

لكي نسترجع حرفين بدأ من الحرف الثالث substringفي السطر الثاني قمنا بتنفيذ الدالة -٢

.am ثم قمنا بعرض النتيجة على أداة عنوان وهي حرفي s السلسلة في

. عند استرجاع جزء من سلسلة ما فإن المحتوى األصلي للسلسلة ال يتغير

بحث و استبدال جزء من سلسلة داخل سلسلة ثم تستبدله بحرف آخر فإن - أو جزء من سلسلة–إذا أردت أن تبحث عن حرف ما

. التي توفر لك جهدا كبيرا و Replaceهناك دالة

:Replaceالمثال التالي يوضح كيفية استخدام الدالة Dim str1 As String = "ppp" Label1.Text = str1.Replace("p", "k")

: الشرح

.pppعرفنا سلسلة حرفية و عينا لها قيمة -١

p كل حرف على السلسلة و التي سوف تقوم بالبحث عنReplaceقمنا بتطبيق الدالة -٢

بعد ذلك قمنا بعرض النتيجة على أداة عنوان و التي سوف . kثم تقوم باستبداله بحرف

.kkkتكون

58

Page 118: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

تحويل حالة الحروف إلى صغيرة و كبيرةتوجد دالتان لتحويل الحروف من الحالة الصغيرة . وهو ما ينطبق على حروف اللغة اإلنجليزية

:و العكس وهما، الحالة الكبيرةىإل الشرح دالةال

.ToLower() تقوم بتحويل حالة حروف سلسلة إلى صغيرة ToUpper() تقوم بتحويل حالة حروف سلسلة إلى كبيرة

.المثال التالي سوف يرسخ مفهوم الدالتين Dim aStr As String = "ahmed" Dim bStr As String = "OMAR" Label1.Text = aStr.ToUpper() Label2.Text = bStr.ToLower()

: الشرح

OMAR و الثانية عينا لها قيمة ahmedقمنا بتعريف سلسلتين األولى عينا لها قيمة -١

إلى حالة كبيرةahmed لتحويل حالة حروف كلمة ToUpperاستخدمنا الدالة -٢

.صغيرةإلى حالة OMARلتحويل حالة حروف كلمة ToLowerاستخدمنا الدالة -٣

)١-٤( كما يظهر من الشكل أداتي عنوانقمنا بعرض النتائج على -٤

تحويل حالة الحروف من :١-٤شكل

صغيرة إلى كبيرة و العكس

59

Page 119: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

اإزالة المسافات و الحروف غير المرغوب فيه. مسافات التي توجد في بداية كل سلسلة أو في نهايتها أو فيهما معافي بعض األحيان تريد إزالة ال

ريد أن في مربع نص و تأشخاص أسماء هناك مستفيدا يدخل أنترض فا: و لنضرب لذلك مثاال

في هذه الحالة لو ضغط على زر مسافة فإنك لن تدري ، تتأكد من أنه أدخل شيئا في مربع النص

.خله اسم أم مسافة ما لم تقم بإزالة المسافات القبلية و البعدية لكل سلسلةدهل الذي أ

:لنأخذ المثال التالي Dim str As String = " ahmed " Label1.Text = str.Trim()

رحالش

لكن الحظ أن القيمة ahmed و عينا لها القيمة strفي السطر األول قمنا بتعريف سلسلة -١

.أحمد تبدأ بمسافة و تنتهي بمسافة

و من ثم عرضنا النتيجة على Trimإلزالة المسافة القبلية و البعدية قمنا باستخدام الدالة -٢

. بعديةأداة عنوان و النتيجة هي كلمة أحمد بدون مسافات قبلية أو

تبطين سلسلة بمسافة برمز من اليمين أو الشمال : نقصد بتبطين سلسلة بمسافة من اليمين أو الشمال أن تضاف إليها مسافات من جهتين هما

و التي تقوم بتبطين PadLeftفي هذه الحالة نستخدم الدالة : تبطين من الجهة اليمنى -١

.سلسلة ما بمسافة أو برمز آخر

: يوضح كيفية تبطين سلسلة الي المثال الت

Dim str1 As String = "MyString" Label1.Text = str1.PadLeft(10)

الشرح

.MyStringو عينا لها القيمة سلسلة ناعرف -١

يمثل هذا المعامل الطول الكلي ١٠ و اعطائها معامل PadLeftقمنا باستدعاء الدالة -٢

فإن الطول للسلسلة ٨ لها طول MyStringصلية فإذا كانت السلسلة األ. للسلسلة الناتجة

60

Page 120: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

ال حظ أنه تم اضافة مسافتين إلى " MyString" و ستكون النتيجة كالتالي ١٠سيكون

. الجهة اليمنى

٨= و أن طول السلسلة١٠=لماذا مسافتين ؟ الحظ أن المعامل: مالحظة

. فكأننا نقول أضف مسافتين للسلسلة من جهة اليمين٢=٨-١٠

. إذا كان المعامل أقل من طول السلسلة فلن يتم إضافة أي شيء

إال أننا نستخدم ما قيل في التبطين من الجهة اليمنى يقال هنا: تبطين من الجهة اليسرى -٢

.PadRightدالة أخرى هي

: :المثال التالي يوضح كيفية تبطين سلسلة من الجهة اليمنى Dim str1 As String = "MyString" Label1.Text = str1.PadRight(10)

الشرح

.MyString سلسلة و عينا لها القيمة ناعرف -١

يمثل هذا المعامل الطول الكلي ١٠ و اعطائها معامل PadRightقمنا باستدعاء الدالة -٢

فإن الطول للسلسلة ٨ لها طول MyStringفإذا كانت السلسلة األصلية . للسلسلة الناتجة

مسافتين إلى الجهة إضافةال حظ أنه تم " MyString " و ستكون النتيجة كالتالي ١٠سيكون

. اليسرى

61

Page 121: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

السالسلالبحث في تستطيع البحث داخل . إن من العمليات األساسية و المتكررة دائما هي البحث في سلسلة ما

. بإرجاع موقع أول نتيجة بحث إيجابيةمالتي سوف تقو و indexOfسلسلة من خالل الدالة

: طرق للبحث داخل سلسلة كلها متوفرة من خالل هذه الدالة وهيستةيوجد

الشرح الدالةIndexOf( _ ByVal value As Char _ ) As Integer

لدينا معامل واحد وهو الحرف الذي تريد

البحث عنه ولدينا قيمة مرجعة هي نتيجة

.البحثIndexOf( _ ByVal value As String _ ) As Integer

لدينا معامل واحد هو السلسلة التي نريد البحث

يمة مرجعة ولدينا ق. عنها داخل السلسلة الحالية

.هي نتيجة البحثIndexOf( _ ByVal value As Char, _ ByVal startIndex As Integer _ ) As Integer

لدينا معامالن هما الحرف الذي نريد البحث

ولدينا قيمة مرجعة . عنه و مكان بدء البحث

.هي نتيجة البحثIndexOf( _ ByVal value As String, _ ByVal startIndex As Integer _ ) As Integer

نريد البحث التي لدينا معامالن هما السلسلة

ولدينا قيمة مرجعة . عنها و مكان بدء البحث

.هي نتيجة البحثIndexOf( _ ByVal value As Char, _ ByVal startIndex As Integer, _ ByVal count As Integer _ ) As Integer

لدينا ثالثة معامالت هي الحرف الذي نريد

ن بدء البحث و عدد الحروف البحث عنه و مكا

ولدينا . التي نريد أن تتم عليها عملية البحث

.قيمة مرجعة هي نتيجة البحثIndexOf( _ ByVal value As String, _ ByVal startIndex As Integer, _ ByVal count As Integer _ ) As Integer

ي نريد تلدينا ثالثة معامالت هي السلسلة ال

البحث عنها و مكان بدء البحث و عدد الحروف

ولدينا . التي نريد أن تتم عليها عملية البحث

.قيمة مرجعة هي نتيجة البحث

62

Page 122: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

. تتضح الفكرةاي من خاللهت و الة التالياألمثلةذ لنأخ

البحث عن حرف-١Dim str As String = "salamat" Label1.Text = str.IndexOf("a”)

الطريقة

I- سلسلة و عينا لها قيمة عرفنا salamat

II- بحثنا عن حرفaو النتيجة ، داخل السلسلة ثم أرجعنا النتيجة إلى أداة عنوان

. داخل السلسلةaيمثل رقم موقع حرف و الذي ١هي

.البحث عن حرف بدأ من مكان ما-٢Dim str As String = "salamat" Label1.Text = str.IndexOf("a”,4)

:الطريقة

I-سلسلة و عينا لها قيمة عرفنا salamat.

II- بحثنا عن حرفaبدأ من الموقع الرابع ثم أرجعنا داخل السلسلة

داخل السلسلة بدأ a و الذي يمثل رقم موقع حرف ٥و النتيجة هي ، ة إلى أداة عنوانالنتيج

.من الموقع الرابع

البحث عن حرف مع تحديد مكان بدأ البحث و مكان انتهائه-٣Dim str As String = "salamat" Label1.Text = str.IndexOf("m”,3,2)

:الطريقة

I-قيمة سلسلة و عينا لها عرفناsalamat.

II- بحثنا عن حرفmمما ٢ بدأ من الموقع الثالث بطول داخل السلسلة

و ، ثم أرجعنا النتيجة إلى أداة عنوان، يعني أن البحث سوف يتوقف في الموقع الخامس

. داخل السلسلة بدأ من الموقع الثالثm و الذي يمثل رقم موقع حرف ٤النتيجة هي

63

Page 123: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

معنى نتائج البحثالجدول التالي يوضح

الشرح القيمة

نتيجة البحث سلبية ١-

موقع أول نتيجة إيجابية أي عدد صحيح من صفر أو أكبر

للبحث عنه داخل سلسلة و كان nفلو أدخلت حرف . البحث يعتمد على حالة األحرف

. فإن النتيجة سلبية Nالموجود

64

Page 124: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

لتعامل مع السالسلمثال تدريبي شامل لكل أنواع ا

هدف هذا التدريب إىل تعليمك مجيع أنواع التعامل السابقة مع السالسل مما يكون له األثر اإلجيايب يف ي: اهلدف

.تسهيل الربجمة يف بيئة الدوت نت

خمسة أداوات ،مربع نص واحد ،ستة أزرار اختيار ،مربع مجموعات: األدوات المستخدمة

)٢-٤(ل انظر شكزر أمر ،عنوان

نظرة على تصميم النموذج

سوف يكون لدينا ستة أزرار أمر كل منها يمثل نوع من أنواع العمليات على

كما تالحظ . كون لدينا زر أمر ينفذ العملية بناء على زر األمر الذي تم اختيارهي س

هذه األداة ستكون محور ، salamat نموذج يوجد أداة عنوان مكتوب عليها

ا سيكون هناك مربع نص تدخل فيه القيمة بناء على العملية المختارة ثم ستظهر

: لنأخذ المثال التالي على إحدى العمليات . اة عنوان

. نوع العملية مقارنة سلسلتين من أزرار االختيار

.salamatريد أن تقارنها بالسلسلة المكتوبة على أداة العنوان دخال السلسلة التي ت

.ط زر األمر لتظهر لك النتيجة على أداة العنوان التي كتب بجانبها نتيجة العملية

تصميم النموذج :٢ -٤شكل

65

:ماذا سيحدث

السالسل كما

من تصميم ال

كم، العمليات

النتيجة في أد

اختر -١

قم بإ -٢

اضغ -٣

Page 125: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

الخطوات األدوات التالية مع ضبط خصائص األدوات كما هو وارد هقم بإنشاء نموذج ثم ضع في -١

:في الجدوللقيمةا الخاصية اسم األداة

Form Name WorkWithString Text التعامل مع السالسل الحرفية RightToLeft True Font Simplified Arabic

RadioButton Name rdoAdd Text إضافة إلى سلسلة

RadioButton Name rdoSub Text استرجاع حروف من سلسلة

RadioButton Name rdoCon Text دمج سلسلتين

RadioButton Name rdoComp Text مقارنة سلسلتين

RadioButton Name rdoSmall Text تحويل حالة الحروف إلى صغيرة

RadioButton Name rdoCap Text تحويل حالة الحروف إلى آبيرة

RadioButton Name rdoSearch Text البحث في سلسلة

RadioButton Name rdoRemove Text ذف من سلسلةح

Button Name Button1 Text تنفيذ العملية

Label Name Label2 Textالسلسلةاجراء العمليات على

Label Name lblSal Text salamat

Label Name Label3 Text المدخل

TextBox Name txtInput Text

Label Name Label5 Text نتيجة العملية

Label Name lblRes Text Label4

66

Page 126: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

قم بتصميم النموذج كما هو موضح في الخصائص و شكل التصميم السابق -٢

انقر مزدوجا على زر األمر لتنتقل إلى حدث النقر الخاص بزر األمر و اكتب الكود -٣

: التالي

تستطيع نسخ هذا التدريب من القرص المرفق مع الكتاب

If rdoAdd.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = lblSal.Text().Insert(2, txtInput.Text) End If End If If rdoSub.Checked Then If txtInput.Text.Trim <> "" And IsNumeric(txtInput.Text) Then lblRes.Text = lblSal.Text.Substring(txtInput.Text) End If End If If rdoCon.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = String.Concat(lblSal.Text, txtInput.Text) End If End If If rdoComp.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = String.Compare(lblSal.Text, txtInput.Text) End If End If If rdoSmall.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = txtInput.Text.ToLower End If End If If rdoCap.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = txtInput.Text.ToUpper End If End If If rdoSearch.Checked Then If txtInput.Text.Trim <> "" Then lblRes.Text = lblSal.Text.IndexOf(txtInput.Text) End If End If If rdoRemove.Checked Then If txtInput.Text.Trim <> "" And IsNumeric(txtInput.Text) Then lblRes.Text = lblSal.Text.Remove(txtInput.Text, 1) End If End If

67

Page 127: مقدمة عامة عن بيئة الدوت نت

[email protected]لد الجديع خا

تعليمات

.بناء على زر االختيار الذي تم اختياره يقوم هذا الكود بتنفيذ العملية -١

.الحظ أننا هنا طبقنا جميع العمليات األساسية -٢

ن هناك مدخل في مربع النص إلى بداية تستطيع نقل جمل الشرط المتعلقة بالتأكد من أ -٣

. لكي تكون شاملة للجميعاإلجراء

والحظ أننا اخترنا زر االختيار المتعلق )٣-٤(لرؤية النظام بعد التشغيل انظر الشكل -٤

في أداة ٤ ثم ضغطنا زر األمر فظهر لنا رقم mبالبحث في سلسلة ثم أدخلنا حرف

.mيمثل موقع حرف العنوان وهو ما

نظام التعامل مع السالسل :٣ -٤شكل

68

Page 128: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ADO.NETمقدمة عن ؟ADO.NETما هي

فإذا .البياناتمصادر للتعامل مع -CLASSES–الفئاتمجموعة من بأنها يمكن تعريفها

و التعامل مع بيانات موجودة فيها أو إضافة بيانات جديدة -أردت االتصال بقاعدة بيانات ما

لك من خالل مثل أوراكل أو أكسيس من خالل بيئة الدوت نت فسوف تقوم بذ-لها

ADO.NET. تم تصميمADO.NET في األساس للعمل مع قواعد البيانات لكن تعمل مع

يمكن أن تتعامل مع األنواع ADO.NETلذا يمكن القول بأن ، غيرها من مصادر البيانات

:التالية من مخازن البيانات

. مثل ملف نصيدديوجد لها ترتيب مح وهي البيانات التي ال: المخازن غير المتناسقة -١

ملفات مثل البيانات المفصولة بفاصلةوهي :)CSV( متدرجةالالمتناسقة غير المخازن -٢

Excel ،ActiveDirectory.

لعل من أبرز األمثلة، بأسلوب هرميالبياناتوهي ملفات تخزن فيها :الهرمية المخازن -٣

.XMLملفات

.SQLServer ،MySQL، وراكلمثل أ : المترابطة مخازن قواعد البيانات -٤

: من بيئة الدوت ADO.NETموقع

وهو مايجعلها تشاركه بعض -Framework–جزء من إطار العمل ADO.NETتعتبر

OO - و التصميم الشيئي-garbage collection - المزايا مثل تجميع المهمالت

design-و دعم متعدد للغات multi-language .تعلق بالمقدمة عن بيئة مر في الفصل الم

ADO.NETالدوت نت تعريف البيئة المتصلة و البيئة غير المتصلة و يمكننا أن نقول بأن

تعتبر جزء من ADOوحيث إن .مصممة للعمل مع البيئة المتصلة و البيئة غير المتصلة

في اإلمتداد ADOو قد تم بناء ، إطار العمل فهي مقسمة إلى امتدادات منطقية

System.data كما يجدر التنويه أن هناك جزء من ADO يقع في امتداد آخر هو

System.xmlالتالي انظر الشكل .

126

System.Data

.OleDb.SqlClient.SqlTypes .Common

System.Data

.OleDb.SqlClient.SqlTypes .Common

Page 129: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:ADO و ADO.NETالفرق بين

ADO.NET الحالي اإلصدار إلى ADO السابق في اإلصدارحصل هناك تطور ضخم من

. ADO جديدا لسالفتها راإصداية جديدة و ليست نبر تقت تعADO.NETوال نبالغ إذا قلنا إن

.صدارين بين اإلالفروقوإليك بعض ADO.NET ADO قارنةموجه ال

xmlدعم غير موجود دعم قوي

DATASET نظرا ألن

فال يوجد XMLتدعم

مشكلة في نقل البيانات من

.خالل الجدار الناري

من ADOهناك عائق لنقل

.خالل الجدار الناري

دار نقل البيانات من خالل الج

الناري

البيئة غير المتصلة تساعد

على االشتراك في االتصال

. توسع كبيرةإمكانيةومن ثم

يوجد مشكلة في التوسع ألن

االتصال بقواعد البيانات يتم

. لمدة طويلةهحفظ

التوسع

DataSet تحوي عدد غير

محدد من الجداول في نفس

الوقت

Recordset تحوي على جدول

.قتواحد في نفس الو

تمثيل البيانات في الذاكرة

تمكن من عمل العالقات بعد

من قاعدة البيانات إحضارها

.DataRelationمن خالل

تتطلب ربط الجداول قبل

. من قواعد البياناتإحضارها

العالقات بين عدة جداول

يتم المرور على البيانات

.بشكل غير تسلسلي

يتم المرور على البيانات بشكل

.Recordsetخل تسلسلي دا

المرور على البيانات

و Dataset من خالل مهيأة

DataAdaptor.

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

127

Page 130: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: ADO.NET ـالنموذج الشيئي ل

من جزأين هماADO.NET ـ ل-ObjectModel– يتكون النموذج الشيئي

.Dataset مجموعة البيانات -١

net DataProvider Classes.مزودات البيانات -٢

:Dataset مجموعة البيانات

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

تعتمد على مصدر بيانات معين مما الDatasetيجب أن نالحظ أن .بإدارة هذه البيانات

بمجموعة كامل خاص وسوف يأتي فصل استخدامها مع أي مصدر بياناتإمكانيةيوفر

.البيانات

:net DataProvider Classes.مزودات البيانات

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

توفر هذه المزودات القدرة على و . لن تعمل هذه المزودات مع مصدر آخرو بالتاليالمصدر

يوجد العديد من هذه المزودات مثل . اإلتصال بقواعد البيانات و استعادة البيانات منها و تحديثها

Sql Server .net Data Provider .١-١٢(انظر الشكل( .

128

ADO.NETالنموذج الشيئي لــ : ١-١٢شكل Managed Provider

ConnectionConnection CommandCommand

DataAdapterDataAdapter

DataReaderDataReader

Clients / G

rids / Forms

DataSetDataSet

ConnectionConnectionDataTablesDataTables

Managed ProviderManaged Provider

ConnectionConnectionConnectionConnection CommandCommandCommandCommandCommandCommand

DataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapter

DataReaderDataReaderDataReaderDataReaderDataReaderDataReader

Clients / G

rids / Forms

Clients / G

rids / Forms

Clients / G

rids / Forms

DataSetDataSet

ConnectionConnectionDataTablesDataTables

DataSetDataSetDataSetDataSet

ConnectionConnectionConnectionConnectionDataTablesDataTablesDataTablesDataTables

Page 131: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

و ثم استرجاع من باستخدام مزودات البيانات لالتصال بمصادر البيانات وADO.NETتقوم

. تمثل هذه المزودات طبقة خفيفة بين ما تكتبه من شفرات و مصادر البياناتكتعديل البيانات لذل

:أنواع مزودات البيانات : وهيمزودات للبياناتمن نوعينيوجد

oledbتستطيع من خالل ، لالتصال بمصادر البيانات المختلفةوهو نوع عام : Oledbمزود -١

. أو أكسسMySQLأوراكل أو بقاعدة بيانات االتصال

وهو المزود الذي تم بنائه خصيصا : -Managed Data Provider– مزود البيانات المدار -٢

Native–هذا النوع من المزودات يسمى مزود أصلي . للعمل مع قاعدة بيانات محددة

Provider-هذا النوع ال و . ألنه يقوم بفعالية بالتعامل مع قاعدة البيانات التي بني من أجلها

)٢-١٢(انظر الشكل. يمكن أن يعمل مع قاعدة بيانات غير التي بني من أجلها

في حالة اختيار مزود بيانات أصلي فإن االتصال سيكون مباشرا بين الكود الذي :مالحظة

.ODBCأو ، Oledbتكتبه و بين قاعدة البيانات بينما توجد طبقة عندما تستخدم النوع العام

:عند تهيئة بيئة الدوت نت على حاسبك فإنه يوجد معها مزودا بيانات هما

.Oledbالمزود العام -١

.SQLServerمزود بيانات أصلي يعمل مع -٢

129

االتصال يقواعد البيانات من خالل مزودات البيانات : ٢-١٢شكل الكود الخاص بكالكود الخاص بك

OLE DB .NETOLE DB .NETData ProviderData Provider

OLE DBOLE DBProviderProvider

مخزن بياناتمخزن بيانات

SQL Client .NETSQL Client .NETData ProviderData Provider

SQL ServerSQL Server/ MSDE/ MSDE

ODBC .NETODBC .NETData ProviderData Provider

ODBCODBCDriverDriver

مخزن بياناتمخزن بيانات

MySQLMySQL Client .NETClient .NETData ProviderData Provider

MySQLMySQL 4.04.0

الكود الخاص بكالكود الخاص بك

OLE DB .NETOLE DB .NETData ProviderData Provider

OLE DBOLE DBProviderProvider

مخزن بياناتمخزن بيانات

SQL Client .NETSQL Client .NETData ProviderData Provider

SQL ServerSQL Server/ MSDE/ MSDE

ODBC .NETODBC .NETData ProviderData Provider

ODBCODBCDriverDriver

مخزن بياناتمخزن بيانات

MySQLMySQL Client .NETClient .NETData ProviderData Provider

MySQLMySQL 4.04.0

Page 132: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ثم قم ومن إذا رغبت بإضافة مزود بيانات أوراكل قم بإنزاله بالمجان من موقع مايكروسوفت

. الموجودةبتهيئته لتتم عملية إضافته إلى باقي المزودات

من فيجوال ٢٠٠٣سوف يكون مزود البيانات الخاص بأوراكل متوفرا في نسخة : مالحظة

.ستوديو دوت نت

: فضاءات األسماء التاليةتندرج مزودات البيانات تحت System.Data.SqlClient System.Data.OleDb

.ني فهو المزود العام أما المزود الثاSQLServerالمزود األول هو المزود األصلي لـ

:مكونات مزود البيانات

تبدأ أول ثالثة أحرف منها باسم المزود -Classes–فئات تتكون مزودات البيانات من أربعة

:وهي

تحت يندرج لالتصال بقواعد البياناتالفئة المخصصة : -Connection– كائن االتصال -١

:فضاءات األسماء التالية System.Data.OleDb.OleDbConnection System.Data.SqlClient.SqlConnection

Storedتنفيذ : لتنفيذ أمر ما مثل الفئة المخصصة : -Command– كائن األمر -٢

Procedure تحت فضاءات األسماء التالية ،ومثل تنفيذ عملية اضافة بيانات : System.Data.OleDb.OleDbCommand System.Data.SqlClient.SqlCommand

130

إلى تستخدم للقراءة فقط و البيانات يمكن قراءتها : -DataReader–كائن قارئ البيانات -٣

تحت .تستخدم لإلستعالم وتعتبر ذات أداء عالي جدا ، للخلفمام و ال يمكن الرجوع ألا

:فضاءات األسماء التالية

Page 133: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

٤- System.Data.OleDb.OleDbDataReader System.Data.SqlClient.SqlDataReader

–هو الكائن الذي يقوم بتعبئة مجموعة البيانات : -DataAdaptor–مهيئ البيانات -٥

Dataset- وكذلك يقوم بتنفيذ التعديالت التي أجريت على مجموعة البيانات وعكسها

: يندرج تحت فضاءات األسماء التالية . .على قواعد البياناتSystem.Data.OleDb.OleDbDataAdapter System.Data.SqlClient.SqlDataAdapter

131

Page 134: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

االتصال بقواعد البيانات

، لقراءة أو كتابة بيانات على قاعدة بيانات ما البد في البداية من إنشاء االتصال بقواعد البيانات

وكما مر بك سالفا فإنه بناء على اختيارك . -Connection–وهو ما يتم من خالل كائن االتصال

ونريد هنا أن نذكرك بأن . ذلك المزودوف تقوم باستخدام كائن االتصال الخاص بسلمزود البيانات

كائن االتصال يوجد في االمتداد التاليSystem.Data.OleDb

نظرا ألننا سوف Oledb سوف نقوم بالتعامل في جميع األمثلة مع مزود البيانات العام

.نستخدم قاعدة بيانات مايكروسوفت أكسس وهو مايتوفر في معظم األجهزة

ات ما البد من اعطاء كائن البيانات معلومات كافية عن قاعدة البيانات التي لالتصال بقاعدة بيان

تريد أن تتصل بها مثل مكان قاعدة البيانات و اسم قاعدة البيانات و كلمة المرور و الكلمة السرية

-Connection String– استخدم خاصية سلسلة االتصال .للدخول لقاعدة البيانات إن وجد

.لوماتالعطاء هذه المع

133

Page 135: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

سلسلة االتصال بقواعد البيانات

I. سلسلة االتصال ما هي – ConnectionString-:

بأنها عبارة عن عدد من هايمكن تعريفو، تعتبر سلسلة االتصال أحد خصائص كائن االتصال

تختلف بعض هذه العوامل بناء الضرورية لالتصال بقواعد البيانات -Parameters–العوامل

: يشمل الجدول التالي أهم العوامل في سلسلة االتصال .مزود البيانات على

الشرح العاملProvider هذه الخاصية هي اسم مزود ole وتستخدم فقط عندما ،لهذا االتصال

.OLE DBتقوم باستخدام مزود البيانات DataSource اسم خادم البيانات.

Intial Catalog اسم قاعدة البيانات. Integrated Security يحدد فيما إذا كان االتصال متكامل الثقة مع ويندوز.

ConnectionTimeout ويمثل الوقت الذي تتم فيه محاولة االتصال بقاعدة البيانات فإن لم يتم

تم ارجاع خطأ وتم افشال – بالثانية –االتصال خالل هذا الوقت

.ثانية ١٥االتصال علما بأن الوقت االفتراضي هو UserID/Password كلمة العبور لقاعدة البيانات واسم المستخدم.

. الشائعينoleو إليك هذا الجدول الذي يعطي أمثلة على أسماء مزودي

Oleاسم مزود قاعدة البيانات

Microsoft Access Microsoft.Jet.OLEDB.4.0

Microsoft SQL Server SQLOLEDB.1

Oracle MSDAORA.1

134

Page 136: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

II. أمثلة على سلسلة االتصال:

SQLServerبقاعدة بيانات لالتصال سلسلة -١

Provider=sqloledb;Data Source=SQL Server DB;Initial Catalog=Northwind;User ID=UserName;Password=password

سلسلة لالتصال بقاعدة بيانات أوراكل -٢Provider=MSDAORA;Data Source=Oracle DB;User ID=UserName;Password=password

سلسلة لالتصال بقاعدة بيانات مايكروسوفت أكسس -٣

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Mydb\db1.mdb;

الذي تقع فيه الصفحة التي -Directory– إذا كان موقع قاعدة البيانات في نفس الفهرس

.ج إلى كتابة الموقع كامال و إنما يكفي اسم قاعدة البياناتتتصل بقاعدة البيانات فإنك التحتا

III. طريقة سهلة لبناء سلسلة االتصال

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

:قم بما يلي . يوجد طريقة سهلة إلنشاء سلسلة االتصال. و بدون نسيان حرف أو فاصلة

.MyConnString.txt واعطه اسم TextFileقم بإنشاء ملف نصي -١

.)Universal Data Linkاختصار ( UDL إلى txt من امتدادهغير -٢

)١-١٣( ليظهر لك الشكلانقر مزدوج على الملف -٣

ثم اختر المزود الخاص بأكسس وهو Provider البيانات مزودشريط اختر -٤Microsoft.Jet.OLEDB.4

. Connection شريطاختر -٥

.يار قاعدة البيانات التي تريد أن تبني لها سلسلة اتصالقم باخت -٦

135

Page 137: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

.اضغط على زر موافق-٧

اختيار مزود البيانات : ١-١٣شكل

ليظهر لك . NotePadوافتحه بواسطة MyConnString.udlاذهب إلى الملف -٨

. يمثل سلسلة االتصالProviderابتداء من كلمة ، )٢-١٣(الشكل

الحظ أنه تم بناء سلسلة االتصال : ٢-١٣شكل

البياناتو إلغالق . وهي أحد طرق كائن االتصالOpenدم الطريقة

. وسوف يأتي الفرق بين الطريقتينDisposeو

136

تصال بقواعد فتح و اغالق االلفتح االتصال بقواعد البيانات استخ

أClose الطريقة استخدماالتصال

Page 138: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: و لنأخذ المثال التالي Dim con As New OleDb.OleDbConnection() con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ "C:\TelDir.mdb;Persist Security Info=False" con.Open() . . . . . con.Close

: في الكود السابق قمنا بما يلي

.oledb من نوع Conفي السطر األول أعلنا عن كائن اتصال -١

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

.بيانات خاصة بمايكروسوفت أكسس

.في السطر الثالث قمنا بفتح االتصال -٣

.النقاط كناية عن عمليات نقوم بها على قاعدة البيانات -٤

.Closeأخيرا أغلقنا االتصال من خالل الطريقة -٥

طرق فتح و إغالق االتصال

:لفتح و إغالق االتصال بقواعد البيانات هناك طريقتان توجد

االتصال وإغالقونعني به أن تقوم باستخدام وظيفة فتح : ظاهريا االتصال وإغالقفتح -١

: طريقة مفضلة لألسباب التالية تعتبر هذه الطريقةو . في الكودبشكل ظاهر

I. االتصالإغالقحيث يظهر بشكل واضح مكان فتح و . الكودسهولة قراءة

II. د على متابعة األخطاءتساع

وألنك تقوم بفتح و إغالق االتصال بنفسك يتوجب عليك إغالق ، في هذه الطريقة: مالحظة

: االتصال كلما انتهيت منه لألسباب التالية

a. قواعد البيانات لها عدد محدود من االتصاالتأكثر .

b. ترك االتصال مفتوحا يستهلك موارد كبيرة جدا.

كما في المثال التاليState االتصال هل هو مفتوح أو مغلق استخدم خاصية للتأكد من حالة

137

Page 139: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

if (ConnectionObject.State = ConnectionState.Open)

وهو أن يقوم مهيء البيانات بفتح االتصال عند تنفيذ : االتصال باطنيا إغالقفتح و -٢

في هذه الحالة ال تقوم . االتصال عند انتهائه من العمليةبإغالق ثم يقوم ،عملية ما

تستخدمعندما وذلك االتصال بل يقوم مهيء البيانات بذلكإغالقباستخدام وظيفتي فتح و

تقوم الدالة بالتأكد من وجود اتصال مفتوح بقاعدة Fill ،Updateإحدى الدالتين التاليتين

.إغالقهالبيانات لتستخدمه أو تقوم بفتح اتصال ثم

هل ،الق االتصال ظاهريا و باطنيا تعتمد على نوع البيئة التي تستخدمها عمليتا فتح و اغ

الفتح الظاهري خاص بالبيئة المتصلة و الفتح الباطني خاص . هي بيئة متصلة أو غير متصلة

.بالبيئة غير المتصلة

تصال بقواعد البيانات االتاستثناءامعالجة ع و البعض قبعضها متو، التشغيليةاالستثناءاتعند االتصال بقواعد البيانات قد تظهر بعض

يمكن تعريف .Try Catchتتم معالجة األخطاء التشغيلية من خالل عبارة . اآلخر غير متوقع

بأنه إما خطأ أو أداء غير متوقع إما من البرنامج نفسه أو من بيئة -Exception–االستثناء

اءات في الدوت نت مع العلم أنه لم يكن جديد لمعالجة االستثنأسلوبظهر .تشغيل البرنامج

موجودا في االصدار السابق من فيجوال بيسك و الذي كان يعالج األخطاء من خالل عبارة

Onerror .باستخدام تميكروسوف حال تنص Onerror في بيئة الدوت نت ألنه يحوي عدد

فيمكن معرفة محدود من المعلومات عن األخطاء أما في الطريقة الجديدة في الدوت نت

معلومات كثيرة مثل رقم السطر الذي حدث به الخطأ و اسم الدالة التي حصل بها الخطأ و

.لم يكن متوفرا في السابق اسم خادم البيانات وهو ما

138

Page 140: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

المعالجة الهيكلية لالستثناءات في بيئة الدوت نت

ل البرنامج حسب أثناء عملها االستجابة و األخطاءهي عبارة عن شفرات تكتب لتحديد

: السياق التاليTry Catch Finally End Try

:يمكن شرح سياق معالجة االستثناءات من خالل النقاط التالية

.Try أن تنفذه من كود في عبارة دما تريتكتب -١

أما عند عدم حدوث خطأ فال ينفذ . بمعالجة الخطأCatchعند حدوث خطأ يقوم سياق -٢

.Catchمحتوى عبارة

تنفيذها في كل األحوال وهي عبارة اختياريه تستطيع عدم استخدامها يتم Finallyعبارة -٣

.إذا لم تحتج لها

. المثال التالي يوضح استخدام هيكلية االستثناء في بيئة الدوت نتDim con As New OleDb.OleDbConnection() con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ "C:\TelDir.mdb;Persist Security Info=False" Try con.Open() Catch Exp As OleDb.OleDbException Label1.Text = Exp.Message Finally con.Close() End Try

: يمكن تلخيص المثال بالخطوات التالية

.دة البياناتفي السطر األول قمنا بتعريف اتصال بقاع -١

.في السطر الثاني قمنا بتعريف سلسلة االتصال -٢

.معالجة االستثناءاتبدأ سياق -٣

139

Page 141: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

.Openفتح االتصال من خالل طريقة -٤

.Catchإن حصل أي خطأ في فتح االتصال سوف ينتقل السياق إلى عبارة -٥

ثم عرضنا Oledb قمنا بتعريف متغير من نوع استثناء خاص بـ Catchفي عبارة -٦

.ة التي توضح االستثناء على أداة عنوانالرسال

.في كل األحوال سواء حصل استثناء أم لم يحصل سيتم إغالق االتصال بقاعدة البيانات -٧

:طبق ما سبق من خالل التدريب التالي

.قم بتغيير اسم قاعدة البيانات •

. االتصال بقاعدة البيانات باستخدام سلسلة االتصال السابقةحاول •

. على عنوانرسالةهناك خطأ قم بمعالجته مظهرا يجب أن يكون •

: االتصالأوعيةتم فيها االتصال بقاعدة البيانات يتم استهالك حجم كبير من موارد األجهزة يفي كل مرة

اتصاالت مما أوعية مجموعة من االتصاالت مجهزة في إبقاءالخادمة لذا تقتضي الحكمة

.يساعد على زيادة كفاءة النظام

I. ريفها تع: مجموعة من االتصاالت مفتوحة و إبقاءعبارة عن عملية يمكن تعريف أوعية االتصال بأنها

. استخدامها إعادةمجموعة في مكان ما ليتم بعد ذلك

II. شروط استخدامها: : االتصال أوعية الستخدام أساسيانيوجد هناك شرطان

تطابقا تاما حتى ق سلسلة االتصال وهو ما يعني تطاب : ال تختلف سلسلة االتصالنأ -١

. أسم المستخدم في سلسلة االتصال البد أن يتطابق

مع العلم أن القيمة االفتراضية هي أن وعاء االتصال : االتصالوعاء توظيف خاصية -٢

.موظف

بإنشاء بيئة التشغيلقوم تيتم استخدام نفس االتصال بل عند تخلف أحد الشرطين السابقين ال

. تم طلب ذلكإن جديد وعاءل جديد ومن ثم يتم وضعه في اتصا

140

Page 142: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

III . مميزاتها: : االتصال وهما أوعيةيوجد ميزتان هامتان تجعلنا نفكر في استخدام

حيث أن فتح إتصال جديد لكل مستخدم يشكل عبأ على خادم : لألنظمةأعلى أداء -١

.البيانات كما أنه يأخذ وقتا إلتمام فتح االتصال

القدرة على التوسع بكفاءة -٢

وذلك أن التوسع . االتصال بشكل صحيح قد تؤثر على اداء النظامأوعيةإذا لم يتم استخدام

.في إكثار االتصاالت في حوض االتصال يستهلك موارد خادم البيانات

االتصال في تطبيقات االنترنت و التطبيقات التي يعمل عليها أوعيةتتضح أهمية استخدام

في خادم البيانات تتم عملية تجميع االتصاالتيذكر أن. دمين كثرمستخ

. االتصاالتوعاء إلى االتصال ترحيل يتم Close االتصال بقواعد البيانات إغالق عند -١

. االتصاالتوعاء إلى إرجاعه االتصال من الذاكرة وال يتم إلغاء يتم Dispose االتصال إتالف عند -٢

: وعاء االتصاالتإلغاءد األمرين التاليين يتم حدوث أح عند-٣

. وعاءحذف آخر اتصال من •

.عند مرور وقت معين •

. االتصال الحالي المشغول ال يمكن استخدامه-٤

. االتصاالتوعاءالقيمة االفتراضية هي استخدام - ٥

. االتصاالتوعاء إلى إعادتهيتم عند ترك االتصال مفتوحا ال-٦

. االتصال في حالة اختالف اسم المستفيد في سلسلة االتصالوعاءيتم استخدام ال-٧

. على التوالي١٠٠ و ٠ هما Max و Min القيم االفتراضية للخاصيتين -٨

مع مستخدمين و جاء في نفس الوقت طلب اتصال من قبل مستخدم وعاء إذا تم شغل كل االتصاالت في ال-٩

الوقت ور اتصال ما وفي حالة مرإغالقصال و يتم وضع هذا الطلب في االنتظار حتى يتم طلب اتإرسالما فإنه يتم

Timeout تلبية الطلب فإنه يتم الرجوع بخطأ وعدم .

االتصاالتوعاءالعوامل المستخدمة في سلسلة االتصال وتخص الشرح العامل

141

Page 143: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Connection Lifetime االتصاالت قبل تدميرهوعاءالوقت بالثانية لمدة بقاء االتصال في . Max Pool Size االتصاالتوعاءالعدد األقصى من االتصاالت في . Min Pool Size االتصالوعاءالعدد األقل من االتصاالت في .

142

Page 144: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ADO.NETالبيئة المتصلة في

أنه في البيئة المتصلة توجد قناة اتصال ، مر بنا في باب البيئة المتصلة و البيئة الغير متصلة

االتصال بقاعدة البيانات ومن ثم يتم هدفمفتوحة مع قواعد البيانات حتى تتم عملية االنتهاء من

يمكن . مر و كائن قارئ البيانات بكائن األADO.NETتمثل هذه البيئة في . اغالق االتصال

.)١-١٤(تخيل عمل البيئة المتصلة من خالل الشكل

نموذج البيئة المتصلة في بيئة الدوت نت : ١-١٤شكل

العمل في البيئة المتصلة

ConnectionConnection CommandCommand

DataReaderDataReader

قواعد البيانات

العمل في البيئة المتصلةالعمل في البيئة المتصلة

ConnectionConnectionConnectionConnection CommandCommandCommandCommandCommandCommand

DataReaderDataReaderDataReaderDataReaderDataReaderDataReader

قواعد البيانات

: ة

.بقاعدة البيانات

.المراد إجراءها

.إن احتيج إلى ذلك

.ل بقاعدة البيانات

. كائن األمر و كائن قارئ البيانات، هي كائن االتصال :دم ثالث كائنات

143

طريقة عمل البيئة المتصل

يتم إنشاء اتصال -١

يتم تحديد العملية -٢

يتم قراءة البيانات -٣

يتم إغالق االتصا-٤

لعلك تالحظ أننا نستخ

Page 145: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:Commandكائن األمر

I. تعريفه: : من خالل تقسيم محتواه Commandيمكن تعريف الكائن

.-SQL Statement -ملة لغة استفسار بنائية ج إما أن يحوي-١

.-Stored Procedure- مخزن في قواعد البياناتجراءإ أو يحوي استدعاء -٢

يذ هذا المحتوى من خالل بعض الوظائف في هذا الكائن و إرجاع النتيجة إلى فومن ثم تستطيع تن

.DataReaderكائن قارئ البيانات

II. طريقة الوصول إليه:

: التالي فضاء االسميمكن الوصول لكائن األمر من خالل System.Data.OleDb.OleDbCommand System.Data.SqlClient.SqlCommand

III. ه صائصخ: :توجد عدة خصائص لكائن األمر تمكننا من التعامل معه وهي

الخاصية القيمة الشرح

يمثل اسم كائن األمر و الذي سوف تتعامل معه

في الكود

Name

اسم االتصال الذي سوف يقوم باستخدامه كائن

األمر

ل المستخدمكائن االتصا Connection

Text CommandType فيذ لغة استفسار بنائيةنت

StoredProcedur تنفيذ إجراء موجود في قاعدة البيانات

TableDirect التعامل مع جدول واحد

144

Page 146: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

عبارة لغة االستفسار البنائية التي سوف -١

يتم تنفيذها سواء السترجاع أو تحديث

بيانات

قاعدة البيانات وجود فيم الاإلجراءاسم -٢

.و الذي نريد تنفيذه

اسم الجدول الذي نريد التعامل معه -٣

الخاصيةاعتمادا على

CommandTypeالسابقة

سوف يكون لدينا واحد من

ثالث مدخالت

CommandText

تعتمد على القيمة التي تم اختيارها في Command Text القيمة المدخلة في خاصية

.CommandTypeالخاصية

IV. طرق كائن األمر: :سوف نتطرق ألهم ثالثة طرق في كائن األمر وهي

الهدف منها الطريقةExecuteReader أكثر من صف من قاعدة إرجاعتنفيذ استعالم مما يؤدي إلى

كائن قارئ بواسطة هذه النتيجة استرجاعيتطلب البيانات وهو ما

.البياناتExecuteNonQuery حديث قواعد البيانات أو تكوين قواعد البيانات و تنفيذ أمر يقوم بت

.النتيجة التي ترجع هي عدد الصفوف المتأثرة باألمرExecuteScalar تنفيذ أمر يسترجع قيمة واحدة فقط من قواعد البيانات.

تنفيذ األمر الذي يرجع قيمة واحدة •ت دالة حيث خصصADO على ADO.NETيجدر القول هنا بأن هذه من أوجه تفوق

.لتنفيذ األوامر التي ترجع قيمة واحدة

: ترجع إال قيمة واحدة من أمثلة األوامر التي ال

. مجموع مشتريات اليوم-١

. متوسط المشتريات هذا الشهر-٢

145

Page 147: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

. عدد المنتجات التي توجد داخل المستودع-٣

ا القيمة األولى كل القيم ماعدإهمال من قيمة فسوف يتم أكثر SQL جملة أعادتفيما لو

التي ADO من أقوى ADO.NETيظهر أن األول وهو مادالعامومن الصف األول و

.تعيد كل القيم

:الستخدام كائن األمر السترجاع قيمة واحدة من قاعدة البيانات انظر إلى المثال التالي

Dim con As New OleDb.OleDbConnection() Dim sql As String = "select count(*) from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try con.Open() Dim cmd As New OleDb.OleDbCommand(sql, con) Label1.Text = cmd.ExecuteScalar().ToString Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: الشرح

. في السطر األول اتصال بقاعدة البياناتناعرف -١

. جملة االستعالمناففي السطر الثاني عر -٢

. سلسلة االتصالناعرفر الثالث طفي الس -٣

جملة االستعالم و االتصال الذي إعطائه كائن األمر مع إنشاءمحاولة فتح االتصال ثم -٤

.سيقوم باستخدامه

.لتنفيذ األمر و التي سوف تعيد لنا نتيجة العملية ExecuteScalarقمنا بتنفيذ الطريقة -٥

.)٢-١٤( كما في الشكلقمنا بعرض النتيجة على أداة عنوان -٦

. في أداة عنوانإظهارهفي حالة حصول خطأ سيتم -٧

.استرجاع قيمة واحدة من قاعدة البيانات : ٢-١٤شكل

146

Page 148: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

مباشرة كما ترى ذلك \:cنسخ قاعدة البيانات الموجودة مع القرص المرفق وضعها في ا

ضع الكود السابق داخل حدث النقر في زر أمر، ثم طبق المثال، واضحا من سلسلة االتصال

)٢-١٤( كما يظهر من الشكل

تنفيذ األمر الذي يمكن أن يرجع عدة صفوف •

يقوم قارئ البيانات بقراءة البيانات إلى األمام وهو كما تالحظ من اسمه مخصص لقراءة

كنك استخدام قارئ البيانات للمرور عند تنفيذ كائن األمر الذي يرجع عدة صفوف يم.البيانات

.ExecuteReaderالسترجاع عدة صفوف استخدم الوظيفة .على هذه الصفوف

لذا ، عند قراءة البيانات باستخدام قارئ البيانات فإن االتصال يبقى مفتوحا حتى تقوم بإغالقه

ول لكائن يمكن الوص. االتصال حالما تقوم باالنتهاء من قراءة البياناتإغالقيجب عليك

: فضاء االسم التاليقارئ البيانات من خالل

System.Data.OleDb.OleDbDataReader System.Data.SqlClient.SqlDataReader

خصائص و وظائف قارئ البيانات : يمكن أن نستعرض أبرز خصائص قارئ البيانات من خالل الجدول التالي

وظيفة-خاصية الهدف منها

Read إذا لم يوجدFalse إذا وجد الصف أو True ترجع ،اليقراءة الصف الت

Item إما باستخدام اسم محدد أو رقمهدالعاموترجع قيمة

تستخدم السترجاع قيمة الصف كامال وقد تكون أكثر فعالية من استرجاع

لوحدهدالعاموقيمة

GetValues

Null isDBnullهل تحتوي قيمة

close ال يقوم بإغالق االتصال قارئ البيانات وهو إغالق

147

Page 149: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

sql RecordsAffectedعدد السجالت المتأثرة بجملة

كيف تستخدم قارئ البيانات لمعالجة الصفوفرئ البيانات السترجاع اسوف نستعرض مثاال يوضح لنا كيفية استخدام كائن األمر و كائن ق

:مجموعة من الصفوف من قاعدة البيانات Dim con As New OleDb.OleDbConnection() Dim rdName As OleDb.OleDbDataReader Dim sql As String = "select * from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try con.Open() Dim cmd As New OleDb.OleDbCommand(sql, con) rdName = cmd.ExecuteReader() Do While rdName.Read() ListBox1.Items.Add(rdName.GetString(1)) Loop rdName.Close() Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: لكي تستخدم قارئ البيانات لمعالجة مجموعة من الصفوف قم بالخطوات التالية

الخصائص المناسبةهائإعط إضافة كائن األمر و -١

اإلعالن عن قارئ البيانات -٢

فتح االتصال بقاعدة البيانات-٣

ExecuteReader استدعاء الوظيفة -٤

من Falseلصفوف حتى ترجع لك قيمة على ا و المرور Read استدعاء الوظيفة -٥

.Readالوظيفة

قارئ البياناتقإغال -٦

148

Page 150: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: األدوات التالية أضفلتنفيذ المثال السابق

القيمة الخاصية اسم األداةButton1 Name cmdExecute Text استرجاع بيانات الموظفين Label1 Name Label1 Text Name ListBox1 أداة عنوان

Form1 Text تنفيذ أمر يسترجع عدة صفوف RightToLeft Yes

يؤدي ذلك كما في العبارة التالية rdName = cmd.ExecuteReader

: قيمة بما يلي

العامل الذي آليا استخدم إلغالق االتصال بعد استخدامه (CommandBehavior.CloseConnection)

تنفيذ األمر الذي ال يرجع أي قيمة • تلخيص الحاالت التي يتم فيها تنفيذ األمر الذي ال يرجع يمكن

149

Page 151: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

إنشاء و إدارة هياكل قواعد البيانات -١

. أو حظر صالحية لمستخدم ماإعطاء -٢

و تعديل و حذف بيانات من جداول في قاعدة البياناتإضافة -٣

DDL إنشاء و إدارة هياكل قواعد البيانات .ستخدمة في إنشاء و إدارة هياكل قواعد البياناتهي اللغة الم •

: باألمثلة التاليةيمكن التمثيل لهياكل قواعد البيانات •

الجداول-١

٢- Viewالمستعرضات

Trigger المحفزات -٣

: من جمل تعريف هياكل البيانات

الهدف منها الجملةCreate دولتستخدم إلنشاء كائن في قاعدة البيانات مثل الج

ALTER تستخدم لتغيير صفات كائن في قاعدة البيانات DROP تستخدم كائن من قاعدة البيانات

DCLلغة التحكم بالبيانات . أو حظر صالحية لمستخدم ماإعطاءهي اللغة التي تمكنك من

:من جمل لغة التحكم بالبيانات

الهدف منها الجملةGrant صالحية لمستخدم على كائن في قاعدة البياناتتستخدم لمنح

DENY حظر الصالحية لمستخدم ما

DCL و DDL جملتيكيف تنفذ

150

Page 152: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

و ExecuteNonQueryيتم تنفيذ لغتي التحكم بالبيانات و تعريف البيانات باستخدام الوظيفة

رجاع عدد الصفوف المتأثرة تقوم هذه الوظيفة بإ. التي تعتبر احد الوظائف التابعة لكائن األمر

.بالعملية

DCL و DDLخطوات تنفيذ : و إدارة قواعد البيانات انظر إلى المثال التالي إنشاءلكي تستوعب طريقة تنفيذ جمل

Dim con As New OleDb.OleDbConnection() Dim sql As String = "create table MyNewTable (t5 varchar(10))" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try con.Open() Dim cmd As New OleDb.OleDbCommand(sql, con) Label1.Text = cmd.ExecuteNonQuery().ToString Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: من المثال قمنا بما يلي •

كائني االتصال و األمر كما تعلمت سابقااءإنش -١

فتح االتصال بقاعدة البيانات -٢

تحديد الجملة التي تريد تنفيذها -٣

ExceuteNonQueryاستدعاء وظيفة -٤

االتصال بقاعدة البياناتقإغال -٥

غير ذلك إذا لم إذا نجحت العملية و صفر قواعد البيانات إنشاء سوف تكون نتيجة عملية

.تنجح

DMLجمل تعديل البيانات جمل تعديل البيانات كما تدل عليها الترجمة الحرفية وهي الجمل التي تمكنك من اضافة و

تعديل و حذف بيانات من جداول في قاعدة البيانات

:جمل لغة تعديل البيانات هي

الهدف منها الجملة

151

Page 153: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

INSERT إلضافة بيانات إلى جدول في قاعدة وهي الجملة التي تستخدم

البياناتUPDATE وهي الجملة التي تستخدم لتحديث بيانات سبق ادخالها DELETE حذف صف أو أكثر من قاعدة البيانات

DMLكيف تنفذ و التي تعتبر احد ExecuteNonQueryيتم تنفيذ لغة تعديل البيانات باستخدام الوظيفة

تقوم هذه الوظيفة بإرجاع عدد صحيح يمثل عدد الصفوف .ف التابعة لكائن األمرالوظائ

.المتأثرة بالعملية

:انظر إلى المثال التالي لغة تعديل البيانات لكي تستوعب طريقة تنفيذ جمل

: أنشئ نموذجا و ضع فيه الكائنات التالية و غير خصائصها كما يلي -١

Dim con As New OleDb.ODim sql As String = "i"('" & TextBox1.Text &con.ConnectionString =

القيمة الخاصية اسم األداةButton1 Name cmdExecute Text الموظفإضافة سجل

Label1 Label2 اسم الموظف بالعربي

Label٣

اسم الموظف باإلنجليزيTextbox1

Textbox1 Yes

الكود التالي في حدث النقر لزر األمراكتب-2

leDbConnection() nsert into person (name,ename) values " & _ "','" & TextBox2.Text & "')" "Provider=Microsoft.Jet.OLEDB.4.0;Data Source" & _

Label1 Name Text Label2 Name Text

Label٣ Name

Text

Name مربع نص

Text

TextBox2 Name Text

Form1 RightToLeft

152

Page 154: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

"=C:\TelDir.mdb;Persist Security Info=False" Try con.Open() Dim cmd As New OleDb.OleDbCommand(sql, con) Label1.Text = cmd.ExecuteNonQuery().ToString Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: اتبع ما يلي لفهم المثال السابق •

كائني االتصال و األمر كما تعلمت سابقاأنشئ -١

افتح االتصال بقاعدة البيانات-٢

ExceuteNonQuery قم باستدعاء وظيفة -٣

االتصال بقاعدة البياناتأغلق -٤

عدد السجالت وهو يمثل ١ قيمة انظر الشكل النهائي بعد التنفيذ حيث رجع لنا-٥

المتأثرة

153

Page 155: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

استخدام العملية الواحدة ما هي العملية الواحدة

ينفذ بأنها مجموعة من العمليات التي إما أن تنفذ بالكامل أو الالعملية الواحدة يمكن تعريف

- Commit– فإنه سوف يتم االلتزامكل هذه العملياتإذا نجحت .اإلطالقمنها شيء على

ل العمليات في قاعدة البيانات أما إذا فشلت أي من العمليات فإنه سوف يتم التراجع عن كل بك

. – RollBack –عمليات التحديث في قاعدة البيانات

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

.البيانات

ة الواحدةأمثلة عملية على استخدام العملي : إليك هذا المثال من الواقع

جزأين هما المعلومات فاتورة إلى قاعدة البيانات فإن الفاتورة تتكون منإضافة عند -١

األصناف الفاتورة مثل تفاصيلها و الجزء الثاني هوتاريخ رقم الفاتورة و األساسية للفاتورة مثل

من جدول األساسي ثم استرجاع الرقم ات األساسيةالمعلوم إضافة في البداية البد من ،و الكميات

عند فشل إضافة التفاصيل يتوجب .الواحد تلو اآلخر التفاصيل إضافة ثم المعلومات األساسية

.التراجع عن اإلضافات السابقة و إال نتج عن ذلك فاتورة غير مكتملة البيانات

فإنه عند ي نفس الوقتضافة إلى حساب آخر فاإل و األولحسابال عند الخصم من -٢

نجاح عملية الخصم من الحساب األول و فشل عملية اإلضافة إلى الحساب الثاني فإن العملية كلها

.تعتبر عملية فاشلة يجب التراجع عنها و إال أصبح هناك خلل في البيانات

العملية الواحدةأنواعهذا . بيانات واحدة ال غيرفي هذه الحالة تستهدف العملية الواحدة قاعدة : عملية محلية •

.النوع سهل التطبيق ومدعوم من قبل جميع مزودي البيانات

في هذه الحالة تستهدف العملية الواحدة أكثر من قاعدة بيانات و يجب أن : عملية موزعة •

. يتم التراجع عنها كلهاأوتنجح كل العمليات التي تنتمي للعملية الواحدة

154

Page 156: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ADO.NETدة باستخدام كيف تدير العملية الواح

: اتبع الخطوات التالية ، هذه الخطوات توضح لك كيفية تنفيذ العملية الواحدة

وهي أحد الوظائف التابعة للكائن BeginTransaction قم باستدعاء الوظيفة -١ Connection

واجعل قيمته تساوي الوظيفة التي عرفتها Oletransaction عرف متغيرا من نوع -٢

١الخطوة رقم في

إلى المتغير الذي عرفته في Transaction من خالل خاصية اشر في كائن األمر-٣

٢الخطوة رقم

أما إذا لم تنجح العملية Commitإذا نجحت العملية قم باستدعاء . نفذ جميع األوامر -٤

Rollbackفقم باستدعاء

: انظر إلى المثال التالي الستخدام العملية الواحدةDim con As New OleDb.OleDbConnection() con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TelDir.mdb;Persist Security Info=False" con.Open() Dim cmd As New OleDb.OleDbCommand() Dim trans As OleDb.OleDbTransaction = con.BeginTransaction cmd.Connection = con cmd.Transaction = trans Dim sql1 As String = "insert into person (name,ename) values ('" & TextBox1.Text & "','" & TextBox2.Text & "')" Dim sql2 As String = "insert into Teltype (name,ename) values ('" & TextBox3.Text & "','" & TextBox4.Text & "')" Try cmd.CommandText = sql1 cmd.ExecuteNonQuery() cmd.CommandText = sql2 cmd.ExecuteNonQuery()

العملية الواحدة

حساب المدينحساب المدينحساب الدائنحساب الدائن

MyComponent

MyComponent ريال ريال ١٠٠١٠٠خصم خصم ريال ريال ١٠٠١٠٠إضافة إضافة

العملية الواحدةالعملية الواحدة

حساب المدينحساب المدينحساب الدائنحساب الدائن

MyComponent

MyComponent ريال ريال ١٠٠١٠٠خصم خصم ريال ريال ١٠٠١٠٠إضافة إضافة

155

Page 157: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

trans.Commit() Catch e1 As OleDb.OleDbException trans.Rollback() Label1.Text = e1.Message End Try

الحظ ، في المثال السابق الكود الموجود بخط عريض هو الكود الذي يقوم بإدارة العملية الواحدة

انات فإذا نجحت األولى ثم فشلت الثانية فإنه سوف يتم أننا نقوم بعمليتي إضافة على قواعد البي

.وهو ما يضمن بقاء قاعدة البيانات دقيقة، التراجع عن عملية اإلضافة األولى

درجات العزل ما هي درجات العزل

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

.د تضارب أكثر من عملية على نفس البياناتدرجة العزل المناسبة عن

: مثال في الدوت نت يوضح كيفية استخدام العزل HRMTran=HRMCon.BeginTransaction(isolationLevel.Serialzable

أمثلة لمشاكل العمل الجماعي

أشهر مثالين لمشاكل العمل الجماعيإعطاءيمكن

١- Dirty Read عندما تقوم عملية ما بقراءة بيانات يتم و تحصل : الملوثة القراءة

. التحديثات على قواعد البيانات- Commit– إلزام لم تتم لكنتحديثها من قبل عملية أخرى

. القراءة التي تتم في هذا الوقت قد ال تعطي معلومات دقيقة عن البياناتألنبالطبع

٢- Phantom Read ية ما بقراءة بيانات يتم وتحدث عندما تقوم عمل: القراءة الخيالية

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

156

Page 158: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ارشادات الختيار درجة العزل و تقوم باختيار IsolationLevel خاصية تسمى OLEDBTransactionيوفر لنا الكائن

BeginTransactionقيمة هذه الخاصية عندما تبدأ عملية واحدة

القيمة الشرح

بقراءة كل البيانات غيريسمحوهو العزل الذي

الملزمة في قواعد البيانات فلذلك سوف تحصل

Dirty Read و Phantom Read.

ReadUncommitted

في هذه الحالة يتم عزل جميع العمليات عن بعضها

Phantom Read و ال Dirty Readفال تحصل

Serializable

يعني أن وهو ماDirty Read منع سوف يتم

العملية لن تقرأ إال البيانات التي تم إلزام تحديثها في

Phantom Readقواعد البيانات لكن لن يتم منع

وهذه هي القيمة االفتراضية

Readcommitted

157

Page 159: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

DATASETالعمل مع مجموعة البيانات مجموعة من البيانات : في الفصل الذي تكلمنا فيه عن البيئة غير المتصلة قمنا بتعريفها كما يلي

لذلك . هذه التعديالت إلى مصدر البياناتإرجاعيتم نسخها و تعديلها من مصدر البيانات ومن ثم

. ندما يكون أداء النظام هو المحكعتعتبر البيئة غير المتصلة هي البيئة المثالية

يوجد كائنان . بمجموعة من الكائنات للعمل في البيئة غير المتصلةADO.NETزودنا ت

: أساسيان للعمل في البيئة غير المتصلة و هما

بيانات صغيرة موجودة في الذاكرة قاعدة هي عبارة عن : Dataset مجموعة البيانات -١

مجموعة من اكما يتوفر فيهربط هذه الجداول بعالقات جداول و إنشاء تمكنك من

ومع أن مجموعة البيانات. الوظائف المساعدة على تسهيل التعامل مع هذه البيانات

ال تكون حال مثاليا في حاالت أخرى مثل خيارا ممتازا في كثير من الحاالت إال أنها قد تعتبر

.قطأن تريد قراءة بيانات من قاعدة البيانات ف

DataSetDataSetDataSet

ل إما أن تقوم ببناء هيكله أو

لبيانات على عدد غير

له دالعاموخل جدول هذا

ة كما يوجد في قواعد

Tables

DataTable

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

DataViewManager

Tables

DataTable

Relations

DataRelation

DataRelation

RelationsRelations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

DataViewManager

: حسب ما يظهر من الشكل يمكن تقسيم مجموعة البيانات إلى

a. جدول بياناتDataTable : مثيل لجدوتعبارة عن

يمكن أن تحتوي مجموعة ا. تأخذه من مصدر بيانات

.محدود من الجداول

b. أعمدةDataColumn : دادلعامو عبارة عن تمثيل

نوع و اسم وطول و غير ذلك من مواصفات األعمد

.البيانات

159

Page 160: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

c. صفوفDataRow : وهي صفوف البيانات.

d. القيودDataConstarint : قيود توضع على األعمدة مثلUnique

Constraintر أو قيد عدم قابلية قيمة ا قيد عدم التكرNull.

e. قات العالDataRelation : بعد إنشاء الجداول تستطيع من خالل هذا الكائن

. عالقات بين هذه الجداولإنشاء

f. المستعرضاتDataView : مستعرض على جدول أو أكثر من إنشاءتستطيع

.خالل هذا الكائن

مالحظات عامة هامة حول مجموعة البيانات

.من الجداول تحتوي مجموعة البيانات عدد غير محدود أنيمكن •

RecordSet ـأقرب ما يمكن تشبيها ب •

DataAdaptorتتصل بقواعد البيانات من خالل •

الجداول إلى مجموعة البيانات الواحدة من مصادر متنوعة إضافةتستطيع •

MySQL,Oracle..ثم ربطها مع بعض

مجموعة البيانات ليس لها مزود بيانات محدد بل هي عامة لجميع مزودي البيانات •

تحول إلى اكس ام ال و العكس : Serializableجموعة البيانات متسلسلة م •

يقوم هذا الكائن باستخدام ثالثة كائنات باطنيا وهي قارئ : Data Adaptor مهيء البيانات-٢

يقوم بفتح االتصال بمصدر البيانات عن طريق كائن .نات و كائن األمر و كائن االتصالالبيا

كائن األمر لتنفيذ عملية ما ثم قارئ البيانات لقراءة البيانات و تعبئتها في االتصال ثم استخدام

مجموعة البيانات

160

Page 161: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

يمكن تقسيم مراحل التعامل مع

ت إلى الخطواتمجموعة البيانا

: التالي

.تعبئة مجموعة البيانات بواسطة مهيء البيانات -١

.إن كان هناك احتياج ربط الجداول بعالقات -٢

.التعامل مع البيانات -٣

التأثير على قواعد -٤

.البيانات بواسطة مهئ البيانات

ء الجداول و

ات من قواعد

OriginalDataStore

DataSet

Table1

Table2

انشاء العالقاتانشاء العالقات

DataSet

Table1

Table2

التعامل مع البياناتالتعامل مع البيانات

DataSet

Table1

Table2

التأثير على قواعد التأثير على قواعد البياناتالبيانات

استخراج البيانات عن استخراج البيانات عن AdaptorAdaptorOriginalطريق طريق

DataStore

DataSet

Table1

Table2

انشاء العالقاتانشاء العالقاتانشاء العالقاتانشاء العالقات

DataSet

Table1

Table2

التعامل مع البياناتالتعامل مع البياناتالتعامل مع البياناتالتعامل مع البيانات

DataSet

Table1

Table2

التأثير على قواعد التأثير على قواعد البياناتالبيانات

التأثير على قواعد التأثير على قواعد البياناتالبيانات

استخراج البيانات عن استخراج البيانات عن AdaptorAdaptorطريق طريق

استخراج البيانات عن استخراج البيانات عن AdaptorAdaptorطريق طريق

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

أن تقوم بإنشاء مجموعة البيانات و إنشا : برمجيا هيكل البياناتإنشاء -١

.األعمدة و العالقات بنفسك ومن ثم إضافتها إلى مجموعة البيانات

أن تحضر هيكل البيان: بناء مجموعة البيانات من هيكل قاعدة البيانات -٢

.البيانات و تبني مجموعة البيانات بناء على هذا الهيكل

161

Page 162: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

برمجيا هيكل البيانات ءإنشا

مجموعة البيانات من قاعدة بملءتعتبر هذه الطريقة قليلة االستخدام ألن أغلب التطبيقات تقوم

سوف تساعدك هذه الطريقة على فهم قريب لمجموعة . هيكل البياناتإحضار يما يعنبيانات وهو

: التالية سوف ننشئ هيكل البيانات لمجموعة البيانات في الخطوات. البيانات

إلنشاء مجموعة بيانات برمجيا قم بكتابة . الخطوة األولى هي إنشاء مجموعة البيانات-١

: األمر التاليDim dsTelDir As New DataSet()

.dsTelDirيقوم األمر السابق بإنشاء مجموعة بيانات اسمها

إلنشاء .تي سبق إنشائها جدول ثم إضافته إلى مجموعة البيانات الإنشاء الخطوة الثانية -٢

:جدول و إضافته إلى مجموعة البيانات قم بما يليDim dtPerson As DataTable = dsTelDir.Tables.Add()

هذا أسندناحديثا ثم أناها نشأفي العبارة السابقة قمنا بإضافة جدول إلى مجموعة البيانات التي

جدول إلى مجموعة بيانات و عدم إضافة عند .dtPerson و اسمه أنشأناهالجدول إلى جدول

و العدد اكس هو تصاعدي حسب عدد الجداول الموجودة في TableXتسميته فإنه يأخذ اسم

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

األمر التالي يقوم . إلى جدول داخل مجموعة البياناتدعاموالخطوة الثالثة هي إضافة -٣

: ومن ثم إضافته إلى جدول دعاموبإنشاء Dim colName As DataColumn = dtPerson.Columns.Add("Name", GetType(System.String)) colName.AllowDBNull = FalsecolName.Unique = True

:في الخطوة السابقة قمنا بما يلي

a. وعينا له اسم -حقل– دعاموإضافة Name و نوع String.

b. قيم إدخالوضعنا قيد منع Null

c. استخدمنا قيد وحيد في السطر الثالثUniqueلمنع تكرار نفس القيمة .

: سوف نحاول تطبيق كل الخطوات السابقة من خالل المثال التالي Dim dsTelDir As New DataSet() Dim dtPerson As DataTable = dsTelDir.Tables.Add() Dim colName As DataColumn = dtPerson.Columns.Add("Name", GetType(System.String))

162

Page 163: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

colName.AllowDBNull = False colName.Unique = True MessageBox.Show(dtPerson.TableName) MessageBox.Show(dsTelDir.Tables.Count.ToString())

: في هذا المثال طبقنا كل الخطوات السابقة ثم أظهرنا رسالتان

.الرسالة األولى نقوم بعرض اسم الجدول -١

.الثانية نقوم فيها بعرض عدد الجداول في مجموعة البياناتالرسالة -٢

إنشاء قيد المفتاح الرئيسي في قيمتهتكررت أو أكثر ال يمكن أن دعاموتحوي الجداول في قواعد البيانات على

: من أمثلة المفتاح الرئيسي . أي صف من صفوف الجدول

رقم الموظف في جدول الموظفين -١

دول األصنافرمز الصنف في ج -٢

: المثال التالي يوضح كيفية إنشاء قيد المفتاح الرئيسي Dim myTable As DataTable = New DataTable() Dim myColumn As DataColumn myColumn = New DataColumn() myColumn.DataType = System.Type.GetType("System.String") myColumn.ColumnName = "FirstName" myTable.Columns.Add(myColumn) myTable.PrimaryKey = New DataColumn() {myTable.Columns("FirstName")}

: يمكن شرح المثال السابق بالخطوات التالية

.دعامو جدول ثم أنشأنا أنشأنا -١

دالعاموحددنا نوع البيانات و اسم -٢

إلى الجدولدالعاموقمنا بإضافة -٣

: الرئيسي من خالل العبارة قمنا بتحديد المفتاح -٤myTable.PrimaryKey = New DataColumn() {myTable.Columns("FirstName")}

عبارات رياضيةإنشاءمثل أن يكون الحقل األول يمثل ، نتيجة حسابات لحقول أخرىيكون حقل تعرضقد تحتاج أن

ني ثم هناك حقل يمثل مجموع الثااالختباردرجة االختبار األول و الحقل الثاني يمثل درجة

163

Page 164: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

مماثل في دعامو يأخذ قيمه من الحسابات و ال يكون له دبعامو يمثل هذا الحقل. الدرجات

أحد خصائص ي وهExpressionخاصية يمكن إضافته باستخدام . قواعد البيانات غالبا

.DataColumnالكائن

: لننظر إلى المثال التالي الذي سوف يبرز الفكرة Dim ColUnitPrice As New DataColumn("Price", GetType(System.Decimal)) Dim ColQuantity As New DataColumn("Quantity", GetType(System.Decimal)) Dim TotalCost As New DataColumn("Total", GetType(System.Decimal)) Dim mytable As New DataTable() TotalCost.Expression = "Price * Quantity" mytable.Columns.Add(ColUnitPrice) mytable.Columns.Add(ColQuantity) mytable.Columns.Add(TotalCost) Dim myRow As DataRow myRow = mytable.NewRow() myRow("Price") = 5 myRow("Quantity") = 1 mytable.Rows.Add(myRow) Label2.Text = mytable.Rows(0).Item(2)

: ةتوضيح المثال السابق بالخطوات التالييمكن

TotalCost و ColQuantity و ColUnitPriceتعريف ثالثة أعمد وهي -١

ريف جدولعت -٢

* Price بأنه عبارة رياضية و عينا له قيمة TotalCost دالعاموقمنا بتعريف -٣

Quantity خرين اآلنالعامودي وهو حاصل ضرب.

ى الجدولأضفنا األعمدة إل -٤

جديدقمنا بتعريف صف -٥

عينا لهذا الصف قيمة وهي صف جديد من الجدول الذي يحوي ثالثة حقول و بالتالي فإن -٦

. ونتيجة ضربهما١ و ٥ هي قيم من ثالثتكونيهذا الصف سوف

. للكمية١ للسعر و ٥ قيمة أضفنا -٧

نا بإضافة هذا الصف للجدولمق -٨

٥و سوف تكون قيمته على أداة عنوان-فةمجموع التكل–قمنا بعرض العنصر الثالث -٩

. على المعادلة التي أنشأناهابناءألنه تم حسابها

164

Page 165: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

بناء مجموعة البيانات من هيكل قاعدة البيانات : لبناء مجموعة بيانات بناء على قاعدة بيانات يوجد هناك طريقتان

.استخدام واجهة تطوير الدوت نت -١

.بناء ذلك برمجيا -٢

تطوير الدوت نتواجهة استخدام ل إلى قواعد البيانات ومن ثم بناء واجهات وتعتبر هذه الطريقة من الطرق السريعة للوص

النماذج يعتبر طريقة جيدة لما يسمى إنشاءاستخدام مساعد . تتعامل مع قواعد البيانات

: التالي ك ويتم مجموعة البيانات إنشاءفي البداية البد من . -Prototype–بالنمذجة

من خالل نافذة مستكشف الخادم كما يظهر .TelDir االتصال بقاعدة البيانات بإنشاءم ق -١

في الشكل

. Add Connectionختر

ر المزود الخاص بأكسس وهو

ختر

ثم ا Data Connectionقم بنقر زر الفأرة األيمن على -٢

ثم اختProvider البيانات خانة مزوداختر سيظهر لك الشكل

Microsoft.Jet.OLEDB.4 اختر خانةConnection اثم

TelDir قاعدة البيانات

165

Page 166: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

في مربع األدوات كما يظهر من Dataوالذي يوجد في خانة ( مهيء البياناتأنشء -٣

سوف تظهر لك رسالة ترحيب. وذلك بإضافته إلى النموذج )الشكل

. انقر التالي

تماالتصال الذي د استخدامه قم باختيار

في حالة . إلى قواعد البيانات الوصول

،انقر التالي، من الشكل كما يظهر

تري تصال الذيشاشة اختيار اال سوف تظهر لك -٤

.ثم انقر على التالي .كما يظهر من الشكل إنشائه

اختيار طريقةكسوف تظهر لك شاشة تطلب من -٤

إال االختيار األولدال يوجس سأك مايكروسوفت

166

Page 167: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

انقر على زر .

قائمة بالجداول الموجودة

ف تظهر

.موافق

جمل

تم

تريد تنفيذها التيSQLلك شاشة تسألك عن جملة سوف تظهر -٥

QueryBuilder تظهر لك سوف. إلنشاء الجملة بطريقة سهلة

سو. ثم انقر موافقPerson قم باختيار الجدول. في قاعدة البيانات

ثم انقر ID،Name اختر الشكل ما ترى فيكلك حقول هذا الجدول

.التالي سوف ترجع إلى الشاشة األولى انقر

جميع أنواعإنتاجيخبرك بأنه تم سوف يظهر لك الشكل و الذي -٦

الحظ أنه. إنهاءنقر على زر ا االستفسار البنائية للجدول الذي اخترت

. كائني اتصال و مهيء بياناتإنشاء

167

Page 168: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ثم . بالزر األيمن على مهيء البيانات ليظهر لك الشكل مجموعة البيانات قم بالنقرإلنشاء -٧

Generate Data Set اختر

قم تسميتها . ي يطلب منك أن تزوده باسم مجموعة البيانات

Add This قم بإزالة عالمة االختيار عن. كل

ر على زر موافق سوف تالحظ أنه تم إضافة

.لحلول

أضف زر أمر على النموذج و البيانات إلى مجموعة

داخل حدث يأضف الكود التالربع األدوات ثم

168

سوف يظهر لك الشكل و الذ -٨

dsPersonكما يظهر لك من الش

Dataset to The Designer انق

إلى مستكشف اdsPerson.xsdملف

لتحميل البيانات من قاعدة البيانات -٩

من مDatagridأضف شبكة بيانات

Page 169: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

النقر لزر أمر

Dim ds As New DataSet() Me.OleDbConnection1.Open() Try Me.OleDbDataAdapter1.Fill(ds) DataGrid1.DataSource = ds.Tables(0) Catch Ex As OleDb.OleDbException MessageBox.Show(Ex.Message) End Try Me.OleDbConnection1.Close()

: بما يلي قمفي الكود السابق

عرفنا مجموعة بيانات -١

قمنا بفتح االتصال الذي سبق وأن أنشأناه -٢

. مهيء البيانات الذي سبق إنشائهبواسطة مجموعة البيانات بملءقمنا -٣

ليتم عرضهDatagrid إلى -الجدول األول– الجدول رقم صفر أرجعنا -٤

اات برمجي

مجموعة البيانبناء

169

Page 170: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

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

دون أن تحتاج إلى بناء هيكل البيانات ألن هيكل البيانات بتم تكوينه بعد استرجاع البيانات من

: الخصائص التالية أعطها قم بإضافة األدوات التالية و .قاعدة البيانات

القيمة الخاصية اسم األداةButton1 Name cmdFillGrid

Text معلومات األشخاصإحضار Label1 Name Label1

Text dataGridName DataGrid1

Form1 Text مجموعة البيانات برمجيا RightToLeftYes

:قم بإضافة الكود التالي في حدث النقر الخاص بزر األمر Dim con As New OleDb.OleDbConnection() Dim dsperson As New DataSet() Dim sql As String = "select id,name from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim da As New OleDb.OleDbDataAdapter(sql, con) da.Fill(dsperson, "Person") DataGrid1.DataSource = dsperson.Tables("Person") Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: ةمن الكود السابق يمكن توضيح النقاط التالي

التي نريد sql جملة عرفنابيانات ثم مجموعة نافعر اتصال بقاعدة البيانات ثم ناعرف -١

.ثم عرفنا سلسلة االتصال، أن نسترجعها

االتصال الذي سيستخدمه : قمنا بتعريف مهيء البيانات و أعطيناه عامالن هما -٢

. ينفذهاأن التي نريد sqlالسترجاع البيانات و جملة .sqlملئ مجموعة البيانات بنتيجة جملة االستفسار -٣ . كما يظهر لك من الشكل ليتم عرضه Datagrid األشخاص إلى قمنا بإرجاع جدول -٤

. الحظ أننا لم نقم بفتح االتصال بقاعدة البيانات ألن مهيء البيانات يقوم بذلك

170
Page 171: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تطوير واجهة النظام اآلنلذلك سوف نقوم . تعتبر شبكة البيانات من أهم أدوات عرض البيانات و التعامل معها

لو نظرنا . أن نطور شكل عرضها و كيفية تعامل مجموعة البيانات معهاباستكشاف كيف يمكن

رقم الموظف كما جاء من قاعدة البيانات دعاموإلى المثال السابق لوجدنا أنه قد ظهر لنا عنوان

و يظهر idماذا لو أردت أن تغير هذا االسم ليكون باللغة العربية فيظهر رقم الموظف بدال من

.Nameمن اسم الموظف بدال

لجداول في شبكة البيانات ومن ثم تجعل هذه الجداول هي واجهات تلك تصميمتستطيع أن تنشيء

Personقم بالخطوات التالية لكي تنشأ مظهر لجدول . البيانات التي في مجموعة البيانات

: daالموجود في مجموعة البيانات

واضغط زر االنتقال . TableStylasاذهب إلى خصائص شبكة البيانات لتجد الخاصية -١

مجموعة أنماط الجداول ستظهر لك نافذة تحرير .المجاور لها

DataGri

من ضمن مجموعة

dTableStyle1 سيضاف الكائن.Addاضغط زر اإلضافة -٢

الموجود Personالجدول هو واجهة سوف يكون هذا. للمجموعة

.البيانات

171

Page 172: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

وهو اسم الجدول في مجموعة Personبة قم بكتاMappingNameاختر خاصية -٣

..البيانات و الذي سوف يعرض من خالل هذا الشكل

لبيانات هنا

لهذه الخاصية ليظهر

G ، اذهب إلى

i الموجود في

ما هذا هو ، ف

و اذهب إلى

. اكتب اسم الموظف

ته كما يظهر قام هاتف

.أس و تفاصيل

بربط أعمدة الجدول الموجود في مجموعة ا هذه الخطوة سوف تقوم -٤

انقر على النقاط الثالثة المقابلة . لنتمكن من إعطائها خصائص كما نريد

ridColumnStyle ليتم إضافة Addاضغط زر اإلضافة . لك الشكل

d دبالعامو ليتم ربط هذا الكائن id و اكتب MappingNameالخاصية

و اكتب رقم الموظHeaderText اذهب إلى خاصية Person الجدول

كائنا آخر أضف. رقم الموظف في شبكة البياناتدلعامو عنوانا رسيظه

MappingName و اكتب name. اذهب إلى خاصيةHeaderTextو

ثم شغل البرنامج ليظهر لك الشكلOk ثم Okاضغط

البيانابعرض أر

ها بشكل ر

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

الموظف ثم عرضأرقامالحظ كيف تم عرض اختيار . من الشكل

172

Page 173: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:قم بتغيير الكود في المثال السابق ليكون كما يلي Dim con As New OleDb.OleDbConnection() Dim Myds As New DataSet() Dim sql(1) As String sql(0) = "select id,name from person" sql(1) = "select ID,Number,person from Phone" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql(0), con) Dim daPhone As New OleDb.OleDbDataAdapter(sql(1), con) daPerson.Fill(Myds, "Person") daPhone.Fill(Myds, "Phone") Myds.Relations.Add("املوظف هاتف أرقام"," & _ "Myds.Tables("Person").Columns(0), Myds.Tables("Phone").Columns(2), True) DataGrid1.DataSource = Myds Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: لتوضيح الكود التالي افهم الخطوات التالية

.تعريف اتصال ثم تعريف مجموعة بياناتتم -١

األول من ، مصفوفة مكونة من صفين كل واحد منهما يمثل جملة استعالمتعريفتم -٢

. الهاتفمجدول الموظفين و الثاني من جدول أرقا

قمنا بتعريف مهيئتي بيانات األولى لتنفيذ االستعالم الخاص بالموظفين ثم وضع نتيجته في -٣

تنفذ االستعالم مهيئة البيانات الثانية سوف ، في مجموعة البياناتPersonجدول اسمه

الثاني و الذي يقوم باسترجاع رقم الموظف و أرقام هواتفه ثم وضعنا النتيجة في جدول

..Myds داخل مجموعة البيانات Phoneاسمه

173

Page 174: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

دالعاموة هي األهم حيث قمنا بربط الجدولين ببعضهما البعض من خالل وهذه الخط -٤

الثاني في جدولدعاموال و الذي يمثل رقم الموظف و نالموظفياألول في جدول

Phoneو الذي يمثل كذلك رقم الموظف .

. بعرض نتيجة مجموعة البيانات كاملة على شبكة البياناتقمنا -٥

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

:هي المثال إن أفضل طريقة للفهم . مجموعة البيانات

ثم عرض في المثال التالي نقوم بالبحث عن الصف الذي يحوي اسم الموظف عبداهللا

: رقم أول موظف في نتيجة البحثDim SearchRow() As DataRow = Myds.Tables("Person").Select("name='عبداهللا'") MessageBox.Show(SearchRow(0).Item(0))

ترتب نتيجة البحث حسب حقل ما تصاعديا أو تنازليا ؟ ماذا لو أردت أن

في المثال التالي نقوم بالبحث عن الصف الذي يحوي اسم الموظف عبداهللا ثم ترتيب

: نتيجة البحث حسب الرقم من األعلى إلى األدنى Dim SearchRow() As DataRow = Myds.Tables("Person").Select("name='عبداهللا'", "id DESC") MessageBox.Show(SearchRow(0).Item(0))

الحظ أننا أضفنا عامال ثانيا لدالة البحث وهو ما نريد أن نرتب النتيجة بناء عليه وهو رقم

وهو ما يرتب النتيجة من األعلى إلى األدنىDESCالموظف ثم أتبعناه بخيار الترتيب

استخدام المستعرضات عرضات لكن أحد استخداماتها الشائعة هي ترشيح عرض الصفوف لذلك تتعدد استخدامات المست

.تعتبر المستعرضات أحد طرق البحث في مجموعة البيانات

174

Page 175: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

في المثال التالي سنقوم بإنشاء مستعرض ومن ثم البحث فيه وترتيب الصفوف الناتجة

: من عملية البحث Dim DV As New DataView(Myds.Tables("Person")) DV.RowFilter = "name='عبداهللا'" DV.Sort = "ename" في المثال السابق قمنا بإنشاء مستعرض للصفوف التي تحتوي اسم عبداهللا ثم رتبنا الصفوف في

.المستعرض بناء على االسم األخير

برنامج البحث في مجموعة البياناتو أن يكون هناك زري اختيار فكرة هذا البرنامج ه، ةنبني برنامجا يطبق األفكار السابق سوف

أحدهما للبحث في مجموعة البيانات التي في الذاكرة و الثاني السترجاع البيانات من قواعد

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

: قم بتصميم الشاشة حسب الشكل و حسب الخصائص الموجودة في الجدول

القيمة الخاصية داةاسم األ

Button1 Name cmdSearch

175

Page 176: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Text بحث Label1 Name Label1

Text RadioButton1Name btnNewData

Text البحث بنسخة محدثة RadioButton1Name rdoDSSearch

Text البحث في مجموعة البيانات dataGrid Name DataGrid1

Form1 Text البحث عن الموظفين RightToLeftYes

قم بإضافة الكود التاليPublic Class SearchProj Inherits System.Windows.Forms.Form Dim Myds As New DataSet() Private Sub cmdSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSearch.Click Dim con As New OleDb.OleDbConnection() Dim sql As String = "select id,name,ename from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" If rdoNewData.Checked Then Myds.Clear() Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") End If If Myds.Tables.Count = 0 Then Exit Sub Dim DV As New DataView(Myds.Tables("Person")) DV.RowFilter = "name Like '" & txtEmpName.Text & "*'" DV.Sort = "ename" DataGrid1.DataMember = "" DataGrid1.DataSource = Nothing DataGrid1.DataSource = DV End Sub End Class

: هذا الكود هو الموجود بخط عريض الذي يخص موضوعنا من

نتأكد من أن مجموعة البيانات تحوي على جدول واحد على األقل -١

نعرف المستعرض على أنه مستعرض لجدول األشخاص -٢

176

Page 177: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

عن أول جزء يدخله البحث الحظ وجود النجمة وهو ما يعني أننا نريد ، عرفنا المرشح -٣

ظر عن باقي االسميطابق هذا الجزء بغض الن المستخدم ثم نحضر كل ما

قمنا بالترتيب حسب االسم األخير -٤

فرغنا شبكة البيانات من أي بيانات -٥

انظر الشكل النهائي بعد التنفيذ، أعدنا عرض البيانات على شبكة البيانات -٦

177

Page 178: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Data Bindingربط البيانات تستطيع من خالل تقنية ربط البيانات ربط أداة بحقل في قاعدة البيانات يقوم فيه الحقل بعرض

بيانات ذلك الحقل ومن ثم تستطيع التنقل بين البيانات إلى األول و األخير و التالي و السابق و في

كل هذه العملية التحتاج إلى . عد البياناتحالة تعديل البيانات يمكنك عكس هذه التعديالت على قوا

.جهد كبير بل بضعة أسطر من الكود للتم عملية الربط و التنقل بين السجالت

في هذا المثال سنقوم بعرض بيانات الموظف من خالل ربط أداة مربع النص : مثال

:التالية انظر الشكل و قم بتصميمه حسب الخصائص . باسم الموظف و التنقل إلى الموظفين

القيمة الخاصيةاسم األداةButton1Name cmdNext

Text التالي

Button٢Name cmdPerv

Text السابق

Button٣Name cmdFirst

Text األول

Button٤Name cmdLast

Text األخير

Button٥Name btnFetch

Text بياناتال إحضارLabel1Name Label1

Text Label٢Name Label1

176

Page 179: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Text اسم الموظف

Label٣Name lblCurrent

Text رقم السجل

Name ListBox1 أداة عنوان

Form1Text تنفيذ أمر يسترجع عدة صفوف RightToLeft Yes

قم بتطبيق خاصية تجزيء الجمل حتى يتسنى عرض األسطر الطويلة في أسطر : مالحظة

كما يلي وءةومقرمقطعة Edit Advance Word Wrap

:سوف نعرض الكود كامال ثم نقوم بشرحه

Public Class DataBinding Inherits System.Windows.Forms.Form Dim WithEvents bmb As BindingManagerBase Dim Myds As New DataSet() Private Sub btnFetch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFetch.Click Dim con As New OleDb.OleDbConnection() Dim sql As String sql = "select id,name from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try txtEmpName.DataBindings.Add("Text", Myds, "Person.name") bmb = Me.BindingContext(Myds, "Person") bmb.Position = bmb.Count bmb.Position = 0 End Sub Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click bmb.Position += 1 End Sub Private Sub cmdPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrev.Click bmb.Position -= 1 End Sub Private Sub cmdLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLast.Click

177

Page 180: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

bmb.Position = bmb.Count - 1 End Sub Private Sub cmdFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFirst.Click bmb.Position = 0 End Sub Private Sub bmb_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles bmb.PositionChanged lblCurrent.text = String.Format("{0} of {1}", bmb.Position + 1, bmb.Count) End Sub End Class

: يمكننا شرح المثال السابق من خالل النقاط التالية

Dim WithEvents bmb As BindingManagerBaseعرفنا متغير على مستوى النموذج -١

الكائن الذي يقوم بتنسيق العالقة بين كائنات الربط و مجموعة بمكن وصف هذا المتغير بأنه

عند االنتقال من سجل إلى آخر فإن هذا الكائن يقوم باعالم كائنات فعلى سبيل المثال. البيانات

الربط بأن رقم السجل الحالي قد تغير و أنه يتوجب تغيير القيمة المعروضة على األدوات إلى

.القيمة الجديدة التي تم اإلنتقال إليها

.ظفين في السطر الثاني قمنا بتعريف مجموعة البيانات التي ستحوي بيانات المو-٢

قمنا بإحضار البيانات و وضعها في btnFetch في حدث النقر الخاص بزر األمر -٣

: الجديد في الموضوع هنا هو الجمل التالية . مجموعة بيانات txtEmpName.DataBindings.Add("Text", Myds, "Person.name") bmb = Me.BindingContext(Myds, "Person") bmb.Position = bmb.Count bmb.Position = 0

Person.name بالحقل txtEmpName في الجملة األولى قمنا بربط مربع النص

و الخاصية . Textالحظ أننا قمنا بربط الخاصية . Mydsالموجود في مجموعة البيانات

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

Checked . في الجملة الثانية نقوم بتحديد اطار الربط ألن النموذج قد يحوي أكثر من اطار

واحد فعلى سبيل المثال قد تقوم بربط بعض األدوات بجدول الموظفين و بعضها بجدول أرقام

.ر األمرانعاش ألزراأما في السطرين الثالث و الرابع فنحن نقوم بعملية . الهاتف

في األحداث الخاصة بالتنقل بين السجالت تالحظ أننا نقوم بالتنقل بين السجالت من -٤

. Postionخالل خاصية

178

Page 181: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

يتم تنفيذه كلما تغيير موقع السجالت فنقوم bmb_PositionChangedالحدث -٥

.بهذه الحالة بعرض رقم السجل الحالي و رقم مجموع السجالت

الشكلقم بتشغيل البرنامج ليظهر لك -٦

ربط بيانات رأس بتفاصيلانشاء نموذج يربط بيانات رئيسية ببيانات فرعية يعتبر تحصيل حاصل بفضل الطريقة القوية

فعلى سبيل ، ماعليك إال أن تضيف شبكة البيانات و التي ستظهر البيانات الفرعية. بربط البيانات

بمجرد انتقالك يتم عرض أرقام هاتفه في المثال ماذا او أردت أن تنتقل من موظف إلى آخر و

.شبكة البيانات

بتصميم الشكل التالي حسب الخصائص الموضحة في المثال السابق مع إضافة قم

:شبكة بيانات كما يظهر لك

سوف نعرض ، في الحقيقة الكود في هذا المثال هو نفس الكود في المثال السابق مع زيادة ال تذكر

.وسوف نجعل الزيادة بخط عريض حتى تالحضهاالكود اآلن

Dim con As New OleDb.OleDbConnection()

179

Page 182: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

Dim Myds As New DataSet() Dim sql As String sql = "select id,name from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Dim daPhone As New OleDb.OleDbDataAdapter("select & _ ID,Num,person from Phone", con) daPhone.Fill(Myds, "Phone") Myds.Relations.Add("PersonPhone",Myds.Tables("Person").Columns(0), & _ Myds.Tables("Phone").Columns(2), True) Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try Myds.WriteXml("da.xml") txtEmpName.DataBindings.Add("Text", Myds, "Person.name") DataGrid1.DataSource = Myds DataGrid1.DataMember = "Person.PersonPhone" bmb = Me.BindingContext(Myds, "Person") bmb.Position = bmb.Count bmb.Position = 0

: اإلضافات هي كما يلي

.عرفنا مهيء بيانات إلحضار أرقام الهاتف -١

.Phone و اسمينا الجدول Mydsقمنا بتعبئة البيانات في مجموعة البيانات -٢

برقم Personقمنا بإنشاء عالقة بين الجدولين و ذلك بربط رقم الموظف في الجدول -٣

PersonPhone و اسمينا العالقة Phoneالموظف في الجدول

قمنا بعرض البيانات على شبكة البيانات و ذلك بتعيين مجموعة البيانات إلى شبكة -٤

قيمة تمثل اسم العالقة التي datamemberالبيانات مع مالحظة أننا اسندنا إلى الخاصية

جدول الحظ أننا ابتدأنا باسم الPerson.PersonPhoneالجدولين وهي أنشأنها بين

الرئيسي ثم اسم العالقة قم بتنفيذ البرنامج ليظهر لك الشكل -٥

180

Page 183: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

181

Page 184: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تحديث البيانات في البيئة المنفصلةمر بك في الباب الخاص بالبيئة المنفصلة بأن تعريف البيئة المنفصلة هي مجموعة بيانات يتم

العمليات على هذه البيانات إجراءنسخها من قاعدة البيانات ثم قطع االتصال بقاعدة البيانات و

و كما مر بك سابقا . ت إلى قاعدة البيانات كل ما تم من عملياإرجاعإضافة و حذفا و تعديال ثم

فإن من عيوب هذه البيئة إمكانية حدوث تضارب في تعديل البيانات وهو مايتطلب حل هذه

عرفت في الفصل الخاص بمجموعة البيانات كيفية استرجاع مجموعة بيانات و عرضها . المشاكل

ت و من ثم ارجاع هذه التعديالت ما تبقى هو الجزء الخاص بتعديل مجموعة البيانا، على نموذج

.إلى قواعد البيانات و حل أي مشكلة تنتج عند تعديل البيانات

قبول و رفض التعديالتأي أن ، نظرا ألن مجموعة البيانات يعتبر مخزن بيانات موجود في ذاكرة المستفيد من البيانات

جموعة البيانات ال يتم عكسه هذه البيانات مفصولة عن قاعدة البيانات فإن كل تعديل يتم على م

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

البحث عن هذه األخطاء وعرضها للمستخدم لكي محاولة تحديث قواعد البيانات وهو ما يتطلب

: من أمثلة هذه األخطاء . يتم تعديلها

هذه القواعد أو القيود ال تنتقل : روضة على الحقول مخالفة قواعد العمل أو القيود المف -١

ماذا لو كان هناك قيد على أحد ، إلى مجموعة البيانات بل تظل موجودة في قاعدة البيانات

عديل تإن محاولة ، الحقول يمنع أن يتكرر هذا الحقل أو يفرض قيمة موجبة لهذا الحقل

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

.ماذا لو أراد مستفيد تعديل قيمة لحقل قام بحذفها مستفيد آخر -٢

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

نك أضفته إلى إضافة صف إلى مجموعة بيانات ال يعني إضافته إلى قاعدة البيانات بل يعني أ

فلو ، مجموعة البيانات الموجودة في الذاكرة و تم وضع عالمة عليه لتميزه بأنه صف تم إضافته

توقف الجهاز عن العمل لسبب ما و ضاع ما في الذاكرة فإن كل اإلضافات التي قمت بها قد

. ذهبت أدراج الريح ألنه لم يتم تحديث قواعد البيانات بها

182

Page 185: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

:وعة بيانات كما يلي تتم إضافة صف إلى مجم

و التي تنتمي إلى كائن الجدول إلنشاء صف جديد NewRowاستخدم الطريقة -١

هذا الصففي عين قيم كل حقل من حقول -٢

قم بتمرير الصف و إضافته إلى مجموعة صفوف الجدول -٣

ل فعلى سبي، قبل إضافة أي قيمة إلى الجدول يتوجب عليك التأكد من عدم مخالفتها لقواعد العمل

.المثال إذا كان المدخل ال يقبل القيم السالبة تأكد من أن القيمة المدخلة موجبة

:أمثلة متنوعة إلضافة صفوف

:لتطبيق كل الخطوات الثالث السابقة إليك هذا المثال Dim dtPerson As DataTable = Myds.Tables(0) Dim dr As DataRow = dtPerson.NewRow() dr("name") = "عبداللـه" dr("ename") = "Abduallah" dtPerson.Rows.Add(dr) MessageBox.Show(Myds.Tables(0).Rows.Count)

: يمكن شرح المثال السابق بالخطوات التالية

.له قيمة صف فارغ من جدول األشخاصأنشأنا صف جديد من نوع صف بيانات و عينا -١

.عينا قيم كل حقل في هذا الصف -٢

أضفنا الصف كامال إلى جدول األشخاص -٣

أظهرنا رسالة قبل عملية اإلضافة و بعدها لتظهر عدد الصفوف في الجدول -٤

الحظ أننا لم نعين قيمة لرقم الموظف لكونه رقما تسلسليا يتم إنشائه بواسطة قواعد

.البيانات

: فيك هذه الصيغة و التي سوف تعمل بنفس الطريقة في المثال السابقيكMyds.Tables("Person").Rows.Add(New Object() {Nothing, "عبداللـه","Abduallah"})

. لرقم الموظف حتى يتم تعيينه من قبل قاعدة البياناتNothingقمنا بوضع قيمة

183

Page 186: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تحديث صفوف في مجموعة البيانات في إضافة صفوف إلى مجموعة البيانات فإن الصفوف التي يتم تعديلها هنا ال يتم كما مر بك

.تعديلها في قواعد البيانات إنما يتم تعديلها في مجموعة البيانات في الذاكرة

اإلنجليزي للصف إليك هذا المثال الذي سنقوم فيه بتعديل اسم الشخص العربي و اسمه

: األخيرDim dtPerson As DataTable = Myds.Tables(0) Dim dr As DataRow = dtPerson.Rows(dtPerson.Rows.Count - 1) dr("name") = "عبداللـه" dr("ename") = "Abduallah"

في المثال التالي سنقوم بتعديل االسم اإلنجليزي لكل األشخاص لكي تصبح قيمه فارغة Dim dtPerson As DataTable = Myds.Tables(0) Dim dr As DataRow For Each dr In dtPerson.Rows dr("ename") = "" Next

حذف الصفوف من مجموعة البيانات : يوجد طريقتان لحذف صف من مجموعة البيانات

المثال ، و التي تعتبر أحد طرق الصف في مجموعة البياناتDeleteاستخدام الطريقة -١

: جموعة بيانات التالي يوضح كيف يتم حذف صف من مMyds.Tables(0).Rows(1).Delete()

. بوضع عالمة على الصف تدل على أنه تم حذفهDeleteتقوم الطريقة كما ، مجموعة البيانات و التي تقوم بإلغاء هذا الصف من Removeاستخدام الطريقة -٢

:يوضح ذلك المثال التالي Dim dr As DataRow = Myds.Tables(0).Rows(1) Myds.Tables(0).Rows.Remove(dr)

.تم حذف الصف من مجموعة البيانات لكن لم يتم حذفه من قاعدة البيانات

184

Page 187: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

قبول أو رفض التعديالتسبق و أن بينا لك أن كل ما تقوم به من عمليات على مجموعة البيانات ال يتم عكسه على قواعد

فلو قمت بإضافة صف إلى مجموعة ، مليةالبيانات بل يتم وضع عالمة على الصف المتأثر بالع

وهذا ، البيانات فسوف يتم وضع عالمة عليه تدل على أنه صف تم إضافته إلى مجموعة البيانات

هذه العالمة يتم وضعها . الكالم ينطبق على كل صف تقوم بحذفه أو تعديله في مجموعة البيانات

و إليك الحاالت ، ة حالة الصفتمثل قيمة هذه الخاصي. Rowstate صف من خالل خاصية للك

: المحتملة لكل صف

الوصف الحالةAdded مجموعة البياناتتمت إضافة هذا الصف إلى.

Deleted من مجموعة البياناتالصفتّم حذف هذا . Detached إلى اآلن ولكنّه لم يحفظ في مجموعة البياناتالصفتّم إنشاء هذا . Modified في مجموعة البياناتالصف تّم تعديل هذا.

Unchanged الصفلم يتّم تغيير محتويات.

من المقدمة السابقة نستطيع استنتاج أننا نستطيع استخالص البيانات التي قام المستفيد بتحديثها في

إلى قاعدة البيانات، يمكنك أن تُرسل فقط صفوف المجموعة فبدال من إرسال كّل مجموعة البيانات

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

.البيانات و لشبكة االتصال

:Rowstateالمثال التالي يوضح كيف نعرف حالة صف ما من خالل خاصية Dim dtPerson As DataTable = Myds.Tables(0) Dim dr As DataRow = dtPerson.NewRow() MessageBox.Show(dr.RowState) dr("name") = "عبداللـه" dr("ename") = "Abduallah" dtPerson.Rows.Add(dr) MessageBox.Show(dr.RowState)

ثم . في المثال السابق قمنا بعرض حالة الصف بعد إنشائه لكن قبل حفظه في مجموعة البيانات

.قمنا بعرض حالته بعد حفظه في مجموعة البيانات

185

Page 188: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ديث قواعد البياناتتحسوف نقوم باستعراض أكثر من طريقة لتحديث قواعد البيانات لتالحظ الفرق بينها فيما يتعلق

:باألداء و استهالك موارد النظام يمكن القول بأن هناك وسيلتان لتحديث قواعد البيانات

تستهلك وهذه الطريقة غير فعالة و: ارسال كل مجموعة البيانات إلى قواعد البيانات -١

: المثال التالي يوضح هذه الفكرة . موارد كبيرة من الشبكة و خادم البيانات

: كل مجموعة البيانات إلى قاعدة البيانات إرسالالمثال التالي يوضح Dim Myds As New DataSet() Dim con As New OleDb.OleDbConnection() Dim sql As String = "select id,name,ename from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Myds.Tables("Person").Rows.Add(New Object() {Nothing, ({"Abdulallah" ,"عبداهللا" Dim ComBuilder As New OleDb.OleDbCommandBuilder(daPerson) daPerson.InsertCommand = ComBuilder.GetInsertCommand daPerson.Update(Myds, "Person") Catch e1 As OleDb.OleDbException MessageBox.Show(e1.Message) End Try

:في المثال السابق قمنا بما يلي

.عرفنا مجموعة بيانات و اتصال ثم أعلنا عن االستعالم ثم عينا قيمة لسلسلة االتصال -١

.عرفنا مهيء البيانات ثم استرجعنا البيانات و عبئنا مجموعة البيانات -٢

.ى هذه اللحظة لم يتم تحديث قواعد البياناتحت، أضفنا صف إلى مجموعة البيانات -٣

نظرا ألن مهيء البيانات ال يمكنه ، قمنا بتعريف األمر الذي سيقوم بتحديث قواعد البيانات -٤

يحوي جملة اإلضافة إلى قواعد البيانات فقد أنشأنا جملة أن يحدث قواعد البيانات ألنه ال

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

CommandBuilder.

. وهي أحد طرق مهيء البياناتUpdateتم تحديث قواعد البيانات من خالل الطريقة -٥

186

Page 189: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

في المثال السابق أضفنا إلى مجموعة البيانات صفا واحد لذلك قمنا باستخدام وظيفة اإلضافة

انات استخدم وظائف الحذف صفوف في مجموعة البيتحديثعند حذف أو ، الخاصة بباني األمر

والتحديث كما يليdaPerson.DeleteCommand = ComBuilder.GetDeleteCommand daPerson.UpdateCommand = ComBuilder.GetUpdateCommand

تعتبر هذه الطريقة أفضل من الطريقة : إرسال السجالت المحدثة في مجموعة البيانات -٢

. رسال السجالت التي تم تحديثها فقطاألولى حيث تقوم هذه الطريقة با

مجموعة البيانات إلى الصفوف المتأثرة بالتحديثات فيالمثال التالي يوضح إرسال

:قاعدة البيانات Dim Myds As New DataSet() Dim con As New OleDb.OleDbConnection() Dim sql As String = "select id,name,ename from person" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Myds.Tables("Person").Rows.Add(New Object() {Nothing, ({"Harith" ,"حارث" If Myds.HasChanges Then Dim AffectedDS As DataSet = Myds.GetChanges Dim ComBuilder As New OleDb.OleDbCommandBuilder(daPerson) daPerson.InsertCommand = ComBuilder.GetInsertCommand daPerson.Update(AffectedDS, "Person") End If Catch e1 As OleDb.OleDbException MessageBox.Show(e1.Message) End Try

: فارق بين الطريقة األولى وهذه الطريقة ال

لنرى هل تم تحديث أي صف من صفوف Haschangesقمنا باستخدام الطريقة -١

.مجموعة البيانات أم ال

بعد ذلك قمنا بتعريف مجموعة بيانات لكي تحوي الصفوف التي تم تحديثها فقط وهو -٢

تخدام الطريقة اسباستطعنا استرجاع الصفوف التي تم تحديثها . صف واحد فقط

Getchangesوالتي ستقوم باسترجاع الصفوف التي تم تحديثها فقط .

.قمنا بإرسال الصفوف المحدثة فقط ليتم تحديث قواعد البيانات -٣

187

Page 190: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

حل التعارض في تحديث البيانات، فيما سبق من األمثلة كنا نفترض أن المستخدم هو الوحيد الذي يقوم بتحديث قواعد البيانات

عند العمل الجماعي على قواعد البيانات . فتراض في الواقع قد ال يكون صحيحالكن هذا اال

سوف تحصل تضاربات عند محاولة تحديث نفس البيانات من قبل أكثر من مستخدم وهو ما

أنت غني عن التعريف أننا حين نعمل مع مجموعة ، يتطلب إيجاد حل لهذه التضاربات

و أن مستخدما استرجع بيانات الموظف خالد و لماذا . فصلةالبيانات فنحن نعمل في البيئة المن

ثم قام الموظف األول بتعديل اسم خالد في مجموعة ، قام موظف آخر باسترجاع نفس البيانات

البيانات إلى علي وبعد ذلك قام بتحديث قاعدة البيانات في نفس الوقت قام الموظف اآلخر

.تضارب في التعديلهنا سوف يحصل ، بتعديل اسم خالد إلى محمد

عندما يجد أمر التحديث أنه حصل تعارض في التحديث فإنه يتوقف عن تحديث باقي

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

في أغلب األحيان ترغب أن تتم عملية تحديث البيانات وعند حصول تعارض . سياق استثناء

تحديث صف ما يتم االنتقال إلى الصف الذي يليه حتى يتم االنتهاء من تحديث كل صفوف في

هذا ما تستطيع عمله من خالل استخدام الخاصية ، الجدول في مجموعة البيانات

ContinueUpdateOnErrorوهي أحد خواص مهيء البيانات .

:ContinueUpdateOnErrorالمثال التالي يوضح كيفية استخدام خاصية daPerson.ContinueUpdateOnError = Tru daPerson.Update(Myds, "Person") If Myds.HasChanges Then End If

: في المثال السابق منا بما يلي

و التي سوف تمكن من االنتقال إلى ContinueUpdateOnErrorإعمال خاصية -١

.الصف التالي في حالة حدوث تعارض في تحديث البيانات

قمنا بتحديث قاعدة البيانات -٢

إذا تحقق هذا الشرط فقد ، وضعنا الشرط الذي سوف يبين لنا هل حدث تعارض أم ال -٣

.حدث تعارض وهو ما يتطلب منا حل هذا التعارض

188

Page 191: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

عرض الصفوف التي لم يتم تحديثهاعند حدوث تعارض في تحديث البيانات يتوجب عليك عرض هذه الصفوف التي لم يتم تحديثها

.في قاعدة البيانات مع إيضاح لسبب عدم التحديث حتى يستطيع المستفيد اتخاذ قرار ما

: المثال التالي يوضح كيفية عرض الصفوف المتعارضة

كما يتضح من الجدول ، قم بإضافة نموذج جديد ثم أضف زري أمر على هذا النموذج -١

:التالي القيمة الخاصية اسم األداةButton1 Name cmdGetData

Text صفتحديثاحضار البيانات و Button1 Name cmdUpdate

Text محاولة تحديث البيانات Form Name ResolveConfilct

: هذا هو الكود للبرنامج كامال Public Class ResolveConfilct Inherits System.Windows.Forms.Form Dim Myds As New DataSet() Dim con As New OleDb.OleDbConnection() Dim sql As String = "select id,name,ename from person" Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) Dim dtPerson As DataTable Dim dr As DataRow Private Sub cmdUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUpdate.Click Try If Myds.HasChanges Then Dim AffectedDS As DataSet = Myds.GetChanges Dim ComBuilder As New OleDb.OleDbCommandBuilder(daPerson) daPerson.ContinueUpdateOnError = True daPerson.UpdateCommand = ComBuilder.GetUpdateCommand daPerson.Update(AffectedDS, "Person") Dim ConfilctRowCount As Integer = AffectedDS.Tables("Person").GetChanges.Rows.Count

Dim ConflictRow As DataRow

For Each ConflictRow In AffectedDS.Tables("Person").Rows If ConflictRow.RowState = DataRowState.Modified Then MessageBox.Show(" الصف حتديث يف خطأ حدث" & ConflictRow(1), "حتديث تعارض ("تعارض" ,"البيانات End If Next End If Catch e1 As OleDb.OleDbException MessageBox.Show(e1.Message)

189

Page 192: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

End Try Private Sub cmdGetData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetData.Click con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" daPerson.Fill(Myds, "Person") dtPerson = Myds.Tables(0) dr = dtPerson.Rows(dtPerson.Rows.Count - 1) dr("name") = "عبداللـه" dr("ename") = "Abduallah" End Sub

: سوف نشرح اآلن الكود الذي بخط عريض ألن باقي الكود سبق شرحه

عرفنا متغيرا من نوع صف لكي نستخدمه في أخذ قيمة الصفوف التي حدث فيها تعارض -١

فوف التي حدث لها تعارض عرفنا متغيرا من نوع رقم صحيح ثم استرجعنا عدد الص -٢

.في التحديث

عملنا تكرار الستخراج كل الصفوف التي حدث لها تعارض ومن ثم سوف يتم عرض -٣

.هذا التعارض للمستفيد في رسالة

190

Page 193: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

ADO.NET و XML XMLمقدمة عن يتم تمثيل المعلومات داخل ملفات . بأنه معيار لوصف المعلومات الرقميةXMLيمكن تعريف

XML تجدر اإلشارة إلى أن هناك فارقا . و البحث فيهاقراءتها بشكل هرمي مما يسهل عملية

رض لتوضيح كيفية ع HTMLتستخدم ملفات . XML وملفات HTMLكبيرا بين ملفات

. البيانات على المتصفح لكنها في نفس الوقت ال تمتلك أي معلومة عن المحتوى الذي يتم عرضه

أنها تحوي معلومات عن ما لعرض البيانات كXMLعلى النقيض من ذلك تستخدم ملفات

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

XMLكما أن هناك فارقا آخر وهو أن . والذي يبين محتواها لمتلقي البياناتXSDالخاص بها

تحوي عددا محدودا من العالمات المهيئة HTMLتمكن المستفيد من بناء الهيكل الذي يريد فإن

يوجد فئات خاصة بــ، تقنية مدعومة بشكل كبير في بيئة الدوت نتXMLتعتبر . لإلستخدام

XML مرتبطة بـ ADO.NET. من أهم ما يميز XML أنها ملفات نصية و هو ما يجعل نقل

. هذه الملفات بين أنظمة التشغيل و التطبيقات أمرا يسيرا

XMLنظرة على ملف

XMLيمثل المثال التالي نموذجا لملف <?xml version="1.0" standalone="yes"?> <NewDataSet> <Person> <id>1</id> <name>خالد</name> </Person> <Person> <id>2</id> <name>امحد</name> </Person> <Person> </NewDataSet>

يحوي هذا الملف على ، الحقاهقمنا بإنتاج هذا الملف من خالل مجموعة البيانات وهو ما سترا

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

قبل id قبل االسم وكلمة nameالحظ وجود كلمة ، موظفان األول اسمه خالد و الثاني اسمه أحمد

فتمثل اسم Personأما كلمة . هاتان الكلمتان تمثالن اسما الحقل في مجموعة البيانات. الرقم

.الجدول

192

Page 194: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

XMLمجموعة البيانات و : كما يلي XMLعامل مع ملفات توفر لنا مجموعة البيانات مجموعة من الطرق للت

.XMLتستطيع كتابة ما تحتويه من بيانات في ملف -١

. ومن ثم تعبئته في مجموعة بياناتXMLتستطيع قراءة ملف -٢

XMLكتابة محتوى مجموعة بيانات في

لتوضيح كيفية . WriteXML هي XMLالطريقة األساسية في مجموعة البيانات لكتابة ملف

: ة سوف نأخذ المثال التالي استخدام هذه الطريق Dim con As New OleDb.OleDbConnection() Dim Myds As New DataSet() Dim sql As String = "select id,name from person where id=1" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Myds.WriteXml("dsPerson.xml") Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try

: في المثال السابق قمنا بما يلي

أعلنا عن اتصال و مجموعة بيانات -١

في السطر الثالث عرفنا جملة االستعالم والتي يجب أن ترجع لنا موظفا واحد -٢

نفذنا االستعالم ثم وضعنا نتيجة االستعالم في مجموعة البيانات -٣

XML ملف لكتابة محتوى مجموعة البيانات فيWriteXmlقمنا باستخدام الطريقة -٤

و الذي يقع داخل مجلد Binسوف يتم انشاء الملف في المجلد ، dsPerson.xmlاسمه

.المشروع

. الناتج من الكود السابقXMLهذا هو محتوى ملف -٥<?xml version="1.0" standalone="yes"?> <NewDataSet> <Person> <id>1</id> <name>خالد</name> </Person> </NewDataSet>

193

Page 195: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

XMLقراءة ملف .ReadXml و من ثم كتابته في مجموعة بيانات استخدم الطريقة XMLلقراءة ملف

Myds.WriteXml("dsPerson.XML") Dim ds As New DataSet() ds.ReadXml("dsPerson.XML")

: في المثال السابق قمنا بما يلي

XMLكتابة ملف -١

عرفنا مجموعة بيانات جديدة -٢

ا بقراءة محتوى الملف إلى هذه المجموعةقمن -٣

XML محتوى مجموعة البيانات على شكل استرجاعالمثال التالي يقوم . Getxml قم باستخدام الطريقة XMLمجموعة البيانات على شكل السترجاع

في XML كما تالحظ عرض ملف . في مربع نصxmlبعرض مجموعة البيانات على شكل

ع النص ب الخاصة بمرText لخاصية XMLبيئة الدوت نت شيء يسير جدا فمجرد أن تعين ملف

.فإن ذلك كفيل بعرض هذا الملفTextBox1.Text = Myds.GetXml

في المثال السابق نفترض أنه تم إنشاء مجموعة بيانات ثم ملئها من جدول األشخاص بعد ذلك

XMLقوم باسترجاع محتوى مجموعة البيانات على شكل و التي تGetXmlاستخدمنا الطريقة

.ثم عرضنا ذلك على مربع نص

لمجموعة بياناتXMLاسترجاع هيكل كما يلي. GetXmlSchema لمجموعة بيانات استخدم الوظيفة XMLإذا اردت استرجاع هيكل

TextBox1.Text = Myds. GetXmlSchema

194

Page 196: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

XMLبرنامج التعامل مع : كما يظهر من الشكلقم بانشاء نموذجكل الطرق السابقة لتطبيق

: إعطائها الخصائص التالية ضع األدوات مع

القيمة الخاصية اسم األداةButton1 Name cmdWritexml

Text كتابة ملفXML Button1 Name cmdGetXml

Text عرض مجموعة البيانات بشكلxml Button1 Name cmdReadXml

Text قراءة ملفXML Button1 Name cmdGetSchema

Text استرجاع هيكلxmlبيانات لمجموعة Label1 Name Label1

Text TextBoxName TextBox1

MultiLine True Scrollbars Both

Form1 Text التعامل مع تقنيةXML RightToLeftYes

195

Page 197: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تاليكتابة الكود البقم Public Class WriteXml Inherits System.Windows.Forms.Form Dim Myds As New DataSet() Private Sub cmdWritexml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWritexml.Click Dim con As New OleDb.OleDbConnection() Dim sql As String = "select id,name from person where id=1" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Try Dim daPerson As New OleDb.OleDbDataAdapter(sql, con) daPerson.Fill(Myds, "Person") Myds.WriteXml("dsPerson.xml") Catch e1 As OleDb.OleDbException Label1.Text = e1.Message End Try End Sub Private Sub cmdReadXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReadXml.Click Myds.WriteXml("dsPerson") Dim ds As New DataSet() ds.ReadXml("dsPerson") End Sub Private Sub cmdGetXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetXml.Click TextBox1.Text = Myds.GetXml End Sub Private Sub cmdGetSchema_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetSchema.Click TextBox1.Text = Myds.GetXmlSchema End Sub End Class

: يمكن تلخيص أهم ما يقوم به الكود من خالل النقاط التالية

الحظ أنه يوجد أربعة اجراءات كل واحد منها خاص بحدث النقر لزر أمر من األزرار -١

.التي سبق إنشاؤها

.XMLكل واحد من اإلجراءات يقوم بتطبيق طريقة من طرق التعامل مع -٢

يقوم بكتابة محتوى مجموعة البيانات في ملف cmdWritexml_Clickاإلجراء -٣

XML.

في Myds يقوم بكتابة محتوى مجموعة البيانات cmdReadXml_Clickاالجراء -٤

إلى مجموعة XML ثم يقوم بإنشاء مجموعة بيانات أخرى وقراءة ملف XMLملف

. البيانات

لى شكل يقوم بقراءة محتوى مجموعة البيانات عcmdGetXml_Clickاالجراء -٥

XMLانظر الشكل. ثم عرضها على مربع نص

196

Page 198: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

يقوم بقراءة محتوى مجموعة البيانات على cmdGetSchema_Clickاالجراء -٦

انظر الشكل. ثم عرض هذا الهيكل على مربع نصXMLشكل هيكل

197

Page 199: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

إنشاء التقارير

تعلمنا فيما سبق من فصول كيفية التعامل مع البيانات لكن بقي شيء واحد ومهم وهو كيفية

:لعرض التقارير توجد هناك طريقتان أساسيتان وهما . عرض و طباعة التقارير

إنشاء التقارير خارج بيئة الدوت نت ثم استدعائها و إرسال العوامل المناسبة إلخراج -١

فعلى سبيل المثال لو كنت محترفا في بناء التقارير باستخدام مصمم التقارير في :التقرير

بناء التقرير الذي تريد ومن ثم استدعاء هذا التقرير باستطاعتكمايكروسوفت أكسس فإن

. من بيئة الدوت نت

. انشاء التقارير من خالل كائنات كريستال ريبورت و التي توجد مع بيئة الدوت نت -٢

.ن محور حديثنا عن الطريقة الثانيةسوف يكو

يوجد مصمم كريستال . تقدم تقارير كريستال قوة ممتازة في بيئة الدوت نت لتصميم التقارير

بعد إنشائك للتقرير . للتقارير و الذي يمكنك من انشاء تقرير جديد أو تحديث تقرير سبق انشاؤه

.ق مكتبي أو تطبيق يعمل على االنترنتتستطيع استخدامه في تطبيقك سواء كان هذا التطبيق تطبي

انشاء تقرير بواسطة كريستال ريبورت

: إلنشاء تقرير بواسطة كريستال ريبورت اتبع الخطوات التالية

.CrystalDemoابدأ مشروع جديد في بيئة الدوت نت و سمه -١

وذلك بنقر زر الفأرة األيمن علىأضف ملف كريستال جديد من خالل مستكشف الحلول -٢

قم بتسمية هذا الملف بــ . ليظهر لك الشكلAddالمشروع ومن ثم اختيار

FirstReport.

199

Page 200: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

الذي تريد بنائه اختر نفس االختيارات سوف تظهر لك شاشة نوع التقرير -٣

Ok ثم انقر التي تراها في الشكل

. أن تنشأ التقرير منها ريديطلب مصدر البيانات التي ت سوف يظهر لك الشكل و الذي -٤

اختر

DB ADO OLE كما يظهر

200

Page 201: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

اختر مزود البيانات ، مزود البيانات كما يظهر من الشكل شاشة تحديد لكي تظهر لك -٤

قاعدة البيانات و اختر وحدد موقعNextالخالص بمايكروسوفت أكسس اختره ثم انقر

Ok.

سوف ينتقل جدول ثم انقر التالي اختر جدول األشخاص ، كل الجداولسوف تظهر -٥

.األشخاص إلى الجهة اليمنى

201

Page 202: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

، ول التي تريد أن تظهر في التقريرقهنا تقوم باختيار الح، سوف تظهر لك حقول الجدول -٦

اختر كل الحقول كما يظهر من الشكل

تعتبر هذه الخطوة اختيارية :قرير خيارات التجميع في الت انقر التالي لتظهر لك شاشة -٧

.انقر التالي. التجميع به الحقل الذي تريد اجراء ويمكنك من خاللها اختيار,

202

Page 203: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

تعتبر هذه الشاشة اختيارية و تستطيع من خاللها ترشيح : سوف تظهر لك شاشة الترشيح -٨

في ، من الحقولالبيانات التي ستخرج في التقرير من خالل وضع شرط ما على أي

تقريرنا هذا سنقوم بعرض كافة البيانات لذلك انقر التالي

يوجد عدة أنواع ، تمكنك هذه الشاشة من تحديد تنسيق التقرير: شاشة تنسيق التقرير -٩

يق سسوف نختار التن، تستطيع استعراضها ومن ثم اختيار التنسيق الذي تراه مناسبا

: ل القياسي كما يظهر من الشك

203

Page 204: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

: ليظهر لك التقرير كما ترى من الشكل Finishانقر زر -١٠

هذا التقرير وكما . هذا هو التقرير الذي أشأته من خالل الخطوات العشر الماضية -١١

: - و الكالم ينطبق على أي تقرير –تالحظ يتكون من عدة أجزاء

م في أعلى التقرير و يحوي ظهر هذا القسيس : ReportHeaderرأس التقرير •

عادة ما يكون رأس التقرير ما يسمى . معلومات ال تتكرر أثناء عرض التقرير

.بالكليشه و فيه يكون شعار المنشأة و اسمها

كذلك يحوي معلومات ال تتكرر على مستوى : Page Headerرأس الصفحة •

.في الغالب يحوي اسماء الحقول المعروضة في التقرير، الصفحة

يحوي البيانات التي نريد عرضها في التقرير: التفاصيل •

يظهر في آخر صفحة من التقرير يحوي معلومات مثل المجاميع و : تذييل التقرير •

ملخصات التقرير

عادة ما تكون هذه ، يحوي معلومات تظهر في آخر كل صفحة: تذييل الصفحة •

.يخالمعلومات مثل رقم الصفحة وعدد الصفحات و التار : لعرض التقرير قم بالخطوات التالية . خطوة األخيرة هي عرض التقريرال -١٢

نظرا ألننا سوف نعرض التقرير من خالل نموذج لذا قم بإضافة نموذج إلى -١

المشروع

CrystalReportViewer أضف األداة -٢

204

Page 205: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

وهي موجودة في صندوق األدوات

كبر هذه األداة لتحتل النموذج كامال -٣

ReportSourceاذهب إلى الخاصية -٤

و ابحث عن التقرير الذي أنشأته قبل قليل وهو FirstReport.rpt قم بتشغيل النموذج ليظهر لك الشكل التالي -٥

205

Page 206: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

بناء تقرير اعتمادا على مجموعة بياناتر بناء على بفضل التعاون بين بيئة الدوت نت و كريستال ريبورت فإنه بإمكانك أن تبني تقري

توجد هناك العديد من الفوائد الستخدام هذه الطريقة منها أنه بمجرد أن تكتيب . مجموعة بيانات

فعلى . الخبرة في التعامل مع مجموعة البيانات فإنك لن تحتاج إلى التعمق في برمجة التقارير

بدون أن سبيل المثال تستطيع ترشيح مجموعة البيانات ثم عرض نتيجة الترشيح على تقرير

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

، هي أن تصمم التقرير و تحدد الجدول الذي سيكون مصدرا لهذا التقرير و تقف عند هذه النقطة

قريربعد ذلك تقوم أثناء التنفيذ بتعيين مجموعة البيانات التي ستعرض بياناتها على الت

:لنأخذ المثال التالي على كيفية بناء تقرير من مجموعة بيانات . كما يظهر من الشكلcrPersonقم بإضافة تقرير و أعطه اسم -١

اختر نفس االختيارات الموجودة في الشكل -٢

206

Page 207: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

نات التي هذه الخيارات تمثل مصدر البيا، سوف يظهر لك عدة خيارات في الجهة اليسر -٣

Access/Excel ثم Create New Connectionاختر ، تريد أن تعرض التقرير منها

ثم أضف اتصاال بقاعدة البيانات بعد ذلك ستظهر كل الجداول في قاعدة البيانات اختر

Finishثم انقر .جدول األشخاص كما يظهر من الشكل

207

Page 208: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

.من الخطوات السابقةسوف يظهر لك الشكل و هو التقرير الذي نتج -٤

سوف تظيفهما مرة . Name و ID قم بإضافة الحقلين الذي سيظهر في التقرير وهما -٥

.واحد التفاصيل ومن ثم ستتم إضافتهما آليا في الرأس كما يظهر من الشكل

الموظف الموجودة في رأس التقرير لتكون رقم الموظف و اسم ID و Nameغير كلمة

208

Page 209: مقدمة عامة عن بيئة الدوت نت

[email protected]خالد الجديع

أنشئ نموذج جديد و أضف إليه زر أمر و مربع نص و مستعرض تقارير -٦CrystalReportViewer

لمستعرض التقارير هو التقرير الذي قمت - ReportSource–قم بجعل مصدر التقرير

.crPersonبإنشائه قبل قليل وه

:انقر مزدوج على زر األمر و أضف الكود التالي -٧Dim con As New OleDb.OleDbConnection() Dim sql As String sql = "select id,name from person where name Like '" & txtEmpName.Text & "%'" con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\TelDir.mdb;Persist Security Info=False" Dim myds As New DataSet() myds.Clear() Try Dim Adapter As New OleDb.OleDbDataAdapter(sql, con) Adapter.Fill(myDs, "Person") If myds.Tables("Person").Rows.Count >= 1 Then MessageBox.Show(myds.Tables("Person").Rows.Count) Dim rpt As New crPerson() rpt.SetDataSource(myds) CrystalReportViewer1.Zoom(20%) CrystalReportViewer1.ReportSource = rpt CrystalReportViewer1.RefreshReport() End If Catch err As System.Exception MsgBox(err.Message) End Try

: الشرح

سوف يقوم المستخدم بإدخال اسم أو جزء منه في مربع النص وعند النقر على زر األمر -١

لبيانات ثم عرض التقرير بناء على سوف يتم البحث عن هذا االسم في مجموعة ا

انظر الشكل.مجموعة البيانات

209