اليوم سنبرمج , فورم خاص بجدول الحضور والانصراف وهو 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 كما في كود التالي :
Public hodoor_Enserafdt As New DataTable Public hodoor_Enserafda As New OleDbDataAdapter Public mynewldhodoor_Enseraf As Integer
نقوم بانشاء لود load لتحميل بيانات جدول وكما في الكود التالي :
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 لجلب اعلى رقم في جدول كما في الكود التالي :
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 نكتب الكود التالي :
load_hodoor_Enseraf() DataGridView1.DataSource = hodoor_Enserafdt
• لاحظ كود اعلاه كما في الصوره .
الان نقوم بانشاء اجراء خاص بتفريق خانات تكس بوكس وقد يسئل سائل ويقول ليس لدينا زر خاص بالاضافة نعم لم نضع زر للاضافة ولكن عند الضغط على زر حضور ويحفظ سوف يقوم بتحميل بيانات ويلود من جديد هذه فكره الاجراء .
اذن نقوم بانشاء الاجراء ونسميه newtime ويصبح الكود كالتالي :
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 ويكون الكود كالتالي :
load_users() Heusers.DataSource = usersdt Heusers.DisplayMember = "Userfullname" Heusers.ValueMember = "Userld"
• الكود تم شرحه مسبقا لايحتاج الى شرح لاحظ الكود كما في الصورة .
برمجة زر الحضور ننقر نقرتين على زر الحضور ونكتب الكود التالي :
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 بسهوله .