تصميم وبرمجة واجهة العملاء customers فيجول بيسك دوت نت


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

المرحلة الثانية : 

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

نقوم بانشاء مشروعنا بالفيجوال 

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

 ملاحظه

 نقوم بنقل قاعدة بيانات اكسس الى مسار مشروعنا داخل ملف bin /Debug .

ملاحظه 

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

طيب بعد ما عرفنا نوع الاتصالن نقومبانشاء اول فورم خاص بالعملاء ونسمي الفورم باسم customers 

ثم نقوم بجعل خط فورم حجم 12 

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

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


بعد ما قمنا بالاتصال المباشر مع قاعدة البيانات نقوم بفتح نافذة 

 Date Sources 

🌆كما في الصورة  



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

ونختار Details لاضهار تفاصيل الجدول

كما في الصورة 



ثم نضغط ضغطتين كلك ايمن على اسم جدول ونفتحه وتظهر لنا جميع حقول متعلقه بجدول Customers .

بعد ذلك نعمل التالي : 

نقوم بضغط ضغطه واحده كلك ايمن 

على سهم بجنب حقل Customergender 

ونختار ComboBox باعتبار هذا حقل سوف يكون خاص للجنس اي ذكر وانثى

ولازم نعمل له ComboBox .

كما في الصورة 



وايضا نفس الكلام نعمل لحقل Customertype كومبو بوكس .

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

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

ملاحظه مهمه جداً : 

نقوم بتغير اسماء تكس بوكس برمجياً حتى نتعامل معها بالاكواد بدون اي مشاكل ، عندما سحبنا  تكس بوكس الخاصه بالحقول , البرنامج اعطى اسماء ل لهن مثلا اسم حقل customergender

الموجود ضمن جدول Customers اعطاء اسم CustomergenderTextbox 

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


ثم نقوم بادراج Button عدد 5 

ونسمي كل واحد منهم للاضافة والحذف والحفظ والتعديل والبحث .

ونقوم ايضا بادراج تكس بوكس واحد خاص بالبحث عن البيانات 

وندرج ايضا اداة DataGridView لتحميل البيانات عليها .

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

 نفذ البرنامج ليصبح الفورم بالشكل النهائي كما في الصورة التالية  .



بعد ماعملنا فورم Customers 

نقوم بانشاء مديول Module وايضا عرفنا كيف نقوم بانشاء مديول في دروس سابقة .

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


اذن نقوم بانشاء مديول module 
من  قائمة project نختار add module  ونترك اسمه كما هو او غيره كما يحلو لك اخي . 

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


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

ثم نعمل اتصال لقاعدة البيانات الرئيسية وليس لجدول الخاص بـ Customers ويكون الاتصال كما في كود التالي : 

Public con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=mrkdt.accdb")


شرح الكود عرفنا متغير عام con من نوع OleDbConnection للاتصال بقاعدة البيانات ثم جلبنا مسار قاعدة بيانات بين قوسين وبين علامتين تنصيص ومن نوع اكسس بارومتر 12 واسم قاعدة البيانات هي Mrkdt كما موضحة في مسار .
🌆كما في الصورة التالية


نقوم بعد ذلك بانشاء اتصال لبيانات جدول Customers وذلك من خلال المديول . 
ويكون الكود كما يلي :-  

سطر اول
    Public customersdt As New DataTable

سطر ثاني
    Public customersda As New OleDbDataAdapter

سطر ثالث
    Public mynewldcustomers As Integer


شرح الكود  في سطر اول من الاجراء عرفنا وفترضنا متغير  customersdt من نوع داتا تيبل

وفي سطر ثاني ايضا من الاجراء عرفنا وفترضنا متغير customersda من نوع داتا ادبتر  

في سطر ثالث من الاجراء عرفنا متغير من نوع integer رقم لجلب رقم حقل 


ثم نقوم بعمل لود لتحميل البيانات من جدول ويكون الكود كالتالي :-  

Public Sub load_customers()

        customersdt.Clear()

        customersda = New
 OleDbDataAdapter("select * from customers", con)

        customersda.Fill(customersdt)

    End Sub
  
  
شرح الكود 
عملنا اجراء خاص بتحميل البيانات واسميناه load_customers

ثم فضينا داتا تيبل من بيانات Clear 
ثم عملنا جمله select لتحديد جدول والاتصال به 
ثم ملئنا fill جدول بالبيانات 


 بعد ذلك نعمل اجراء خاص بجلب اعلئ رقم في جدول الخاص بـld

  Public Sub code_customers()

        Dim dt As New DataTable

        Dim da As New
 OleDbDataAdapter("select max(customerld) from customers", con)

        da.Fill(dt)

        If IsDBNull(dt(0)(0)) = True Then

            mynewldcustomers = 1

        Else

            mynewldcustomers = dt(0)(0) + 1

        End If

    End Sub

  
شرح الكود عملنا اجراء عام خاص بجلب اعلئ رقم في جدول وسمينا الاجراء باسم code_customers

عملنا متغير dt من نوع داتا تيبل
 
عملنا متغير da من نوع داتا اودبلي ادبتر وكتبنا جمله select واعلئ Max قيمه في جدول الخاص بحقل Customerld 
ثم كتبنا جمله الاتصال con 

بعد ذلك قمنا بمئل fill جدول بالبيانات

ثم عملنا جمله شرطيه وقلنا له اذا كانت داتا تيبل dt تساوي 0 اجعل ld الخاص بـ mynewldcustomers يساوي 1 

والا Else اجعلي داتا تيبل + 1 

ليصبح الكود باكمله كما في الصورة التالية .



بعد ذلك نقوم بوضع كود اللود load_customers الذي عملنا في المديول  في حدث لود فورم  Customers 

ليصبح كود كما يلي :

سطر اول
load_customers()

سطر ثاني 
        DataGridView1.DataSource
 = customersdt

كما في الصورة التالية .


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


في اول الدرس  قمنا بالاتصال بقاعدة البيانات الرئيسية وايضا قمنا بالاتصال باول جدول العملاء customers 
وغيرنا اسماء التكس بوكس برمجياً وضعنا اداة datagridview علئ الفورم لعرض البيانات وضعنا ايضا ازرار الحذف والحفظ والتعديل والاضافة والبحث .


ملاحظه نذهب إلى تصمم فورم ونقوم بالضغط على سهم تكس بوكس الخاص بـ Customergender ونختار Edit ltems ونكتب في نافذة ذكر ، انثى  .

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

🌆لاحظ ذلك كما في الصور التالية .






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

اول شي نعرف مكتبه فضاء الاسماء 
نذهب الى الفورم وننقر نقرتين 
وفوق public class customers نكتب الكود التالي

Imports System.Data.OleDb



ناتي الان الى برمجة الازرار 

1⃣ برمجة زر الاضافة  add

نعمل اجراء فائده للاضافة وتفريغ تكس بوكس من بيانات وايضا نحتاجه في زر الحفظ اذن تحت 
public class customers
نقوم بانشاء الاجراء ونسميه newcustomer ونكتب الكود التالي :


  
 Public Sub newcustomer()

        code_customers()

        Customeraddress.Text = ""

        Customerbalance.Text = 0

        Customerdate.Value =
 Now.Date

        Customergender.Text = ""

        Customerld.Text = mynewldcustomers

        Customername.Text = ""

        Customerphone.Text = ""

        Customertime.Value = Now

        Customertype.Text = ""

        Customeruser.Text =
" "
    End Sub

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

وايضا كود Customerld اخذ قيمه mynewldcustomers لان بيساوي ld في جدول 

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


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

 ( )newcustomer


لاحظ كود الاضافة كما في الصورة التالية .

2⃣ ثانيا كود زر الحفظ 

ننقر نقرتين على زر الحفظ ونكتب الكود التالي :

'=========كود الحفظ

customersdt.Rows.Add()

        Dim last As Integer = customersdt.Rows.Count - 1
        customersdt.Rows(last).Item
("Customeraddress") = Customeraddress.Text
        customersdt.Rows(last).Item
("Customerbalance") = Customerbalance.Text
        customersdt.Rows(last).Item
("Customerdate") = Customerdate.Value
        customersdt.Rows(last).Item
("Customergender") = Customergender.Text
        customersdt.Rows(last).Item
("Customerld") = Customerld.Text
        customersdt.Rows(last).Item
("Customername") = Customername.Text
        customersdt.Rows(last).Item
("Customerphone") = Customerphone.Text
        customersdt.Rows(last).Item
("Customertime") = Customertime.Value
        customersdt.Rows(last).Item
("Customertype") = Customertype.Text
        customersdt.Rows(last).Item
("Customeruser") = Customeruser.Text

        Dim save As New OleDbCommandBuilder(customersda)
        customersda.Update
(customersdt)
        customersdt.AcceptChanges()
        MsgBox("تم حفظ البيانات بنجاح")

        load_customers()

        newcustomer()

End Sub 
  

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

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

وضعنا رسالة لتاكيد عمليه الحفظ 
وفي اخر كود استدعينا لود لتحميل بيانات جدول ()load_customers
الذي عملنا في المديول وايضا استدعينا اجراء الاضافة ()newcustomer لانه قلنا نحتاجه بعد كل عملية اضافة وحفظ

هذا هو مافي الكود  سهل وبسيط لا يحتاج له شرح زياده 

🌆لاحظ كود الحفظ كما في الصورة  .



3⃣ كود لوضع بيانات على تكس بوكس بعد حفظ وايضا نستفاد منه لتعديل البيانات .

نحدد على اداة datagridview ومن الاحداث تبع الاداة نختار SelectionChanged
وننقر بعدها نقرتين على حدث ونكتب الكود التالي :


  Try

            Dim pos As Integer = BindingContext(customersdt)
.Position

            Customeraddress.Text = customersdt.Rows(pos).Item
("Customeraddress")

            Customerbalance.Text = customersdt.Rows(pos).Item
("Customerbalance")

            Customerdate.Value = customersdt.Rows(pos).Item
("Customerdate")

            Customergender.Text = customersdt.Rows(pos).Item
("Customergender")

            Customerld.Text = customersdt.Rows(pos).Item
("Customerld")

            Customername.Text = customersdt.Rows(pos).Item
("Customername")

            Customerphone.Text = customersdt.Rows(pos).Item
("Customerphone")

            Customertime.Value = customersdt.Rows(pos).Item
("Customertime")

            Customertype.Text = customersdt.Rows(pos).Item
("Customertype")

            Customeruser.Text = customersdt.Rows(pos).Item
("Customeruser")


        Catch ex As Exception

        End Try

End Sub 

  

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

لاحظ كود اضافة البيانات على تكس بوكس كما في الصوره .


4⃣  كود وبرمجة زر التعديل 

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

'==================كود التعديل
  Dim pos As Integer = BindingContext(customersdt)
.Position
        customersdt.Rows(pos).Item
("Customeraddress") = Customeraddress.Text
        customersdt.Rows(pos).Item
("Customerbalance") = Customerbalance.Text
        customersdt.Rows(pos).Item
("Customerdate") = Customerdate.Value
        customersdt.Rows(pos).Item
("Customergender") = Customergender.Text
        customersdt.Rows(pos).Item
("Customerld") = Customerld.Text
        customersdt.Rows(pos).Item
("Customername") = Customername.Text
        customersdt.Rows(pos).Item
("Customerphone") = Customerphone.Text
        customersdt.Rows(pos).Item
("Customertime") = Customertime.Value
        customersdt.Rows(pos).Item
("Customertype") = Customertype.Text
        customersdt.Rows(pos).Item
("Customeruser") = Customeruser.Text

        Dim save As New OleDbCommandBuilder
(customersda)


        customersda.Update
(customersdt)
        customersdt.AcceptChanges()

        MsgBox("تم تعديل البيانات بنجاح")

        load_customers() 

End Sub 

    
شرح الكود 
ايضا الكود شرحنا في دروس سابقة 

لاحظ كود التعديل كما في الصورة .


5⃣  كود وبرمجة زر  الحذف 
ننقر نقرتين على زر الحذف ونكتب الكود التالي : 
    
  If MsgBox("هل تريد حذف العميل", MsgBoxStyle.OkCancel, "تاكيد الحذف") = MsgBoxResult.Ok Then


            Dim pos As Integer = BindingContext(customersdt)
.Position
            customersdt.Rows(pos).Delete()

            Dim save As New OleDbCommandBuilder
(customersda)


            customersda.Update
(customersdt)
            customersdt.AcceptChanges()


            MsgBox("تم الحذف")

            load_customers()


        Else

        End If

End sub

شرح الكود 
الكود بسيط اول سطر وضعنا جمله شرطيه للتاكيد قبل الحذف ثم عرفنا متغير pos ثم حدد حقل Rows عند حذف Delete  ثم عرفنا متغير للحفظ save للحفظ و حفظنا بعد عمليه حذف 
ثم حدثنا update بيانات بعد عمليه حذف ثم وضعنا رساله تاكيد حذف  
ثم استدعينا ()load_customers
لتحميل البيانات جديده بعد عمليات حذف وحفظ وتحديث 

هذا هو ما يخص كود الحذف 
لاحظ كود الحذف كما في الصورة .


6⃣  كود وبرمجة زر البحث 

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

customersdt.Clear()


        customersda = New OleDbDataAdapter("select * from customers where customername like '%" & TextBox1.Text & "%'", con)

        customersda.Fill(customersdt)

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

اول سطر فضينا بيانات للبحث 
وثاني سطر حددنا جدول customers بجملة Select للبحث عن بيانات عندم where حقل customername يساوي like تكس بوكس 1 textbox 

وثالث سطر عند ضغط على زر بحث يبحث لنا عن اسم العميل الذي بحثنا عليه

هذا كل مايخص زر البحث 

لاحظ كود البحث كما في الصورة  التالية .



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


صورة رقم 3 بعدما ضغطنا على زر الحفظ تم حفظ البيانات بنجاح


صورة رقم 4 عند اضافة بيانات اخرئ ننقر على زر الاضافة




صورة رقم 5 لاحظ بعد ضغط على زر الاضافة مباشره في Customerld وضع لنا رقم 2 تلقائيًا وفضانا بيانات من جميع تكس بوكس


صورة رقم 6 حددنا حقل الذي نريد حذفه


صورة رقم 7 عند ضغط على زر حذف ظهر لدينا رساله تاكيد للحذف




صورة رقم 8 عند تاكيد حذف نلاحظ تم حذف حقل بنجاح