برمجة وتصميم فورم الحضور

اليوم سنبرمج , فورم خاص بجدول الحضور والانصراف وهو hodoor_enseraf ولكن , سنبرمج فورم الحضور وليس الانصراف .

طيب قد يتسائل سائل ويقول ماهو فائدة هذا الفورم ومن حق اي مبرمج يسئل اي سوال باعتبار هو متابع ويانه بالشرح والتطبيق خطوه بخطوة ؟؟ وانا اجاوب على هذا السوال بكل بساطه لو لاحظت اخي المبرمج مشروعنا يتكون من 14 جداول وهذا الشي جيد مشروع اعتبره ضخم بالنسبه لك المطبق معي اخي المبرمج وهيك مشروع ضخم اكيد بيستخدمه شركة متوسطه الحجم او سوبر ماركت كبير وايضا من المؤكد هذه الشركة او السوبر ماركت يوجد فيها موظفين اقل شي من 5 الى7 موظف ويحتاج نظام دخول وخروج للموظفين .

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

طيب الان سنبرمج فورم الحضور نقوم بادراج فورم ونسميه usersCome 

 ومن datesources نختار جدول Hodoor_enseraf ونضغط كلك ايمن على سهم بجنب اسم جدول ونختار details ثم نفتح جدول تظهر لنا الحقول ثم نقوم بالضغط كلك ايمن على حقل heusers ونجعله ComboBox بعد ذلك نقوم بسحب الجدول باكملة على الفورم , ثم نقوم بتغير اسماء الحقول برمجياً .

 بعد اضافة الحقول على الفورم نقوم بمسح حقل heCome ونقوم بادراج بمكانه textbox ونغير اسم حقل textbox برمجيا باسم الحقل الذي مسحناه وهو heCome    

ثم نحدد الحقول التالية : Held Hedate Hetime HeCome Heuser وبعد ماحددنا الحقول نذهب الى الخصائص ونختار خاصية Enabled ونجعلها False , الفائده من هذه الخطوه هي بانه عندما يقوم الموظف بتسجيل حضوره في الشركة وعندما يجد الحقول التي قمنا بجعل خاصيتها False مخفيه لايحق له التعديل على الوقت او التاريخ باعتبار الموظف ياتي الئ مكان عملة بوقت محدد وتاريخ محدد مثلا دوامه ب 8 صباحا ولديه بالشهر مثلا اسبوع عطله وهيك بنكون قيدنا الموظف ولايحق له تلاعب بتاريخ ووقت حضوره للشركه او السوبر ماركت .

نقوم بادراج اداة datagridview وايضا ندرج Button عدد 2 ونسمي الاول حضور والثاني الغاء .

ملاحظه 

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

كما في الشكل  التالي  لاحظ الشكل النهائي للفورم كما في الصوره  .

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


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

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

بعد كتابه اسم شاشة الحظور ننقر نقرتين عليها ونكتب الكود التالي :

	  

userscome.MdiParent = Me


userscome.WindowState = FormWindowState.Maximized


userscome.Show()
	

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

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

  

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

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

Module1.vb
	  

Public hodoor_Enserafdt As New DataTable


Public hodoor_Enserafda As New OleDbDataAdapter


Public mynewldhodoor_Enseraf As Integer
	

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

Module1.vb
	  

Public Sub load_hodoor_Enseraf()


hodoor_Enserafdt.Clear()


hodoor_Enserafda = New OleDbDataAdapter("select * from hodoor_enseraf where Hedate = #" & Now.Date.ToString("yyyy/MM/dd") & "#", con)


hodoor_Enserafda.Fill
(hodoor_Enserafdt)


End Sub

	

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

Module1.vb
	  
Public Sub code_hodoor_enseraf()


Dim dt As New DataTable


Dim da As New OleDbDataAdapter("select max(held) from hodoor_enseraf", con)



da.Fill(dt)


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


mynewldhodoor_Enseraf = 1


Else


mynewldhodoor_Enseraf = dt(0)(0) + 1


End If

End Sub

	

الاكواد سهله مافيها اي صعوبه اما كود لود load الخاص بتحميل بيانات جدول قمنا بتحديد الجدول بـ select واعطيناه شرط where حتى يعطينا الوقت الحالي now في خانه حقل hedate وكتبنا الرموز الخاصه بالسنه واليوم والشهر yayyy/mm/dd .

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

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

ثم نذهب الى الفورم وننقر نقرتين عليه وفي حدث لود load نكتب الكود التالي :

usersCome.vb
	  

load_hodoor_Enseraf()


DataGridView1.DataSource = hodoor_Enserafdt

	

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

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


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

اذن نقوم بانشاء الاجراء ونسميه newtime ويصبح الكود كالتالي :

usersCome.vb
	  

Public Sub newtime()


code_hodoor_enseraf()


Hecome.Text = ""


Hedate.Text = Now.Date


Held.Text = mynewldhodoor_Enseraf


Henotes.Text = ""


Hetime.Text = Now


Heuser.Text = ""


Heusers.Text = ""


End Sub

	

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

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

ثم نذهب إلى حدث لود load فروم ونستدعي الاجراء newtime


 الان سوف نحمل بيانات فورم users الخاص بالموظفين لتظهر في خانه حقل heuser ويكون الكود كالتالي :

usersCome.vb
	  

load_users()

Heusers.DataSource = usersdt


Heusers.DisplayMember = "Userfullname"


Heusers.ValueMember = "Userld"
	

 الكود تم شرحه مسبقا لايحتاج الى شرح لاحظ الكود كما في الصورة .

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

برمجة زر الحضور ننقر نقرتين على زر الحضور ونكتب الكود التالي :

usersCome.vb
		  

Hecome.Text = Now

hodoor_Enserafdt.Rows.Add()


Dim last As Integer = hodoor_Enserafdt.Rows.Count - 1

hodoor_Enserafdt.Rows(last)
.Item("Hecome") = Hecome.Text

hodoor_Enserafdt.Rows(last)
.Item("Hedate") = Hedate.Value

hodoor_Enserafdt.Rows(last)
.Item("Held") = Held.Text

hodoor_Enserafdt.Rows(last)
.Item("henotes") = Henotes.Text

hodoor_Enserafdt.Rows(last)
.Item("Hetime") = Hetime.Value

hodoor_Enserafdt.Rows(last)
.Item("Heuser") = Heuser.Text

hodoor_Enserafdt.Rows(last)
.Item("Heusers") = Heusers.Text


Dim save As New OleDbCommandBuilder
(hodoor_Enserafda)


hodoor_Enserafda.Update
(hodoor_Enserafdt)

hodoor_Enserafdt.AcceptChanges()


MsgBox(" تم تسجيل حضور الموظف " & Heusers.Text)


load_hodoor_Enseraf()


newtime()


End Sub

		

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

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

اما مايخص زر الغاء ننقر نقرتين عليه ونكتب فقط End 


صور بعد التنفيذ

 صورة رقم 1 تجربه فورم الحضور

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

صورة رقم 2 نختار من حقل heusers اسم موظف معين

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

صورة رقم 3 ضهرت لدينا اسماء الموظفين في ComboBox

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

صورة رقم 4 اخترنا اسم موظف اكرم وضغطنا على حضور

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

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

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


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

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


الى هنا انتهينا من برمجة فورم الحضور usersCome بسهوله .