المشاركة الأصلية كتبت بواسطة جوليا بندلتونلا شكر على واجب اهلا وسهلا فيك بيننا
اختي جوليا
المشاركة الأصلية كتبت بواسطة جوليا بندلتونلا شكر على واجب اهلا وسهلا فيك بيننا
اختي جوليا
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
لغة الإستفسارات SQL الجزء الثاني
احبابي الاعزاء لا شك انكم اليوم تنتظروا الدرس ،
ان درس اليوم مهم لكل مبرمج يستخدم v b 6
في هذا الدرس سوف نتعلم استخدام لغة الاستفسار في تطبيق فيجوال بيسك ،
من حيث كيفية الاستفسار عن قيمة مدخلة من قبل المستخدم و كيفية وضع نتائج البحث
في listbox و combo box
كيف نتعامل مع جملة SQL في البرنامج ؟ هذا هو السؤال هو محور الدرس الذي سوف
نقوم بالإجابة عليه الان انشاء الله
يجب عليك أن تعرف الفكرة التي سنقوم بتنفيذها ، أول شيء سوف نقوم بعملية الاستعلام
و ذلك بكتابة جملة الاستعلام كما تعلمنا في الدرس السابق في المكان الذي تريده
و غالبا ما يكون في زر او عند حدث التحميل ، بعد ذلك سنحصل على نتائج الاستعلام
و لكي نقوم بقراءتها و اظهارها يجب اولا ان نخزنها في جدول ، و هنا فائدة الجدول المستعار
كما تعلمنا في الدروس الاولى حيث سنقوم بتخزين الناتج فيه ، بعد ذلك سنقوم بعرض النتائج
من الجدول ، سنفرض أن لدينا الجدول التالي :
هكذا نكون قد قمنا بالاستعلام بعد ذلك تأتي الخطوة التالية و هي تخزين النتائج في الجدول المستعاركود:لكي نستعلم عن الاسماء التي ارقامها 1442 نكتب الجملة التالية : SQL = "select name from Tb where num = 1442 "
و الذي نقوم بتعريفه ( لمزيد من التوضيح راجع الدروس السابقة) عادة في الموديول كما قمنا به
في الدروس السابقة و لنفرض أن اسمه T و ان اسم المتغير الذي قمنا بتخزين قاعدة البيانات
فيه D و التي كنا نطلق عليها القاعدة المستعارة سنكتب الامر التالي لكي نخزن نتائج الاستعلام
في الجدول :
لا حظ أننا قمنا باستخدام الاسماء المستعارة للجدول و قاعدية البيانات و هي المتغيراتكود:Set T=D.openrecordset(SQL,dbopendynaset)
التي اعلنا عنها في البداية ( راجع دورس سابقة لمزيد من التفاصيل) ، لقد قمنا في الامر
السابق بتخزين قيم الاستعلام في الجدول حيث كتبنا SQL
و هي قيمة متغير الاستعلام الذي توجد فيه القيم ، بعد ذلك قمنا بوضع نوع الاتصال
او بالأصح نوع الربط المراد ان صح التعبير على العموم و كما قلنا أن هناك اشياء
لا يتطلب منك سوى معرفتها مرة واحدة فقط و ستقوم بتركيبها حسب استخدامك
الان بعد أن قمنا بتخزين القيم في الجدول نريد ان نظهر البيانات و يمكنك اظهارها في عدة اشكال
كما تريد فيمكنك و ضعها في مربعات نص او قوائم سواء LISt او COMBO
ولكل واحد طريقة تختلف نوعا ما عن الاخر
كود:مربع النص Text Box : لكي تظهر النتائج في مربع النص فلن تحتاج الا لإجراء الاظهار كما تعلمنا في السابق و تقوم بكتابته بعد امر تخزين نتائج الاستعلام في الجدول List Box : لتضع النتائج في قائمة ListBox لن تحتاج لكثير من الخطوات فالأمر ربما أسهل مما تتصور ،فقط تحتاج لهذا الكود :For i = 1 To n List1.AddItem TB!name TB.MoveNext Next iقمنا بعمل تكرار بعدد الحقول لكي يتم عبئة جميع البيانات في الجدول و لقد عرفنا كيفية معرفة عدد الحقول في دروس الربط بالكود السابقة
بعد ذلك كتبنا اسم القائمة وهو List1 ثم استخدمنا خاصية اضافة عنصر
و بعد ذلك نكتب اسم الجدول الذي سوف نأخذ البيانات منه و ثم اسم الحقل المراد يفصل بينهما
علامة تعجب ، بعد ذلك خطوة مهمه و هي الانتقال للسجل التالي لكي يقوم بتعبئة القيم الاخرى
و اذا لم تضع هذا الامر سوف تكون جميع الاسماء اسم الحقل الاول ، هذا كل شيء
كود:ComboBox لا تختلف طريقة تعبئة هذه القائمة عن الطريقة السابقة أبدا قم بنفس الخطواتاستقبال المدخلات من المستخدم :
لن تستفيد حقيقيا من البرامج التي تعملها اذا لم تعرف طريقة استقبال القيم من المستخدم
ثم عمل الاستعلام عليها لانه من غير المنطقي أن يقوم المستخدم بالرجوع إليك عند كل عملية
إستعلام ،و طريقة الاستقبال هنا لها طريقة خاصة نوعا ما سنعرفها بعد قليل ، غالبا ماتقوم
باستقبال القيم من المستخدم من مربع نص Text Box و المشكلة التي تواجهنا بين المدخلات
النصية و الرقمية و يعتمد ذلك على نوع البيانات للحقل المعني دعونا نرى أمثلة على ذلك :
إفرض أنك قمت بعمل قاعدة بيانات فيها حقلين الاسم name و حددت نوع البيانات لهذا
الحقل بأنها نصية و الحقل الاخر الرقم num و حددت البيانات له بأنها رقمية ، و قمت بربط
القاعد مع البرنامج بطريقتنا التي تعلمناها و الان نريد ان نستعلم عن الرقم للشخص الذي يحدده المستخدم سنقوم في هذه الحالة بإنشاء مربع نص لكي يدخل المستخدم الاسم الذي يريده
ثم ننشأ زر يقوم المستخدم بالضغط عليه لتتم عملية الاستعلام ، و ستكون جملة الاستعلام عادية
كما تعلمنا و بدلا من ان نضع القيمة التي سنستعلم عنها سنضع القيمة التي ادخلها المستخدم
في مربع النص من المتوقع أن يكون الكود المطلوب للاستعلام في هذه الحالة التالي
كود:SQL = "select num from tb where name = text1.text "
هذه هي الجملة المتوقعة لكنها خاطئة ، بهذه الطريقة يكون الاستعلام عن عدد لانهائي من الخانات
و هذي ان صح التعبير عيب في مربع النص و لكي نتلافى هذا الخطأ نقوم بما يسمى بالحصر على اساس نوع البيانات في name في حالتنا هذه نوع البيانات حرفية لذا تكون طريقة الحصر
على الشكل التالي:
لقد قمنا بوضع علامتي تنصيص مزدوجة عليها يفصل بينها علامة الجمع & ثم قمناكود:' " & text1.text & " '
بحصرهم جميعا بعلامة تنصيص مفردة ، الخطوة الاخيرة و هي وضع علامة التنصيص المفردة
تكون للحقول الحرفية و لا نحتاجها في الحقول الرقمية ، قم بتجربة ذلك الان لكي تستوعبها جيدا
افرض أن المطلوب الان هو العكس ، بحيث يقوم المستخدم بإدخال الرقم و يقوم البرنامج
بالاستعلام عن الاسماء التي تحمل هذا الرقم سيكون الكود نفس السابق مع تغيير اسم الحقل
بطبيعة الحال و أيضا عدم وضع علامة التنصيص المفردة كالتالي:
كود:SQL = "select num from tb where name = '" & text1.text & "' "
افرض أن المطلوب الان هو العكس ، بحيث يقوم المستخدم بإدخال الرقم و يقوم البرنامج
بالاستعلام عن الاسماء التي تحمل هذا الرقم سيكون الكود نفس السابق مع تغيير اسم الحقل
بطبيعة الحال و أيضا عدم وضع علامة التنصيص المفردة كالتالي:
كود:SQL = "select name from tb where num = " & text1.text & " "
هذا كل شيء بالنسبة للجزء الثاني من لغة الاستفسار سيوضح الجدول التالي
بعض النقاط المهمة في هذا الدرس بالنسبة لإستقبال المدخلات من المستخدم ،
و في الجزء الثالث للغة الاستفسار سنتطرق لمواضيع متقدمة مثل الاستفسار من جدولين
نلتقي غدا انشاء الله
في حلقة جديدة
من سلسلتنا
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكم
شكرا جزيلا على هذا الجهد
اخوكم في الله جمال محمد الامين الناصري
لـقد سمعـت اذا نديـت حـيا .:. ولكن لا حيت لمن تنادى
وإذ نـار نــفـخــت بـهــا اضــــأت .:. ولكن جل نفخك فى ارمادى
الله يرحم والديك ::::: ؛؛؛؛؛
ابومنال
بارك الله فيك اخي سر العرب على هذه المداخلةالمشاركة الأصلية كتبت بواسطة سر العرب
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكمالمشاركة الأصلية كتبت بواسطة منال كمبيوتر
اخي ابو منال
الله يدخلك الجنة كما ادخلت السعادة الي لقلبي بهذه الكلمات
بارك الله فيك
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
لغة الإستفسارات SQL الجزء الاخير
والان سنتعلم تطبيق متقدم في لغة الاستعلام و هو الاستعلام من اكثر من جدول ،
عندما نقول الاستعلام من اكثر من جدول نقصد مثلا ان يطلب منا الاستعلام عن الاشخاص
الذين يعملون ضمن قسم المحاسبة ، الشرط هنا هو العمل في قسم المحاسبة لكن
الشرط غير موجود في الجدول ؟ اذا كيف سنقوم بالاستعلام ؟
سنقوم بالاستعلام عن الشرط من جدول اخر ثم نرجع النتيجة و يستعلم في الاستعلام الاساسي عليها
و بذلك يكون لدينا استعلامين ،و لكن يجب أن يكون هناك حقل مشترك بين الجدولين ،
افرض أن لدينا الجدولين التاليين
نريد الاستعلام عن أسماء الموظين الذين ينتمون لقسم ما و لنفرض اننا نريد من ينتمي لقسم الهندسة،
ستكون صيغة الاستعلام على الشكل التالي " حدد حقل الاسم منالجدول tb1 عندما يكون اسم القسم
الهندسة " ، لكن هناك مشكلة حيث لا يوجد حقل باسم القسم في نفس الجدول لكن يوجد اسم القسم
في جدول اخر، ويوجد في الجدول الذي لدينا رقم القسم لكننا نريد البحث على اساس اسم القسم
و ليس رقمه ، اذا يجب ان نحصل على اسم القسم من الجدول الاخر ، وللحصول على معلومات
من جدول اخر يجب تحقق شرط مهم و هو وجود حقل مشترك بين الجدولين و هذا ينطبق في حالتنا ،
اذا ستكون صيغة الاستعلام على الشكل التالي : " حدد حقل الاسم من الجدول tb1 عندما يكون
اسم القسم يساوي (حدد رقم القسم من الجدول tb2 عندما يكون اسم القسم القسم الهندسة ) "
هكذا وضعنا الاستعلام بالصورة المطلوبة حيث كنا نفتقد للشرط في الاستعلام الاول لعدم وجوده
في نفس الجدول لذا قمنا بعمل استعلام اخر فرعي لكي نحصل منه على الشرط ،
الان دعونا نتعلم كيف نكتب ما قلناه منذ قليل بلغة الاستعلام :
كود:SQL = "select name from Tb1 where deptno = (select deptn form tb2 where deptname ='الهندسة') "
سؤال لماذا نقوم بهذه العملية الطويلة مع أنه بإمكاننا ان نشترط شرط على اساس رقم القسم
الذي يتوفر لدينا حيث نعرف ان قسم الهندية يحمل الرقم 1 ؟
الحل :- و بكل بساطة أنه ليس في كل مرة ستعرف ذلك حيث يوجد استعلامات معقدة لايمكنك
بأن تقوم بحساب الشرط بنفسك لكي تضع استعلام واحد ، حيث ان بعض التطبيقات يجب
عليك فيها استخدام الاستعلام المركب و قد يصل لأكثر من استعلام لحل و ايجاد قيمة استعلام واحد
في الاستعلام المتفرع من استعلام لانضع علامتي تنصيص مزدوجة على الشرط النصي بل نضع علامة تنصيص مفردة مثل هذه '
الي هنا نتتهل هذه السلسلة وسوف
نبدا في سلسلة جديدة انشاء الله في الاسبوع القادم
(ثلاثة ايام تحضير)
نلتقي غدا انشاء الله
في ملخص لكل الدروس
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكم
بارك الله فيك
اخوكم في الله جمال محمد الامين الناصري
لـقد سمعـت اذا نديـت حـيا .:. ولكن لا حيت لمن تنادى
وإذ نـار نــفـخــت بـهــا اضــــأت .:. ولكن جل نفخك فى ارمادى
مـا شـاء الله
عيني بارة عليك
السلام عليكم
بارك الله فيك
بايك الله فيك على المرور الكريم هذا
المشاركة الأصلية كتبت بواسطة حبيبة الشيخشكرا حبيبة على هذه المشاركة الحاوا
********************************************************************************
اشكر الله واحمده قبل كل شيء لأنه هداني الي هذا المنتدي
وانا اشكر كل الاعضاء الذين شاركوا في هذه الدورة
اخبركم انه وللأسف سوف تتوقف الدروس الي حين
انتهائي من تحضير سلسلة جديدة من برنامجنا الفيجوال بيزك
و احب ان اشكر كل الاداريين في موقعنا الرائع (المنتدي)
خاصة الاخوة مراقبي المنتدي البرمجة
على كل التشجيع الوجهود من نقل / تثبيت/ تنظيم / تقييم
لاني بكل صدق اشكرهم واشكر الاعضاء الكرام الذين
ساهموا في الموضوع ولو بكلمة
ان الهدف من هذا الموضوع هو نشر العلم
اشكر الادارة على ما تبذله في سبيل نشر العام
في انتظار السلسلة القادمة
قريبــــــــــــــــــــــــــــــــــــــــــــا
انشار الله
ملاحظة : اعتذر لأني لم اذكر اسماء اعضاء او مشرفين
وذلك لعجزي عن ايجاد الكلمات المناسبة تصف حبي لهم
وامتناني لمشاركتهم او مساهمتهم في المواضيع
اخوكم الحبيب لمين
التعديل الأخير تم بواسطة الحبيب لمين ; 30-08-2006 الساعة 11:43 AM
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
بارك الله فيك
اتمني من الاعضاء او المشرفية
خاصة اصحاب الخبرة في هذا المجال
ان يواصلوا الدروس نيابة عن الاخ الحبيب لمين
بعد اذنة طبعا
لكي تعم الفائدة
بارك الله فيكم
خاصة اني اعتمد على هذه الدروس ( كغيري من المبتدئين)
اخوكم في الله جمال محمد الامين الناصري
لـقد سمعـت اذا نديـت حـيا .:. ولكن لا حيت لمن تنادى
وإذ نـار نــفـخــت بـهــا اضــــأت .:. ولكن جل نفخك فى ارمادى
السلام عليكم
يبدو انه لا يوجد تجاوب من قبل الاعضاء او المراقبين
مممممممم
اسف جدا للنقطاع ولكن والله ظروف صعبة جدا
فعلا دروس روعة كالعادة اخي
يبدوا انك انت ايضا تعاني من مشاكل قاسية منعتك من الدخول
في انظارك ونتمنى انك تواصل
بالتوفيق
شبكة قانوني الاردن
نسعى معا للرقي بالمهنة القانونية في الاردن
www.lawjo.net
-----------------------------------------
e_amawi (at) yahoo.com
المشاركة الأصلية كتبت بواسطة سر العرب
بارك الله فيك على حرصك على العلم
اخي سر العرب
شكرا على هذه المداخلة
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
المشاركة الأصلية كتبت بواسطة حبيبة الشيخاختي الغالية
اكيد عندهم
مثل ضروف عمل مثل ضروفي
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان