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

أهداف الدرس
الهدف العام
إنشاء قناة اتصال بين قواعد البيانات والبرمجية.
نواتج التعلم:
في نهاية هذا الدرس يستطيع الطالب أن:
1- يذكر المقصود بالمصطلحات: -
- ADO ActiveX Data Object .
- Class .
- Object .
- Namespace .
- Framework .
- Structured Query Language) SQL .
2- يكتب الكود الخاص بفتح قناة اتصال.
3- يُعلن عن المتغيرات اللازمة لفتح قناة اتصال. 
4- يكتب الكود الخاص باستدعاء ملف إكسيل إلى الذاكرة. 
5- يخصص بيانات الأعمدة في جفدول البيانفات بالفذاكرة لمفا تناظرهفا ففي أدوات 
التحكم في نافذة واجهة المستخدم.

تدريب

استخدم لغة VB.NET في انشاء مشروع جديد، تحتوي نافذة النموذج فيه على
أداة تحكم واحدة (ComboBox) ، ثم القيام بكتابة كود البرمجة اللازم لإسترجاع
بيانات (Database) ملف اكسيل باسم AtlasData.xls )وليكن عمود
"القارة"( داخل ال ComboBox على أن تكون نافذة النموذج كما بالشكل
التالي.


يتم عمل الآتي:
1-  إنشاء مشروع جديد.
2-  من مربع الأدوات (Toolbox) يتم وضع أداة التحكم ComboBox1
داخل نافذة النموذج.
3-  الإنتقال إلى نافذة البرمجة (Code Window) ثم كتابة الكود كما
بالشكل التالي:
أ -الإعلان عن كائنات أو متغيرات يتم إنشاءها من مجموعة تصنيفات (Classes) لكى يتم استخدامها عند التعامل مع ملف قاعدة البيانات(ExcelData.xls) )



ب - ثم الإعلان عن متغيران ( filePath و sql ) سيتم وضع بداخلها اسم ملف قاعدة البيانات (ExcelData.xls) وجملة (Select)



جـ -  ثم تخصيص قيم للمتغيرات: -
تخصيص قيمة للمتغير - filePath على أن تكون اسم ملف قاعدة البيانات الموجود داخل وسط التخزين (ExcelData.xls) .تخصيص قيمة للمتغير - sql على أن تكون استدعاء أسماء القارات الموجودة داخل ورقة العمل Sheet1 في ملف قاعدة البيانات (ExcelData.xls)


- تخصيص القيمة المستخدمة لقناة الإتصال للخاصية - (ConnectionString) .
- فتح قناة الإتصال باستخدام الوسيلة - (Open)



-تخصيص القيمة المستخدمة للأمر لقناة الإتصال للخاصية - (Connection) .
- تخصيص القيمة المستخدمة للأمر بجملة - Select من خلال الخاصية


- تخصيص القيمة المستخدمة للمتغير - da بالخاصية (SelectCommand) .
- استخدام المتغير - da للخاصية (Fill) في ملء جدول البيانات (dt)


- تخصيص مصدر البيانات المستخدم لملء الأداة - (ComboBox) بالبيانات.
- ملء الأداة - (ComboBox) من جدول البيانات بالعمود الأول منها.


بعد كتابة الكود وعمل - Run ثم النقر على الأداة (ComboBox) ستظهر جميع
القارات الموجودة في العمود الأول من جدول البيانات كما بالشكل التالي.


يمكن التعديل في الكود باستبدال السطر: -
sql = "Select القارة from [Sheet1$]"
بالسطر:

sql = "Select distinct القارة from [Sheet1$]"
بعد عمل - Run ثم النقر على الأداة (ComboBox) ستظهر جميع القارات
الموجودة في العمود الأول من جدول البيانات بدون تكرار كما بالشكل التالي.


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



إذاً نحتاج لفتح قناة أتصال بين برنامج الأطلس العربي وملف إكسيل ويتم ذلك
باستخدام تصنيفات Classes تندرج تحت مسمى ADO.NET تمكن من قراءة
البيانات المخزنة بملف وعرضها علفى واجهة البرنامج والتعامل معهفا وذلك بإتباع
الخطوات الآتية:
* قم بفتح نافذة الكود الخاصة بنافذة النموذج Form1 ثم قم بالإعلان عن الدالة
GetDatafromExcelSheet كما هو موضح بالكود الآتي:


هذه الدالة لهفا عدد 2 وسائط هما FilePath حيفث يمثل مسار ملف إكسيل و sql
حيث يمثل الجملة التي من خلالها سوف يستعلم عن البيانات من ملف إكسيل وتعود
الدالة بقيمة فن النوع DataTable عبارة جدول بيانات في ذاكرة الكمبيوتر به البيانات التي احضرت من ملف إكسيل.

*قم بالإعلان عن المتغيرات الآتية


المتغير MyConnection سوف يمكن من فتح قناة اتصفال بورقة العمل التي بها
البيانات في ملف إكسيل.
المتغيفر MyCommand سففوف يقففوم بتنفيذ استعلام بموجبه يتم الحصول على
البيانات من ملف إكسيل.المتغير da سوف يعمل كمحول للبيانات من ملف إكسيل لجدول البيانات لدىالمتغير dt .المتغير dt لدية جدول يحفظ به البيانات التي تم إحضارها من ملف إكسيل.

قم باستخدام المتغيرات كما هو موضح بالكود الآتي:


يقوم محول البيانات da باستخدام الأمر MyCommand الذي لديه جملة
الاستعلام sql عن البيانات المطلوبة من ملف إكسيل الذي أتخذ قناةالاتصالConnection طريقا لتحويل البيانات إلى dt .
ثم تقوم الدالة بإرجاع dt بها البيانات من ملف إكسيل.
استخدام الدالة GetDatafromExcelSheet في ملء قائمة القارات بأسمائها
*في نافذة الكود قم باختيفار (Form1 Events) من قائمة Class Name
واختيار الحدث Shown من قائمة Method Name كما هو موضح بالشفكل



تم اختيار الحدث Shown لأنه يحدث مرة واحدة عند ظهور النافذة لأول مرة.
 ثم أكتب الكود الآتي:

فى الكود السابق:
*  تم الإعلان عن متغير dt من النوع DataTable ، ثم تخصيص ناتج القيمة
الراجعة من الدالة GetDatafromExcelSheet له بعد إعطاء مسار ملف قاعدة
البيانات وجملة الاستعلام التي من خلالها يتم الحصول على أسماء القارات.
* تم ضبط بعض خصائص الأداة cmbbxContinent
* تم تخصيص dt الذي يحتوى على جدول البيانات المحضره من ملف إكسيل للخاصية
DataSource.
* تم تخصيص العمود الأول (الحقل الأول( من جدول البيانات dt للخاصية
DisplayMember حتى يمكن عرض محتويات هذا العمود في الأداة
cmbbxContinent حيث يقصد ب ( Column (0العمود الأول.
* تم تخصيص العمود الأول من جدول البيانات dt للخاصية ValueMember كقيفة
لعنافر قائمة الأداة cmbbxContinent . ويمكن توضيح الفرق بين الخاصيتين
DisplayMember و ValueMember للأداة ComboBox كالآتى:
الأداة ComboBox تحفتظ بقيمتين إحداهما قيمة ظاهرة يتم الاحتاظ بها داخل
الخاصية DisplayMember والقيمة الأخرى غير ظاهرة يتم الاحتاظ بها داخل
الخاصية ValueMember كما هو موضح بالمثال التالى:
بفرض وجود جدول بيانات به حقلين("اسم الطالب" و"الرقم القومي") ومطلوب
عرض "اسم الطالب" في ComboBox وعند اختيار اسم من القائمة يظهر رقمه
القومي في أداة عنوان Label .
لإنجاز ما سبق، يتم تخصيص حقل "اسم الطالب" للخاصية DisplayMember
وتخصيص الحقل "الرقم القومي" للخاصية ValueMember
ثم تخصص ValueMember للخاصفية Text للأداة Label وذلك في إجراء
الحدث SelectedIndexChanged لل ComboBox
* تم تخصيص القيمة 1 للخاصية SelectedIndex بحيث يتم استدعاء معالج الحدث
cmbbxContinent_SelectedIndexChanged .
* عند التشغيل نجد أن قائمة القارات بها أسماء القارات كما هو موضح بالشكل الآتي






هناك تعليق واحد: