برمجة و تصميم فورم الأصناف items

في درس سابق قمنا ببرمجة فورم الأصناف ltemplacesvb اليوم سنكمل مشروعنا ببرمجة فورم خاص بالاصناف وهو فورم مهم جدا لان المشروع قائم عليه اي الفورم الذي يوجد فيه الباركود واسم الصنف والكميه وسعر الصنف وتاريخ وقت البيع وخصم الصنف وربحية الصنف وحد الاقصى للبيع…… وايضا سوف نقوم بربط الشاشات السابقة وهي ltemplacevsvb ltemcompanies ltemgroups نربطها بفورم شاشة الاصناف واي شي تضيفه في هذه شاشات الثلاثه سوف يظهر في شاشة الاصناف وبالتالي يصبح فورم الاصناف من الشاشات المهمه في المشروع . 

تصميم فورم الأصناف

نقوم بادراج فورم ونسميه ltems وثم نفتح قاعدة بيانات مشروعنا من datesources ونختار اسم جدول وهو ltems ومن سهم مجاور للجدول نختار details لعرض تفاصيل الجدول ثم نجعل حقول ثلاثه وهي ltemgroup و حقل ltemcompany وحقل ltemplace كلها كومبو بوكس combobox ثم نسحب جدول على الفورم .

ثم نقوم بادراج button عدد 5 ونغير اسماء كل واحد منهم للاضافة والحذف والحفظ والتعديل و البحث .

 ايضا ندرج تكس بوكس خاص بالبحث  , وندرج ايضا اداة datagridview .

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

الشكل النهائي لتصميم فورم  الأصناف items

الاتصال بجدول الأصناف

ثم نقوم بانشاء اتصال بجدول الاصناف ltems لجلب بياناته كالعادة نذهب إلى مديول module ونقوم بانشاء متغيرات للداتا تيبل وداتا ادبتر و ld ولود load تحميل بيانات جدول وكود code لجلب اعلى رقم في الجدول  . 

بعد ذلك نقوم بانشاء متغيرات للداتا تيبل وداتا ادبتر و ld وكما في كود تالي :

Module1.vb
	  
Public ltmesdt As New DataTable

Public ltmesda As New OleDbDataAdapter

Public mynewldlltmes As Integer

	

تحميل بيانات الأصناف

نقوم بانشاء لود load لتحميل بيانات جدول وكما في كود التالي :

Module1.vb
	  
Public Sub load_ltmes()

ltmesdt.Clear()

ltmesda = New OleDbDataAdapter("select * from ltems", con)


ltmesda.Fill(ltmesdt)


End Sub
	

جلب أعلى صنف

نقوم بانشاء كود code لجلب اعلى رقم في جدول الخاص بالترقيم التلقائي وكما في كود التالي :

Module1.vb
	  
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 الخاص بالفورم نكتب الكود التالي :

ltems.vb
	  

load_ltmes()


DataGridView1.DataSource
= ltmesdt
claerltems()
	

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

تحميل فورم الأصناف

نقوم بتنفيذ الفورم وسوف تلاحظه ظهور حقول متعلقه بجدول الاصناف ltems 

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

تنفيذ فورم الأصناف

ملاحظه

 اخي المبرمج اذا اردت ان تجرب الفورم الذي نقوم بتصميه اجعل فورم رئيسي عند التنفيذ وذلك من خلال قائمة project نختار اخر خيار وهو mr_vbs properties بعتار اسم مشروعنا هو mr_vbs…… اكواد الثلاثه الخاصه بمتغيرات داتا تيبل وداتا ادبتر و ld ولود load تحميل بيانات جدول وكود code لجلب اعلى رقم في جدول الخاص بالترقيم التلقائي .

 برمجة فورم الاصناف

بعد ما قمنا بالاتصال بجدول الاصناف ltems وحملنا بيانات جدول ناتي الى برمجة ازرار الخاصه بالحذف و الحفظ والتعديل والاضافة والبحث .

 برمجة زر الاضافة افراغ textbox

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

ltems.vb
	  
public class ltems
	

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

ltems.vb
	  
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

	

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

برمجة زر الاضافة افراغ textbox

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

 برمجة زر حفظ صنف

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

ltems.vb
	  
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 وننقر عليه نقريتين ونكتب الكود التالي :

ltems.vb
	  
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
	

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

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

 برمجة زر التعديل

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

ltems.vb
	  
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

	

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

برمجة زر التعديل

 برمجة زر الحذف

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

ltems.vb
	  
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

	

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

برمجة زر الحذف

 برمجة زر البحث

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

ltems.vb
	  

ltmesdt.Clear()


ltmesda = New OleDbDataAdapter("select * from ltems where ltemname like '%" & TextBox1.Text & "%'", con)


ltmesda.Fill(ltmesdt)


End Sub
	

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

برمجة زر البحث

 كيف نحمل بيانات او نربط شاشات الثلاثه وهي ltemgroups ltemplacesvb ltemcompanies بفورم الاصناف ltems

بحيث حقل ltemname الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemgroups من حقل groupname 

 وايضا حقل ltemcompany الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemcompanies من حقل Companyname .

 وكذلك حقل ltemplace الموجود على فورم الاصناف ltems بياخذ بيانات فورم ltemplacesvb من حقل placename .

اذن في حدث لود فورم ltems نكتب الكود التالي : ==كود تحميل بيانات كومبو بوكس مكان

ltems.vb
	  

load_places()


Ltemplace.DataSource = placesdt


Ltemplace.DisplayMember = "Placename"


Ltemplace.ValueMember = "Placeld"
	

' كود تحميل بيانات كومبو بوكس شركة جديدة

ltems.vb
	  
load_companies()


Ltemcompany.DataSource = companiesdt

Ltemcompany.DisplayMember = "Companyname"

Ltemcompany.ValueMember = "Companyld"

	

' كود تحميل بيانات كومبو بوكس مجموعة جديدة

ltems.vb
	  
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  .

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

برمجة وتصميم الفورم الخاص بجدول  الأصناف items


صور تنفيذ شاشه و فورم الأصناف

صورة رقم 1 عند تنفيذ فورم الاصناف ltems لاحظ التحديد باللون الأحمر على حقول ltemcompany وحقل ltemplace وحقل ltemgroup واضغط عليها سوف ترى تم تحميل بيانات كل حقل من شاشات السابقه… .

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 2  لاحظ اخي المبرمج التحديد باللون الأحمر على الصورة تم تحميل بيانات جدول company في حقل ltemcompany ضمن فورم الاصناف ltems

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 3 تم تحميل بيانات جدول groups علئ فروم الاصناف ltems في حقل ltemgroup

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 4 تم تحميل بيانات جدول places علئ فورم الاصناف ltems في حقل ltemplace…….

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 5 اضفنا بيانات افتراضية وضغطنا على حقل ltemplace وخترنا وايضا ضغطنا على حقل ltemcompany وخترنا بيانات وضغطنا على حقل ltemgroup واخترنا بيانات بدون ان نكتب لانه هذه الحقول يم اضافة بيانات لها من فورم الخاص بها

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 6 حفضنا بيانات وتم حفظ بنجاح

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

صورة رقم 7 حفضنا ثلاثه اصناف ولاحظ تحديد باللون الاحمر كما في صوره

برمجة وتصميم الفورم الخاص بجدول  الأصناف items

لى هنا انتهينا من برمجة فورم الاصناف ltems وربطنا الشاشات السابقة وهي ltemplacevsvb ltemcompanies ltemgroups بفورم الاصناف ltems .


يتبع تكمله مشروعنا ان شاء الله .