في درس سابق قمنا ببرمجة فورم الأصناف ltemplacesvb اليوم سنكمل مشروعنا ببرمجة فورم خاص بالاصناف وهو فورم مهم جدا لان المشروع قائم عليه اي الفورم الذي يوجد فيه الباركود واسم الصنف والكميه وسعر الصنف وتاريخ وقت البيع وخصم الصنف وربحية الصنف وحد الاقصى للبيع…… وايضا سوف نقوم بربط الشاشات السابقة وهي ltemplacevsvb ltemcompanies ltemgroups نربطها بفورم شاشة الاصناف واي شي تضيفه في هذه شاشات الثلاثه سوف يظهر في شاشة الاصناف وبالتالي يصبح فورم الاصناف من الشاشات المهمه في المشروع .
تصميم فورم الأصناف
نقوم بادراج فورم ونسميه ltems وثم نفتح قاعدة بيانات مشروعنا من datesources ونختار اسم جدول وهو ltems ومن سهم مجاور للجدول نختار details لعرض تفاصيل الجدول ثم نجعل حقول ثلاثه وهي ltemgroup و حقل ltemcompany وحقل ltemplace كلها كومبو بوكس combobox ثم نسحب جدول على الفورم .
ثم نقوم بادراج button عدد 5 ونغير اسماء كل واحد منهم للاضافة والحذف والحفظ والتعديل و البحث .
ايضا ندرج تكس بوكس خاص بالبحث , وندرج ايضا اداة datagridview .
ليصبح الفورم بالشكل النهائي كما في صورة
الاتصال بجدول الأصناف
ثم نقوم بانشاء اتصال بجدول الاصناف ltems لجلب بياناته كالعادة نذهب إلى مديول module ونقوم بانشاء متغيرات للداتا تيبل وداتا ادبتر و ld ولود load تحميل بيانات جدول وكود code لجلب اعلى رقم في الجدول .
بعد ذلك نقوم بانشاء متغيرات للداتا تيبل وداتا ادبتر و ld وكما في كود تالي :
Public ltmesdt As New DataTable Public ltmesda As New OleDbDataAdapter Public mynewldlltmes As Integer
تحميل بيانات الأصناف
نقوم بانشاء لود load لتحميل بيانات جدول وكما في كود التالي :
Public Sub load_ltmes() ltmesdt.Clear() ltmesda = New OleDbDataAdapter("select * from ltems", con) ltmesda.Fill(ltmesdt) End Sub
جلب أعلى صنف
نقوم بانشاء كود code لجلب اعلى رقم في جدول الخاص بالترقيم التلقائي وكما في كود التالي :
Public Sub code_ltmes() Dim dt As New DataTable Dim da As New OleDbDataAdapter("select max(ltemld) from ltems", con) da.Fill(dt) If IsDBNull(dt(0)(0)) = True Then mynewldlltmes = 1 Else mynewldlltmes = dt(0)(0) + 1 End If End Sub
• كما في الصورة التالية تصبح الاكواد الثلاثه اعلاه كما في الصورة
تحميل فورم الأصناف
ثم نذهب إلى الفورم ltems وننقر عليه وفي حدث لود load الخاص بالفورم نكتب الكود التالي :
load_ltmes() DataGridView1.DataSource = ltmesdt claerltems()
• كما في الصورة التالية لاحظ كود اعلاه كما في الصورة
نقوم بتنفيذ الفورم وسوف تلاحظه ظهور حقول متعلقه بجدول الاصناف ltems
وكما في الصورة
ملاحظه
اخي المبرمج اذا اردت ان تجرب الفورم الذي نقوم بتصميه اجعل فورم رئيسي عند التنفيذ وذلك من خلال قائمة project نختار اخر خيار وهو mr_vbs properties بعتار اسم مشروعنا هو mr_vbs…… اكواد الثلاثه الخاصه بمتغيرات داتا تيبل وداتا ادبتر و ld ولود load تحميل بيانات جدول وكود code لجلب اعلى رقم في جدول الخاص بالترقيم التلقائي .
برمجة فورم الاصناف
بعد ما قمنا بالاتصال بجدول الاصناف ltems وحملنا بيانات جدول ناتي الى برمجة ازرار الخاصه بالحذف و الحفظ والتعديل والاضافة والبحث .
برمجة زر الاضافة افراغ textbox
نقوم بانشاء اجراء خاص بالاضافة ونسميه clearltems اذن ننقر نقرتين على فورم وتحت
public class ltems
نكتب الكود التالي :
Public Sub claerltems() code_ltmes() Ltembarcode.Text = "" Ltemcompany.Text = "" Ltemdate.Text = Now.Date Ltemearn.Text = 0 Ltemgroup.Text = "" Ltemld.Text = mynewldlltmes Ltemlimit.Text = 0 Ltemmaxdiscound.Text = 0 Ltemname.Text = "" Ltemplace.Text = "" Ltemprice.Text = 0 Ltemqty.Text = 0 Ltemtime.Text = Now Ltemuser.Text = "" End Sub
• كما في الصورة التالية لاحظ كود كما في الصورة
عد ذلك نذهب الى زر الاضافة ننقر عليه ونستدعي الاجراء , وايضا في حدث اللود load الخاص بالفورم نستدعي الاجراء الاضافة .
برمجة زر حفظ صنف
ننقر نقرتين على زر الحفظ ونكتب الكود التالي : ======= كود الحفظ
ltmesdt.Rows.Add() Dim last As Integer = ltmesdt.Rows.Count - 1 ltmesdt.Rows(last).Item ("Ltembarcode") = Ltembarcode.Text ltmesdt.Rows(last).Item ("Ltemcompany") = Ltemcompany.Text ltmesdt.Rows(last).Item ("Ltemdate") = Ltemdate.Value ltmesdt.Rows(last).Item ("Ltemearn") = Ltemearn.Text ltmesdt.Rows(last).Item ("Ltemgroup") = Ltemgroup.Text ltmesdt.Rows(last).Item ("Ltemld") = Ltemld.Text ltmesdt.Rows(last).Item ("Ltemlimit") = Ltemlimit.Text ltmesdt.Rows(last).Item ("Ltemmaxdiscound") = Ltemmaxdiscound.Text ltmesdt.Rows(last).Item ("Ltemname") = Ltemname.Text ltmesdt.Rows(last).Item ("Ltemplace") = Ltemplace.Text ltmesdt.Rows(last).Item ("Ltemprice") = Ltemprice.Text ltmesdt.Rows(last).Item ("Ltemqty") = Ltemqty.Text ltmesdt.Rows(last).Item ("Ltemtime") = Ltemtime.Value ltmesdt.Rows(last).Item ("Ltemuser") = Ltemuser.Text Dim save As New OleDbCommandBuilder (ltmesda) ltmesda.Update(ltmesdt) ltmesdt.AcceptChanges() MsgBox("تم حفظ البيانات بنجاح") load_ltmes() claerltems() End Sub
• كما في الصورة التالية الكود شرحناه عده مرات لاحظ كود الحفظ كما في الصورة
برمجة كود وضع البيانات على تكس بوكس
نحدد اداة datagridview ومن الاحداث نختار حدث selectionchanged وننقر عليه نقريتين ونكتب الكود التالي :
Try Dim pos As Integer = BindingContext(ltmesdt).Position Ltembarcode.Text = ltmesdt.Rows(pos).Item ("Ltembarcode") Ltemcompany.Text = ltmesdt.Rows(pos).Item ("Ltemcompany") Ltemdate.Text = ltmesdt.Rows(pos).Item ("Ltemdate") Ltemearn.Text = ltmesdt.Rows(pos).Item ("Ltemearn") Ltemgroup.Text = ltmesdt.Rows(pos).Item ("Ltemgroup") Ltemld.Text = ltmesdt.Rows(pos).Item ("Ltemld") Ltemlimit.Text = ltmesdt.Rows(pos).Item ("Ltemlimit") Ltemmaxdiscound.Text = ltmesdt.Rows(pos).Item ("Ltemmaxdiscound") Ltemname.Text = ltmesdt.Rows(pos).Item ("Ltemname") Ltemplace.Text = ltmesdt.Rows(pos).Item ("Ltemplace") Ltemprice.Text = ltmesdt.Rows(pos).Item ("Ltemprice") Ltemqty.Text = ltmesdt.Rows(pos).Item ("Ltemqty") Ltemtime.Value = ltmesdt.Rows(pos).Item ("Ltemtime") Ltemuser.Text = ltmesdt.Rows(pos).Item ("Ltemuser") Catch ex As Exception End Try End Sub
• كما في الصورة التالية لاحظ كود وضع بيانات على تكس بوكس كما في الصورة
برمجة زر التعديل
ننقر نقرتين على زر التعديل ونكتب الكود التالي : ===== كود التعديل
Dim pos As Integer = BindingContext(ltmesdt).Position ltmesdt.Rows(pos).Item ("Ltembarcode") = Ltembarcode.Text ltmesdt.Rows(pos).Item ("Ltemcompany") = Ltemcompany.Text ltmesdt.Rows(pos).Item ("Ltemdate") = Ltemdate.Value ltmesdt.Rows(pos).Item ("Ltemearn") = Ltemearn.Text ltmesdt.Rows(pos).Item ("Ltemgroup") = Ltemgroup.Text ltmesdt.Rows(pos).Item ("Ltemld") = Ltemld.Text ltmesdt.Rows(pos).Item ("Ltemlimit") = Ltemlimit.Text ltmesdt.Rows(pos).Item ("Ltemmaxdiscound") = Ltemmaxdiscound.Text ltmesdt.Rows(pos).Item ("Ltemname") = Ltemname.Text ltmesdt.Rows(pos).Item ("Ltemplace") = Ltemplace.Text ltmesdt.Rows(pos).Item ("Ltemprice") = Ltemprice.Text ltmesdt.Rows(pos).Item ("Ltemqty") = Ltemqty.Text ltmesdt.Rows(pos).Item ("Ltemtime") = Ltemtime.Value ltmesdt.Rows(pos).Item ("Ltemuser") = Ltemuser.Text Dim save As New OleDbCommandBuilder (ltmesda) ltmesda.Update(ltmesdt) ltmesdt.AcceptChanges() MsgBox("تم تعديل البيانات بنجاح") load_ltmes() End Sub
• كما في الصورة التالية لاحظ كود التعديل كما في الصورة
برمجة زر الحذف
ننقر نقرتين على زر الحذف ونكتب الكود التالي :
If MsgBox("هل تريد حذف الصنف", MsgBoxStyle.OkCancel, "تاكيد الحذف") = MsgBoxResult.Ok Then Dim pos As Integer = BindingContext(ltmesdt).Position ltmesdt.Rows(pos).Delete() Dim save As New OleDbCommandBuilder (ltmesda) ltmesda.Update(ltmesdt) ltmesdt.AcceptChanges( ) MsgBox("تم الحذف") load_ltmes() Else End If End Sub
• كما في الصورة التالية لاحظ كود الحذف كما في الصورة
برمجة زر البحث
كيف نحمل بيانات او نربط شاشات الثلاثه وهي ltemgroups ltemplacesvb ltemcompanies بفورم الاصناف ltems
بحيث حقل ltemname الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemgroups من حقل groupname
وايضا حقل ltemcompany الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemcompanies من حقل Companyname .
وكذلك حقل ltemplace الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemplacesvb من حقل placename .
اذن في حدث لود فورم ltems نكتب الكود التالي : ==كود تحميل بيانات كومبو بوكس مكان
load_places() Ltemplace.DataSource = placesdt Ltemplace.DisplayMember = "Placename" Ltemplace.ValueMember = "Placeld"
' كود تحميل بيانات كومبو بوكس شركة جديدة
load_companies() Ltemcompany.DataSource = companiesdt Ltemcompany.DisplayMember = "Companyname" Ltemcompany.ValueMember = "Companyld"
' كود تحميل بيانات كومبو بوكس مجموعة جديدة
load_Grops() Ltemgroup.DataSource = groupsdt Ltemgroup.DisplayMember = "Groupname" Ltemgroup.ValueMember = "Groupld"
شرح الاكواد
في كود تحميل بيانات مكان places" في سطر اول استدعينا لود load الخاص بتحميل بيانات جدول مكان places" .
في سطر ثاني حملنا بيانات حقل ltemplace المتواجد ضمن فورم الاصناف ltems ويساوي داتا سورس اي بيانات جدول places .
في سطر ثالث جعلنا حقل ltemeplace بياخذ بيانات فورم ltemcompanies من حقل placename .
في سطر رابع جعلنا ltemeplace بياخذ اول قيمه من فورم ltemplacesvb بدلاله حقل placeld .
اما شرح كود خاص بتحميل بيانات فورم ltemcompanies وفورم ltemgroups نفس كود الاول الخاص بفورم ltemplacesvb .
• كما في الصور التالية . اذن تصبح الاكواد الثلاثه اعلاه كما في الصورة
صور تنفيذ شاشه و فورم الأصناف
صورة رقم 1 عند تنفيذ فورم الاصناف ltems لاحظ التحديد باللون الأحمر على حقول ltemcompany وحقل ltemplace وحقل ltemgroup واضغط عليها سوف ترى تم تحميل بيانات كل حقل من شاشات السابقه… .
صورة رقم 2 لاحظ اخي المبرمج التحديد باللون الأحمر على الصورة تم تحميل بيانات جدول company في حقل ltemcompany ضمن فورم الاصناف ltems
صورة رقم 3 تم تحميل بيانات جدول groups علئ فروم الاصناف ltems في حقل ltemgroup
صورة رقم 4 تم تحميل بيانات جدول places علئ فورم الاصناف ltems في حقل ltemplace…….
صورة رقم 5 اضفنا بيانات افتراضية وضغطنا على حقل ltemplace وخترنا وايضا ضغطنا على حقل ltemcompany وخترنا بيانات وضغطنا على حقل ltemgroup واخترنا بيانات بدون ان نكتب لانه هذه الحقول يم اضافة بيانات لها من فورم الخاص بها
صورة رقم 6 حفضنا بيانات وتم حفظ بنجاح
صورة رقم 7 حفضنا ثلاثه اصناف ولاحظ تحديد باللون الاحمر كما في صوره
لى هنا انتهينا من برمجة فورم الاصناف ltems وربطنا الشاشات السابقة وهي ltemplacevsvb ltemcompanies ltemgroups بفورم الاصناف ltems .
يتبع تكمله مشروعنا ان شاء الله .