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

 

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

#Copy_past = no

" بعيداً عن تقليد ونسخ اكواد الاخرين "

قد يسئل سائل يقول انا تعلمت الخطوات الاساسية لقواعد البيانات لكن لم اعمل برنامج كما اشاء اي لم اصمم( ابرمج) برنامج بحريه تامه بعيدا عن تقليد مشاريع ونسخ اكواد الاخرين…… 

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

طيب القناة بتعلمك الاساسيات من الالف الى الياء والى الاحتراف ، لكن انت تريد ان تبرمج قواعد بيانات على حسب مايطلبة منك سوق العمل او العميل… 

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

طيب تقول انا اريد ان ابرمج بنفسي بعيدا عن التقليد وما ينشره الاخرون… 

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

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

( المنفصل) ، وبرمجنا مشروع بالوضع المتصل والمنفصل…… 

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

سوف تتعلم 

🔹برمجة ازرار: 

الاضافة

الحفظ 

الحذف

التعديل

البحث بانواعة 

🔹 برمجة ازرار التنقل بين السجلات 

🔹اضافة اكثر من Form للمشروع وكيف عرض وتحكم في الفروم 

اي قاعدة بيانات تحتوي على ازرار الاضافه والحفظ والحذف والتعديل والبحث وكذلك ازرار التنقل بين السجلات…. 

طيب كيف نبرمج هذه الازرار بعيدا عن نسخ اكواد الاخرين ؟

او ماهي الصيغة العامة لهذه الازرار ؟

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

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

مثل ماتعرف اخي المبرمج كل قاعدة بيانات تحتوي على حقول تختلف عن الاخرى كأن تكون مثلا قاعدة بيانات تحتوي على 5 حقول او اكثر وقاعدة بيانات قد تحتوي على 10 حقول واكثر وهذا الاختلاف يسبب لك اخي المبرمج مشاكل عند برمجة ازرار الاضافه والحفظ والحذف والتعديل والبحث…… 

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

اخي المبرمج والمبرمجة من خلال هذه الدروس 

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

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

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

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

وبرمجنا ايضا ازرار الاضافه والحذف والتعديل ..

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

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

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

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

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

ومهما كانت حجم وضخامة قاعدة البيانات… 

#سوف نقوم بشرح بالدروس على بركة الله وعلى شكل مراحل لكي تكون مرتبه لك اخي المبرمج تابعونا……

#المقولة تقول "يحتل عملك جزء كبير من حياتك ، والسبيل الوحيد لتكون راضيا حقا هو أن تفعل ما تعتقد أنه عمل عظيم.فالطريقة الوحيدة للقيام بعمل عظيم هو أن تحب ماتفعله، وإذا لم تجد بعد ماتحبه فواصل البحث ولا تستسلم.

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

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

افتح برنامج ميكروسوفت اكسس 

في مثالنا سنشتغل على ميكروسوفت اكسس 2007  نسخة عربية ولا يوجد فرق بين نسخة او اصدارات البرنامج 

بعد ذلك افتح برنامج  Access  ستضهر لك شاشة التالية  

اضغط على الايقونة " قاعدة بيانات فارغة" 

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

ستلاحظ بعد الضغط على الزر انشاء ظهور نافذة انشاء الجداول 

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

نقوم بانشاء الحقول كما يلي : 

ID        نوعه رقم 

name      نص 

Adress      نص 

Country نص 

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

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

ملاحظه مهمة

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


 # المرحلة الثانية ربط قاعدة البيانات أكسس   بالفيجوال …

افتح فيجوال بيسك وقم بانشاء مشروع جديد وقم بتسميته test او اي اسم تريده بعد ذلك قم بالضغط على  Ok للانشاء…

اول خطوه راح نعملها هي اضافة اداة Panel من صندوق ToolBox الفائدة من هذه الاداة هي عند تنفيذ البرنامج وعندما تقوم بتكبير البرنامج سوف تبقى الادوات ع زاويه واحدة وغير مرتبة وليست في الوسط… 

بعد ادراج الاداة قم بالضغط على السهم بجانبها واختر Dock in parent container

كما في الصورة رقم 1

ستلاحظ وضع تكبير حجم الاداة على حجم الفروم

 ثم نقوم بتسميه الاداة برمجيا اضغط على اي مكان في الفروم واذهب إلى الخصائص ومن الخصائص اختر name واكتب اسمها pnldata 

خلك مأشر على الاداة ومن الخصائص اختر الاحداث كما في الصورة رقم 2


تضهر لك مجموعة من الاحداث ابحث عن كلمة Resize

كما في الصورة رقم 3


ثم اضغط عليها ضغطتنين سوف تفتح لك نافذة الكود واكتب بها هذا الكود التالي كما في الصورة رقم 4

الان انتهينا من اداة panel وستلاحظ التغير بعد اضافه الادوات الى الفروم…

الان ناتي الى اضافة الادوات في الفروم .

نحتاج الى الادوات التالية :

ـ TextBox عدد 5

ـ Label    عدد 5

ـ Button  عدد 5

ـ RodioButton عدد 4

ـ DataGridView عدد 1

ـ GroupBox. عدد 1

ـ CheckBox عدد 1

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

1⃣ ـ RodioButton قم بتيغر اسمائها كما يلي :

Number

Name

address

Country  

2⃣ـ Button  كما يلي 

add

Update

Delet

Clear

Search

ـ3⃣ CheckBox 

autsearch

4⃣ـ GroupBox.

Groupsearch

ـ5⃣ Label كما يلي : 

Id

Name

adderss

Country 

0

الليبل الخامس والاخير قمنا بتسيمته صفر (0)

اي عند تسميته تكتب 0 وبعدين تعرف فائدة 

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

⚠️ملاحظه نضغط على اداة name على الفروم اي الاداة الموجوده على الفروم ضمن اداة RodioButton لان نحن قمنا بتغير اسمها الى name بعد الضغط عليها اذهب الخصائص واختر خاصية Checked اضبطها على True بحيث عند تحديد اي خيار من البحث سوف يختار اداة واحدة 

⚠️ملاحظه نقوم بتيغر اسماء الادوات مرتين اولا على الفروم وثانيا برمجيا قمنا بتيغر اسماء الادوات على الفروم اعلاه الان نقوم بتيغر اسماء الادوات برمجيا وكما يلي : 

 Number ➡️ rdonumber

Name ➡️ rdoname

address ➡️ rdoaddress

Country  ➡️ rdocountry

add ➡️ Btnadd

update ➡️ Btnupdate

delet➡️ Btndelet

Clear ➡️ Btn Clear 

Search ➡️  BtnSearch 

autsearch ➡️ cbxautosearch

TextBox1 ➡️ txtld

TextBox2 ➡️ txtname

TextBox3 ➡️ txtaddress

TextBox4 ➡️ txtCountry

TextBox5 ➡️ txtsearch

⚠️ملاحظه اداة Label لا نقوم بتغير اسمه برمجيا وانما فقط على الفروم لكي لا تتشابه عليك الاسماء اخي المبرمج وكذلك اداة DataGridView1 يبقى اسمها برمجيا كما هو… 

⚠️ملاحظة ننقر على حقل Textld في الفروم ومن الخصائص نختار  خاصية Read Onle ونضبطها على True اي نجعلها للقراءه فقط


# المرحلة الثالثة اتصال قاعدة بيانات اكسس بالفيجوال … 

بعد ان قمنا بتصميم النموذج واضافة الادوات سوف نقوم بربط قاعدة البيانات بالفيحوال… 

اول خطوة نعملها هي نقل قاعدة بيانات اكسس access الى مسار البرنامج الذي قمنا بنشائه على الفيجوال وهو test ننقلها الى داخل ملف bin وهو Debug اي يصبح مسار

bin /Debug

الان ماشين صح نعود الى الفروم 

نضغط ضغطتين على الفروم تفتح لنا نافذة الكود

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

Public Class form1

ونكتب الكود التالي 


Imports system.Data.oleDb


الان نعرف متغيرين للاتصال بقاعدة البيانات تحت public Class form1 نعرف المتغيرين وكما يلي : 


Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dataaccess.accdb") 


هذا متغير اول 


نعرف متغير ثاني كما يلي :


Dim cmd As New OleDbCommand("", conn)


⚠️ملاحظه كتابة الكودين سطر واحد 


شرح الكودين 

1⃣ الكود الاول 

عرفنا متغير اول اسميناه conn ثم استخدمنا امر الاتصال OleDbConnection بعد ذلك قمنا بكتابة مسار برنامج access بين قوسين لاحظ عزيزي المبرمج بعد كلمة = source

قمنا بوضع اسم قاعدة بيانات اكسس التي اسميناها dataaccess انت اخي المبرمج اذا قمت بتسميه قاعدة بيانات كما تريد فضع اسم قاعدة البيانات بعد علامة = ، اما accdb فهو امتداد قاعدة بيانات اكسس وهو ثابت لا يتغير…

2⃣ الكود الثاني 

عرفنا متغير اسمه cmd ثم استخدمنا امر oleDbCommand لتنفيذ كود الاول Conn… 

❓قد يسئل سائل يقول انا لاحظت ان اتصال بقاعدة البيانات ليست هكذا اي ليس كما اراه الان 

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

انظر الى الصورة كتوضيح للاتصال بقاعدة البيانات


صورة كتوضيح للاتصال بقاعدة البيانات .

بعد ان قمنا بالاتصال بقاعدة البيانات نحتاج الان الى اجراء لفتح وقلق قاعدة البيانات .

⚠️ملاحظة مهمة

اخي المبرمج سنقوم بانشاء اجراء يختصر لنا الاكواد كيف ذلك ؟ .

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


الان نقوم بانشاء الاجراء

ننقر نقرتين على الفروم وتحت التعريفين السابقين نكتب الاجراء التالي : 

Sub runcommand(sqlcommand As String, Optional message As String = "")
        Try
            If conn.State = ConnectionState.Closed Then conn.Open()
            cmd.CommandText = sqlcommand
            cmd.ExecuteNonQuery()
            If message <> "" Then MsgBox(message)
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            If conn.State = ConnectionState.Open Then conn.Close()
        End Try
    End Sub


شرح الكود :

عرفنا اجراء اسمة runcommand من نوع  string وقلنا له اضهر الاتصال في رسالة message ثم قمنا كتابة الاتصال بين داله Try و Catch بعد ذلك اشترطنا على الكود قلنا له عندما تجد قاعدة بيانات مفتوحة state 

قم باغلاق قاعدة البيانات Closed اي لا تفتح قاعدة البيانات عندما تجدها مفتوحة لان اذا قمنا بفتح قاعدة البيانات وهي مفتوحه يسبب لنا خطأ  Error ثم اشترطنا عليه اذا وجدت قاعدة بيانات لا تساوي " "<> اضهرها لنا في رسالة msgBox…

------------------------------

 ثم نقوم بانشاء اجراء ثاني لملء الداتا تيبل بالبيانات ننقر نقرتين على الفروم ونكتب الكود التالي  تحت الاجراء السابق : 


    Function gettable(selectcommand As String) As DataTable
        Try
            Dim tb1 As New DataTable
            If conn.State = ConnectionState.Closed Then conn.Open()
            cmd.CommandText = selectcommand
            tb1.Load(cmd.ExecuteReader)
            Return tb1
        Catch ex As Exception
            MsgBox(ex.Message)
            Return New DataTable
        Finally
            If conn.State = ConnectionState.Open Then conn.Close()
        End Try
    End Function


شرح الكود  

عرفنا دالة من نوع Function واسميناها gettable  وايضا كتبنا الكود بين جملتين Try و Catch لمنع حدوث خطا عند تنفيذ البرنامج 

ثم قمنا بتعريف متغير اسمه tb1  من نوع DataTable ثم شرطنا اذا وجدت قاعدة بيانات مفتوحة قم بتنفيذ جمله الاتصال selectcommand ثم قمنا بتحميل (Load)  داتا (tb1) وقراءة البيانات ExecteReader ثم قمنا بارجاع Return البيانات في الداتا تيبل ثم اشترطنا اذا وجدت قاعدة البيانات مفتوحة State قم باغلاقها Close ولا تفتحها الا وهي مغلقة…


#انظر الى الصورة كتوضيح 

⚠️ملاحظة 

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


بعد ان قمنا بالاتصال بقاعدة البيانات 

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

سوف نقوم بانشاء اجراء ونسميةFilldata فائدته لاظهار البيانات بالداتا كراند فيو (DataGridView) ويكون الكود #كالتالي :


Sub filldata(Optional selectfill As String = "") If selectfill = "" Then selectfill = "select * from newdata order by ld" DataGridView1.DataSource = gettable(selectfill)



شرح الكود

قمنا بانشاء اجراء واسميناه filldata واستخدمنا جملة select ثم استخدمنا دالة شرطية if ثم حددنا اسم جدول newdata، 

بعد ذلك استخدمنا order by ld ومعناها ترتيب الحقول في DataGridView اي تضهر الحقول متسلسلة غير مخربطة 1 ، 2 ، 3 وهكذا ثم عرضنا البيانات…… 

🌅لاحظ الكود كما في الصورة رقم 1

بعد ان كتبنا الكود نذهب الى التحميل 

ـForm1_Load  ونكتب الكود التالي 

Filldata( )

وذلك لغرض تحميل البيانات عند تنفيذ البرنامج 

🌅كما في الصورة 2


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

ويكون الكود كالتالي :


Function GetAutonum(Tablename As String, Colname As String) As String
      
        Dim str As String
        str = "select max( " & Colname & " ) + 1 from " & Tablename
        Dim tb1 As New DataTable
        tb1 = gettable(str)
        Dim autonum As String
        If tb1.Rows(0)(0) Is DBNull.Value Then
            autonum = "1"
        Else
            autonum = tb1.Rows(0)(0)
        End If
        Return autonum
    End Function

شرح الكود 

استخدمنا دالة Function وعرفنا اجراء اسميناه GetAutonum 

عرفنا متغير اسمه str من نوع string 

ثم جعلنا متغير str يساوي جملة select ثم كتبنا 1 + لانه الترقيم يبداء من الرقم 1 وصاعداً ، ثم عرفنا متغير اسمه tb1 لجلب البيانات من الداتا تيبل DataTable  ثم جعلنا td1 يساوي اجراء الذي قمنا بنشائه اعلاه gettable لغرض ملء داتا tb1 بالبيانات 

ثم عرفنا متغير اسمه autonum ثم استخدمنا دالة الشرطية if لترقيم الصفوف (Rows) ثم جعلنا autonum يساوي 1 ثم انهينا الدالة الشرطية واخيراً انهينا الدالة

End Function 


🌅 لاحظ الكود في الصورة رقم 1




… سوف نقوم بانشاء اجراء الآن  لغرض عرض البيانات على تكس بوكس (TextBox) اي عند تنفيذ البرنامج وعند الضغط على اي معلومة في داتا كراند فيو (datagridview) سوف تضهر المعلومات على تكس بوكس …… الاجراء يكون كالاتي

  Sub showdata()

        Try
            If DataGridView1.CurrentRow IsNot Nothing Then
                txtld.Text = DataGridView1.CurrentRow.Cells(0).Value
                txtname.Text = DataGridView1.CurrentRow.Cells(1).Value
                txtaddress.Text = DataGridView1.CurrentRow.Cells(2).Value
                txtcountry.Text = DataGridView1.CurrentRow.Cells(3).Value
                Btnadd.Enabled = False
                btnupdate.Enabled = True
                btndelete.Enabled = True
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    

شرح الكود قمنا بانشاء اجراء اسميناه showdata واستخدمنا Try لمنع حدوث خطا عند تنفيذ البرنامج بعد ذلك قمنا باستخدام جمله شرطية if ثم نقوم بكتابة اسماء التكس بوكس برمجيا مثلا txtldبعد ذلك يبدا الترقيم من الصفر ثم قمنا بتعطيل زر الاضافة Btnadd.Enabled = False وفعلنا زر التعديل والمسح ثم انهينا الدالة الشرطية وهكذا يكون عرض البيانات على تكس بوكس …… 🌅 لاحظ الكود في الصورة كتوضيح


 بعد ذلك نقوم بالضغط على داتا كراند فيو في التصميم ومن الخصائص نذهب الى الاحداث Events ونختار خيار mouseClick ثم نكتب الكود التالي : Showdata( )

 

. بعد ان قمنا بعرض البيانات على تكس بوكس نحتاج الى مسح هذه البيانات من تكس بوكس وليس من قاعدة البيانات او جدول اي عند الضغط على زر clear سوف يمسح المعلومات من تكس بوكس وبنفس الوقت يسمح لزر add باضافة البيانات ويعطل ازرار Delet وزر update…… ويكون الكود كالتالي :

 Sub cleardata()

        For Each c As Control In Pnldata.Controls
            If TypeOf c Is TextBox Then
                c.Text = ""
            End If
        Next
        txtld.Text = GetAutonum("newdata", "ld")
        txtname.Select()
        Btnadd.Enabled = True
        btnupdate.Enabled = False
        btndelete.Enabled = False
        DataGridView1.ClearSelection()
    End Sub

شرح الكود قمنا بانشاء اجراء اسميناه cleardata استخدمنا دالة for ومعرف c اي اذا وجدت c فاضي وتحت جملة next كتبنا جملة txtname.select( ) وفائدتها عند تنفيذ البرنامج وعند الضغط على زر clear سوف يعلم الزر على تكس بوكس ld… بعد ذلك نقوم بكتابة cleardata في نافذة التحميل ـform1_load ثم نذهب الى نافذة تصميم البرنامج وننقر نقرتين على زر clear ونكتب الكود التالي Cleardata( ) 🌅لاحظ الكود في الصورة كتوضيح


  

…… سوف نقوم ببرمجة ازرار الاضافة والتعديل والمسح والبحث تباعاً.. 

 1⃣ اولا سوف نقوم ببرمجة زر الاظافة ننقر نقرتين على زر الاظافة (add) ونكتب الكود التالي : r

     runcommand("insert into newdata values(" & txtld.Text & ",'" & txtname.Text & "','" & txtaddress.Text & "','" & txtcountry.Text & "')", "newdata is added")
        For x As Integer = 0 To DataGridView1.Rows.Count - 1

        Next
        filldata()
        cleardata()
    End Sub

شرح الكود استخدمنا امر runcommand وبين قوسين استخدمنا جملة insert وكتبنا اسم الجدول في قاعدة البيانات وبين قوسين كتبنا جميع اسماء التكس بوكس مثلا " & txtld.Text & ", ' " ⚠️ملاحظة اخي المبرمج تستطيع برمجة اي زر في اي قاعدة بيانات بهذا الطريقة اعلاه المختصرة 🌅لاحظ الكود في الصورة كتوضيح


 

2⃣ ثانيًا برمجة زر التعديل update ننقر نقرتين على زر التعديل ونكتب الكود التالي

 If MsgBox("do you want to delete?", MsgBoxStyle.YesNo) = vbYes Then

            runcommand("delete from newdata where ld=" & txtld.Text, "newdata is deleted")
        End If
        filldata()
        cleardata()

 ⚠️ملاحظة الكود سطر واحد ماعدا for x يكون سطر ثاني 🌅لاحظ الصور للكود كتوضيح



 

3⃣ برمجة زر المسح delet 

 ننقر نقرتين على زر delet ونكتب الكود التالي

 If MsgBox("do you want to delete?", MsgBoxStyle.YesNo) = vbYes Then

            runcommand("delete from newdata where ld=" & txtld.Text, "newdata is deleted")
        End If
        filldata() 
        cleardata()

شرح الكود استخدمنا رسالة if MsgBox اي عند الحذف تظهر رسالة للمستخدم مكتوب فيها do you want to delete ؟ هل تريد المسح مع ازرار تاكيد مسح yes no وعند مسح وضغط على yes تظهر رسالة ثانية توكد على حذف الحقل Newdata is deleted 🌅لاحظ الصورة كتوضيح لكود المسح delet


 

4⃣ برمجة زر بحث search

 ننقر نقرتين على زر البحث search ونكتب الكود التالي

 : Private Sub btnsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsearch.Click

        Dim strsearch As String = "select * from newdata where "

        If rdonumber.Checked Then
            strsearch &= " [ld] like'%" & txtsearch.Text & "%' "
        ElseIf rdoname.Checked Then
            strsearch &= " [namn] like'%" & txtsearch.Text & "%' "
        ElseIf rdoaddress.Checked Then
            strsearch &= " [address] like'%" & txtsearch.Text & "%' "
        ElseIf rdosalary.Checked Then
            strsearch &= " [country] like'%" & txtsearch.Text & "%' "
        End If
        filldata(strsearch)
    End Sub

 🌅لاحظ الصورة رقم 1


كتوضيح لكود البحث search بعد ذلك ننقر نقرتين على تكس بوكس الذي نبحث من خلالة ونكتب الكود التالي :

 If cbxautosearch.Checked Then btnsearch_Click(Nothing, Nothing) End If  

🌅لاحظ الكود في الصورة رقم 2

   

سنعمل شي حلو اخي المبرمج لو راجعت صورة تصميم البرنامج ستلاحظ وضعنا Label وكتبنا قيمته 0 سوف نكتب كود فائدة عند تنفيذ البرنامج وعند البحث سوف يعطيك رقم الحقل الذي تبحث على معلومة فية…… نذهب الى الاجراء الذي قمنا بنشائه سابقًا واسمه filldata ونكتب الكود التالي :

 Label5.Text = DataGridView1.Rows.Count 

 🌅لاحظ الصورة كتوضيح للكود


صورة بعد تنفيذ البرنامج وعند البحث عن معلومة لاحظ الليبل سوف يتغير رقمة عند البحث



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

  كيف عمل تقرير ( Report) لقاعدة بيانات  اكسس 

 على بركة الله نبدا اول خطوه نعملها هي اضافة فروم form ثاني الى مشروعنا ، من project ثم Add window from ثم تظهر لك نافذة اختر منها Windows Form بعد اضافه الفروم قم بتكبير حجمها ثم من خصائص اختر window state اختر Maximized ادرج واحد Button الى الفروم الاول بجنب ازرار الاضافة والتعديل والحذف ومن الخصائص سميه Report ثم انقر نقرتين على زر Report واكتب الكود التالي : Dim d as new form2 d.showDialog ثم ادرج اداة من صندوق toolbox اسمها ReportViewer كما في صورة رقم 1


بعد ادراج الاداة اضغط على السهم الي على الاداة اختر dock in parent container كما في صورة رقم 2

ثم من نفس سهم على الاداة اختر Design a new report كما في الصورة رقم 3

سوف تلاحظ ضهور صفحه اختر منها Database ثم اضغط على next ثم اختر Dataset واضغط على next ثم اختر new constitution ثم اختر Browser ثم حدد مكان قاعدة بيانات اكسس وضغط open ثم اضغط ok ثم اضغط على next ثم اضغط على yes ثم ضع علامة صح على جميع حقول ثم اضغط على finish… سوف تظهر لك نافذة Report wizard وعلى جهة اليمين ضهرت جميع حقول قاعدة البيانات بعد ذلك اضغط على next ثم قم بسحب جميع حقول قاعدة البيانات الى جهه اليمين الى مربع Values عن طريق السحب والافلات بعد ذلك اضغط على next ثم اضغط next ثم اختر اي شكل لـ Report ثم اضغط على Finish…… . ثم اضغط كلك ايمن على شكل واختر lnsert ومن القائمة المنسدلة اختر page Header كذلك اضغط كلك ايمن على شكل ومن lnsert اختر page footer…… الى هنا انتهينا من اضافة تقرير ويمكنك اخي المبرمج اضافة وقت عند طباعة تقرير وكذلك يمكنك اضافه صورة للتقرير وايضا يمكنك ترقيم صفحات تقرير اذا كانت هناك بيانات كبيرة تريد طباعتها …… اضغط كلك ايمن ومن lnsert اختر lmage ومن نافذة اختر lmport ثم حدد مكان اي صورة وضغط على open ثم اضغط على ok ستلاحظ تم ادراج صورة ثم اضغط كلك ايمن على صورة وختر lmage properties ستضهر لك نافذة على جهه يسار اختر Size وعلم على fit to size ثم اضغط على ok الان قم بتكبير حجم صورة كما تشاء من خلال اسهم تحديد علئ صورة…… 🕓ولدراج الوقت والتاريخ اذهب الى نافذة ـReport data واذا لم تكن ظاهرة هذه نافذة اذهب الى View واختر Report data بعد ضهور نافذة لديك افتح ـ Built-in fields واختر اداة ـExecution Time وذلك بسحب الاداة وافلاتها على تقرير اذا اردت اضافه عنوان وسط تقرير اضغط كلك ايمن على مكان فارغ على تقرير واختر lnsert ومنها اختر Text Box ثم انقر نقرتين على نص واكتب ماتشاء 

⚠️اهم خطوه هي ثم اذهب الى فروم الذي اضفنا لعمل التقرير عليه ، اضغط على سهم اداة report ثم انقر على سهم بجنب خيار Choose Report واختر Firm.Report1.rdlc ستلاحظ ادراج ادوات تحت فروم ثم اضغط على حفظ ثم نفذ المشروع وضغط على زر Report سيقوم البرنامج بعمل تقرير لبيانات قاعدة البيانات الى هنا نكون عملنا تقرير باحتراف…… .. 
 ملاحظة اخي المبرمج اقراء الخطوات بتركيز ثم اتبع الخطوات بالصور لتسهيل الخطوات عليك































ملاحظة اتبع ترقيم الصور