goldnoil

كل ما تود معرفته عن ال SQL SERVER

43 ردود في هذا الموضوع

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

لغة الاستفسارات SQL (1)

المقدمة:

الشيء الذي لن تستطيع تجاهله عند تعلم قواعد البيانات هو لغة الاستفسار أو الاستعلام و التي يعبر عنها بـ SQL ، لكن ما هي فائدة هذه اللغة؟ لنفرض أن لديك موظفين بالمئات و تريد أن تحدد جنسية معينه منهم و تحصرهم لن تستطيع فعل ذلك إلا بلغة الاستعلام حيث يقوم بجمع الحقول التي تساوي الشرط الذي شرطته و هو جنسيتهم ، سنأخذ شرحا مفصلا في هذا الدرس عن الأساسيات و تطبيقات عليها.

الدرس9

أولا ما فائدة هذه اللغة ؟ كما ذكرنا في المقدمة إن فائدتها في حصر القيم التي تطابق القيم المعطاة من قبل المستخدم و تتميز بالسهولة و الدقة و السرعة أيضا كما يمكنك التحكم بها بصوره كبيرة ويمكنك إدخال أكثر من شرط في الاستعلام الواحد، لنفرض أن لدينا جدول اسمه Tb وفيه حقلين باسم name و number و تحتوي هذه الحقول على قيم مدخلة كما في الجدول التالي:

Name number

444 سامي

534 سامي

444 صالح

و نريد أن نستخرج الأسماء التي أرقامها 444 فسنحتاج إلى جملة استعلام بسيطة على الشكل التالي :

SQL = "select name from Tb where number = 444"

في الجملة السابقة امرنا البرنامج أن يقوم بتحديد قيم الحقل nameمن الجدول Tb عندما تكون قيم الحقل number تساوي 444 ، و وضعنا ذلك في متغير اسمه SQL

دعونا نلقي نظره على طرق الاستعلام

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

SQL = "select * from Tb "

إذا أردت أن تستفسر عن قيم حقلين بدون شرط اكتب اسم الحقلين بينهما فاصلة و لا تضع شرطا كالتالي:

SQL = "select name,number from Tb "

إذا أردت أن تستفسر عن حقل معين بشرط ما استخدم الصيغة التالية:

SQL = "select name from Tb where number = 444 "

يمكنك استخدام صيغ المقارنة > أو < أو <= أو >= أو <> بدلا من =

عندما تريد الاستعلام و استخدام أكثر من شرط ضع بين الشرطين عبارة And أو OR حسب حاجتك كالتالي:

SQL = "select name from Tb where number = 444 or number = 555 "

تم تعديل بواسطه goldnoil
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لغة الاستفسارات SQL (2

المقدمة:

في هذا الدرس سوف نتعلم استخدام لغة الاستفسار في تطبيق فيجوال بيسك ، من حيث كيفية الاستفسار عن قيمة مدخلة من قبل المستخدم و كيفية وضع نتائج البحث في listbox و combo box

الدرس10

كيف نتعامل مع جملة SQL في البرنامج ؟ هذا هو السؤال الذي سوف نقوم بالإجابة عليه الآن

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

اسم الجدول        tb
Name          num
Ahmad              1442
Saleh            5425
Sami            1442

لكي نستعلم عن الأسماء التي أرقامها 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 & " "

هذا كل شيء بالنسبة للدرس الثاني من لغة الاستفسار سيوضح الجدول التالي بعض النقاط المهمة في هذا الدرس بالنسبة لاستقبال المدخلات من المستخدم ، و في الدرس الثالث للغة الاستفسار سنتطرق لمواضيع متقدمة مثل الاستفسار من جدولين

" & text1.text & " : نستخدم هذه الطريقة عندما تكون بيانات الشرط رقمية أو عددية و يحدد ذلك من ينشأ قاعدة البيانات

'" & text1.text & "': نستخدم هذه الطريقة عندما تكون بيانات حقل الشرط من نوع البيانات الحرفية.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لغة الاستفسارات SQL (3)

المقدمة:

تعلمنا في الدرس السابق استخدام الاستعلام في التطبيق و هذه أهم نقطة في لغة الاستعلام، والآن سنتعلم تطبيق متقدم في لغة الاستعلام و هو الاستعلام من أكثر من جدول ، عندما نقول الاستعلام من أكثر من جدول نقصد مثلا أن يطلب منا الاستعلام عن الأشخاص الذين يعملون ضمن قسم المحاسبة ، الشرط هنا هو العمل في قسم المحاسبة لكن الشرط غير موجود في الجدول ؟ إذا كيف سنقوم بالاستعلام ؟ سنقوم بالاستعلام عن الشرط من جدول آخر ثم نرجع النتيجة و يستعلم في الاستعلام الأساسي عليها و بذلك يكون لدينا استعلامين ،و لكن يجب أن يكون هناك حقل مشترك بين الجدولين ، سيتضح كل ذلك في السطور التالية :

الدرس

11

قبل أن نبدأ افرض أن لدينا الجدولين التاليين :

tb1

deptno jop sal name

جميل 6000 محاسب 3

سامي 12000 مدير 1

بدر 5500 مبرمج 2

مهند 8500 مهندس 1

صالح 5000 سكرتير 3

tb2

deptname deptn

1 الهندسة

2 الكمبيوتر

3 المحاسبة

نريد الاستعلام عن أسماء الموظفين الذين ينتمون لقسم ما و لنفرض أننا نريد من ينتمي لقسم الهندسة، ستكون صيغة الاستعلام على الشكل التالي " حدد حقل الاسم من الجدول tb1 عندما يكون اسم القسم الهندسة " ، لكن هناك مشكلة حيث لا يوجد حقل باسم القسم في نفس الجدول لكن يوجد اسم القسم في جدول آخر، ويوجد في الجدول الذي لدينا رقم القسم لكننا نريد البحث على أساس اسم القسم و ليس رقمه ، إذا يجب أن نحصل على اسم القسم من الجدول الآخر ، وللحصول على معلومات من جدول آخر يجب تحقق شرط مهم و هو وجود حقل مشترك بين الجدولين و هذا ينطبق في حالتنا ، إذا ستكون صيغة الاستعلام على الشكل التالي : " حدد حقل الاسم من الجدول tb1 عندما يكون اسم القسم يساوي (حدد اسم القسم من الجدول tb2 عندما يكون رقم القسم1( "

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

SQL = "select name from Tb1 where deptname = (select deptname form tb2 where deptno = 1) "

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

في الاستعلام المتفرع من استعلام لا نضع علامتي تنصيص مزدوجة على الشرط النصي بل نضع علامة تنصيص مفردة مثل هذه '

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لغة الاستفسارات SQL (4)

المقدمة:

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

الدرس12

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

SQL = "select left$(name,3) as k from tb1"

استخدمنا الدالة left المعروفة لتحديد الحروف من حقل معين و الذي اسمه في المثال السابق name و قد قمنا بتخزين القيم في المتغير k و يمكنك تخزينها في أي متغير تريد ، طبعا الجدول في حالتنا اسمه tb1 ، هذا كل شيء ، طبعا نقوم بعد ذلك بإظهار النتائج كما تعلمنا في الدروس السابقة

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

SQL = "select name from Tb1 where name like '*" & text1.text & "*'"

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

إن الاستعلام يعيد القيم مرتبة على أساس ترتيب إدخالها ، لكن أحيانا تحتاج بأن تقوم بترتيب النتائج ترتيبا تصاعديا أو تنازليا ولفعل ذلك نستخدم الأمر Order By و يكون شكل الاستعلام على الطريقة التالية :

SQL = "select name from Tb1 where name like '*" & text1.text & "*' order By name Asc"

بعد كتابة الأمر Order by اكتب اسم الحقل الذي تريد أن يكون الفرز و الترتيب عليه وهو في حالتنا name بعد ذلك اكتب طريقة الفرز التي تريدها تصاعدي أي من الألف للياء ونستخدم لذلك أمر Asc ، مع العلم أن عند عدم وضع Asc فإن البرنامج يقوم تلقائيا بفرزه تصاعديا

أما الفرز التنازلي من الياء إلى الألف فنستخدم الأمر Desc بدلا من Asc

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

التعامل مع Flex Grid

المقدمة:

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

الدرس13

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

13-1.JPG

لكي نبدأ بالدرس أضف مشروع جديد و انشأ أو استخدم أي قاعدة بيانات و اربطها في البرنامج كما تعلمنا سابقا ، وسنفترض أن قاعدة البيانات التي سنتعامل معها اسمها db وفيها جدول باسم tbويحتوي على الحقول التالية namd و job و age سنكتفي بثلاثة حقول ، بعد ذلك يجب أن تضيف أداة هذه الشبكة ولفعل ذلك ، اذهب إلى قائمة project >> combonent أو اضغط على ctrl+T ستفتح لك قائمة المكونات اختر منها المكون التالي و ضع بجانبه علامة صح Microsoft FlexGrid Control 6.0 كما هو موضح في الصورة

13-2.JPG

بعد أن تحدد المكون الذي في الصورة السابقة اضغط Ok لتضيف المكون للمشروع وتعود للمشروع

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

13-3.JPG

اضغط بالزر الأيمن على الشبكة التي قمت برسمها و اختر Properties ستفتح لك نافذة الخصائص وفي علامة التبويب General يمكنكم اختيار عدد الصفوف من الخاصية Rows و عدد الأعمدة من الخاصية Cols ، كما يمكنك تحديد عدد الأعمدة التي تكون بلون داكن كمفتاح للشبكة من الخاصيةFixed Cols أو الصفوف التي بلون داكن من الخاصية Fixed Rows

الآن سنتعلم التحكم بخصائص FlexGrid بواسطة الكود ، يجب أن تعلم أن جميع الأوامر التي تكتب لهذه الأداة غالبا ما تكتب في حدث التحميل للفورم Load ، و من الخصائص التي يجب أن تتعلمها هي التحكم في عرض الصفوف مع العلم بأن الصفوف مرقمة من اليسار إلى اليمين ابتداء من الصفر و إذا أردنا مثلا أن نغير عرض العمودين رقم 0 و 3 مثلا و نريد أن يكون عرضهما 2000 و 1000 على التوالي فإننا سنحتاج إلى كتابة الكود التالي :

MSFlexGrid1.Colwidth(0) = 2000
MSFlexGrid1.Colwidth(3) = 1000

مع العلم بأن اسم الأداة في الكود السابق هو MSFlexGrid1، لاحظ أننا نقوم بحصر رقم الصف بين قوسين

و الآن كيف سنقوم بوضع عناوين الحقول على الأعمدة في هذه الشبكة لكي نفرق بين الحقول ، الفكرة بأن تقوم بتحديد الخلية بالصف والعمود بعد ذلك تكتب النص المراد ، مثلا نريد أن نكتب عنوان الحقل الأول و هو "الاسم " في العمود الأول و عنوان الحقل الثاني و هو " العمل " في العمود الثاني فماذا سنعمل انظر للكود التالي و ستعرف

MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "الاسم "
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "العمل"

لاحظ أننا في أول سطرين من الكود السابق قد قمنا بتحديد أول خلية على اليسار في الزاوية العليا و ذلك بتحديد إحداثياتها وهي الصف الأول و العمود الأول ، ثم قمنا بكتابة العنوان بالخاصية Text ، مع العلم بأن البرنامج يقوم بتخزين إحداثيات آخر خلية تقوم بكتابتها ، لذلك و عندما نكتب إحداثيات النقطة الثانية ستستفيد من هذه الميزة فسنكتب إحداثي العمود و هو 1 لأن الاحداثي السابق للصف هو 0 و هو مخزن فلماذا نكتبه مرة أخرى مادمنا لا نحتاج لتغييره ، بعد ذلك نكتب العنوان باستخدام الخاصية Text كما فعلنا مع الأولى و نستمر بهذه العملية إذا احتجنا إلى عناوين أخرى ، وستظهر العناوين التي عملناها بالكود السابق كما الشكل التالي :

13-4.JPG

و الآن كيف نقوم بتعبئة البيانات من جدول أو استعلام ؟

كما تعلمنا في الدروس السابقة فإننا نقوم بإنشاء جدول وهمي لكي نخزن فيه البيانات مؤقتا كما هو حال الرام RAM في الجهاز لتخزين البيانات لنتعامل معها و بعد إغلاق الجهاز تذهب المعلومات ، إن ديناميكية تعبئة البيانات بسيطة و سلسة ونحتاج أولا وضع عناوين الأعمدة كما تعلمنا في الفقرة السابقة ويكتب ذلك غالبا في حدث التحميل Load بعد ذلك يأتي دور تعبئة السجلات ، وقبل كل شيء أضف سطر يتأكد من وجود بيانات في الجدول لكي لأتواجه مشاكل ، بعد ذلك احسب عدد السجلات في الجدول و لفعل ذلك كما تعلمنا سابقا يجب أولا أن نمر على الجدول إلى النهاية ثم نعود إلى البداية لكي نستطيع إيجاد عدد السجلات بواسطة الخاصية Count نقوم بعد ذلك بعمل تكرار على عدد السجلات و نضع داخله كود يقوم بتعبئة البيانات بنفس الطريقة التي قمنا فيها بوضع عناوين الأعمدة ولكن يكون المصدر هو الجدول ،لن تفهم ما ذكرته إلا عندما تشاهد الكود المطلوب و الذي سأورده الآن مع ملاحظة أن اسم الجدول الوهمي TB و يوجد به الحقول Name و Job ، مع ملاحظة أن اسم FlexGrid في الكود التالي هو flx1

If tb.RecordCount < 1 Then Exit Sub  ' لكي نتأكد من وجود سجلات في الجدول أو نخرج في حال عدمها
   tb.MoveLast  ' نتحرك إلى الحقل الأخير
   tb.MoveFirst  ' نتحرك إلى الحقل الأول
   n = tb.RecordCount  ' نخزن عدد السجلات في المتغير n
  For i = 1 To n
       flx1.Row = i  ' رقم الصف حسب رقم التكرار
       flx1.Col = 0  ' رقم العمود ثابت لأننا سوف نضع جميع القيم للحقل في عمود واحد
       flx1.Text = tb!Name  ' نضع قيمة الحقل في الخلية المحددة
       flx1.Col = 1
       flx1.Text = tb!job
        tb1.MoveNext  ' نتحرك للسجل التالي
  Next i

End Sub

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

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

If tb.RecordCount < 1 Then Exit Sub
   tb.MoveLast
  tb.MoveFirst
  n = tb.RecordCount
  flx1.Rows = n + 1
  For i = 1 To n
      flx1.Row = i
      flx1.Col = 0
      flx1.Text = tb!Name
      flx1.Col = 1
      flx1.Text = tb!job
      tb.MoveNext
  Next i

End Sub

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وصلنا الان الى الجزء الاخير وهو كيفية اظهار البيانات بيانيا وذلك لتحديد النسب

الرسم البياني

المقدمة:

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

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

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

الدرس14

قبل أن تبدأ يجب أن تقوم بعمل قاعدة بيانات اسمها db1 و تحتوي على جدول اسمه tb1 فيه الحقول التالية :

اسم الحقل نوع البيانات

string name

integer mathmark

integer sincemark

قم بعد ذلك بإضافة سجلات لقاعدة البيانات بالقيم التي تريدها

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

أولا اذهب إلى Project >> refrences ثم حدد المكتبة Microsoft DAO 3.51 Object library

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

Public d As Database
Public tb As Recordset

الآن اكتب الكود التالي و الذي يقوم بربط قاعدة البيانات بالبرنامج

Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\db1.mdb", True)
Set tb = db.OpenRecordset("tb1", dbOpenTable)

الآن تأتي الخطوة الأساسية الأولى وهي إضافة أداة الرسم البياني و للقيام بذلك اذهب قائمة Project و اختر Components سيظهر لك مربع حوار حدد منه الاختيارMicrosoft Chart Control 6.0 (OLEDB)

ستظهر لك الايقونه الخاصة به في صندوق الأدوات بعد ذلك انقر على هذه الأيقونة و ارسم شكل مربع على اغلب الفورم و سينتج لك صورة رسم بياني

الآن حدد الرسم البياني و اذهب إلى نافذة الخصائص و غير الخاصية AutoIncrement إلى True و هذا ضروري لكي يقوم الرسم البياني بتغيير و تحديث نفسه تلقائيا ولن يعمل بدون أن تجعل هذه الخاصية على True

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

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

والآن ماهو الكود الذي سيعرض البيانات على الرسم البياني ، أولا يجب أن تحدد متى يجب العرض هل عند تشغيل البرنامج أم عند النقر على زر معين ؟ و الطريقة الأفضل أن تجعله يقوم يعرض حال تنفيذ أو تحميل الفورم و بعد ذلك يمكنه أن ينتقل إلى السجل التالي بواسطة زر تنقل ، هذا يقودنا إلى انه يجب علينا وضع كود في حدث لتحميل للفورم لكي يعرض مباشرة و الكود سيكون الكود التالي :

لاحظ أن اسم أداة الرسم البياني هو MSChart1

Private Sub Form_Load()
Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\db1.mdb", True)
Set tb = db.OpenRecordset("tb1", dbOpenTable)

MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name

End Sub

أعتقد أن الكود السابق سهل وواضح للجميع و هو يذكرنا بالأداة FlexGrid ، ففي الكود السابق حددنا أولا رقم العمود الذي ستنفذ عليه الأوامر القادمة و هو عمود رقم 1 ثم بعد ذلك وضحنا الأمر الذي نريده أن ينفذ على هذا العمود وهو وضع قيمة الحقل mathmark في هذا العمود ليعبر عنها بيانيا ونستخدم لهذا الأمرData كما هو واضح ، و الآن نريد وضع قيم الحقل الثاني وهو sincemark في العمود الثاني و نتبع لذلك نفس الخطوات السابقة حيث نحدد رقم العمود وهو 2 ثم ما نريد منه و هو التعبير عن هذا الحقل في شكل بيانا

بعد ذلك وفي السطر الأخير نريد أن يضع البرنامج اسم الشخص أسفل الرسم البياني و هو ما يسمى بالصف Row ونستخدم الخاصية RowLabel و نخزن فيها قيمة حقل الاسم Name

الآن المرحلة الثانية و هي أن يقوم المستخدم بالتنقل بين الحقول لإظهارها في شكل الرسم البياني و سنقوم بإنشاء زرّي أمر واحد للتقدم الأمام وواحد للرجوع للخلف ، في الزر المخصص للتنقل للإمام نستخدم الكود التالي :

Private Sub Command1_Click()
tb.MoveNext   ' للانتقال للسجل التالي
If tb.EOF Then tb.MoveLast  ' لتفادي المشاكل عند آخر سجل
MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name
End Sub

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

أما الكود الذي يقوم بالرجوع إلى الخلف فهو :

Private Sub Command2_Click()
tb.MovePrevious
If tb.BOF Then tb.MoveFirst
MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name
End Sub

الكود السابق نفس كود الانتقال للإمام مع تغيير أمر التحرك الأمام بأمر التحرك للخلف MovePrevious و تم تغيير شرط التأكد من وصولنا للسجل الأول بحيث يتوافق مع الحالة

الشكل النهائي

14-1.JPG

لاحظ أن المحورين يتم تقسيمهما تلقائيا على حسب الأرقام في السجلات

يمكنك التحكم في بعض الخصائص مثل جعل الرسم البياني على شكل خطوط أو مجسمات ثلاثية الأبعاد و غير ذلك يمكنك اكتشاف ذلك بنفسك بالضغط على الزر الأيمن على الرسم البياني و اختيار Properties

واسف على الاطالة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

الاخ joe911

اظن قد حان الوقت حتى تدرج مشاركاتك حول التقارير وسوف اضمها للكتاب ان سمحت لي

الكتاب صغير لا يتعدى ال700 كيلو بايت

SQL E-book.pdf

تم تعديل بواسطه goldnoil
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لاخ بو سرور

اولا اهلا بك معنا في الفريق

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

كلماتك اصابتني في مقتل لم اكن انتظر سوى الدعاء من الاشخاص المستفيدين من الدروس

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

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

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

تعودت دائما ان اسمع عبارات الشكر دون ان يمد احد يده للمساعدة ولكن هذا لم يصبني بالاحباط بل زادني اصرار

رغم اني مقتنع انه لا يمكن ان يتم انهاء اي موضوع بشكل كامل كل ما نستطيع فعله هو ان نضع الشخص المبتدئ على بداية الطريق والشخص المتقدم نحاول ان نعطيه الاجابة بقدر ما استطيع وحسب علميلكن ساكمل المشوار حسب مااجد انه يحتاج

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
الأخ الفاضل goldnoil و جميع الاخوة الذين سبق مشاركتهم بالموضوع برجاء استكمال موضوع دروس َsql server حيث أننا وصلنا إلى مرحلة حيوية بالنسبة لآى مبرمج و هى مرحلة التقارير و وحيث أننى أعمل ب Data environment و datareport و أواجه العديد من المشاكل فإننى أرجو منك أخى أن تستكمل الشرح لأننى أريد استخدام crystal report و جزاك الله كل الخير على مجهودك الرائع .
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاخوة الاعزاء اوجه لكم اسفي الشديد لعدم استكمالي الموضوع رغم انه لم يبقى فيه سوى التقارير والقليل عن الاستخدام العملي لقاعدة البيانات وذلك لانشغالي بقسم الشبكات والدورة المقترحة فيه كنت مشرف على قسم ال SQL ERVER سابقا اما الان فقدت انتقلت لقسم الشبكات ولدي اعباء كبيرة واولويات ان انتهيت من الدورة قد اعود الى قسم الSQL بعد الانتهاء من الدورة واكمل لكن اوجه نداء الى الاخدة في قسم الSQL ان يتابعوا فليس لدي مانع من ذلك ولن اضيف التعديل للكتاب كذلك حتى يضمنوا حقوقهم

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

تم تعديل بواسطه goldnoil
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

الاخوة الكرام كنت قد وعدت في حال الانتهاء من الاعباء التي علي ان اتابع في تكملة الدروس او الدورة لكن الان اعتذر عن المضي في تكملة الدورة والدروس هنا بسبب بعض المشاكل الادارية وهذه المشاكل هي التي منعتني كل هذه الفترة من المتابعة واكتفي بهذا القدر من يريد المتابعة فليتابع وله كامل الحرية في الموضوع

GoldNoil

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

الاخ goldnoil

اولا شكرا لك على هذا المجهود الرائع الذي تبذله انت والاخوان في المنتدى وكان الله في عونكم جميعا لما تقومون به من اعمال رائعه وندعوا الاه ان يكثر من امثالكم ..

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

ولكن الذي يجعلنا ان نفهم اسبابك هو اهتمامك بقسم اخر بالمنتدى

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

ارجو ان اجد الجواب وشكرا لكم

نظام التشغيل الموجود عندي هو windwos XP

errormsg.doc

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

هذه الرساله تظهر عند بداية التثبيت بعد النقر على setup تظهر مباشرة

اما بالنسبة للمستخدم فانا واضع كلمة سر على النظام اذا كان هذا قصدك

ولقد قمت بتغير كلمة السر فاصبحت تحتوي على احرف وارقام

ولكن مازالت الرساله تظهر في اول التثبيت

شاكرا لكم حسن تعاونكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

الاخ طارق ابراهيم لهذ اللحظه لم استطيع تثبيت SQLl SERVER

رغم المحاولات المتكرره لتحميل SQL SERVER والمشكله هي نفسها التي وضحتها بالرسالتين السابقتين

فارجو المساعده وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هل تستخدم حساب ال Adminisrator لعملية التنصيب فى حالة الاجابه بلا استخدم حساب الادمن

لو كنت تستخدم حساب الادمن حاول البحث عن ملف ini فى نفس مجلد السيت اب ستجد ملف ini قم بفتحه باستخدام النوتباد ثم عدل الاتى

" SAPWD=anypassword "

واخبرنا بالنتيجه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله

نظرا لما قد تعلمتة من الاخ الفاضل goldinoil فى تعلم ال SQL Server

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

فقد سألتنى عنها احد الاخوات بهذا القسم

واعتقد انه سيستفيد منها كل المتابعين للدورة

تحياتى,,,

SQL Server.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

موضوع شيق جدا ومن أفضل ما قرأت في SQL Server

ولكن لدي سؤال أتمنى ألاقي له حل

كيف يمكن الربط مع ملف mdf على جهازي وليس سيرفر

ماهو الـ Connection String

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .