فورم الإنصراف
في الدرس السابق قمنا ببرمجة فورم الحضور usereCome الموظف وقلنا في فورم الحضور يقوم الموظف باختيار اسمه ثم ضغط على زر حضور وسوف يحسب الوقت الذي جاء فيه بالساعه والثانيه والدقيقة وكذلك التاريخ السنه واليوم والشهر كل هذا يحسبه .
تكملة للفورم السابق usersCome اليوم سنبرمج فورم خاص بالانصراف اي خروج الموظف من مكان عملة ..
ماهو فورم الإنصراف
طيب خل ناخذ فكره عن فورم الانصراف فورم الانصراف هو تكملة لفورم الحضور عند تسجيل الموظف حضوره في فورم الحضور سوف نحتاج إلى التالي :
نحتاج الئ فورم ثاني حتى يتم تسجيل الموظف انصرافه من مكان عملة…
حساب وقت الإنصراف
نحتاج ايضا الى حساب فرق الوقت بين الحضور والانصراف اي كم الفرق عند حضور الموظف وعند إنصرافه .
نحتاج الى تحميل بيانات اسماء الموظفين المسجلين حضورهم في فورم الحضور نحملهم في فورم الانصراف حفظ وقت الانصراف والفرق في جدول hodoor_enseraf
تصميم فورم الإنصراف
نقوم باضافة فورم ونسميه UsersGo ثم نضيف Button واحد ونمسيه انصراف وايضا نضيف اداة datagridview1 ونضيف ComboBox واحد .
ليصبح الفورم كما في الصورة .
ربط فورم الإنصراف ب الفورم الرئيسي
الان نربط فورم الانصراف UsersGo بفورم mainpage
نذهب الى الفورم الرئيسي mainpage وعند قائمه الموظفين نضيف و نكتب شاشة الانصراف وننقر نقرتين عليها ونكتب الكود التالي :
usersGo.MdiParent = Me usersGo.WindowState = FormWindowState.Maximized usersGo.Show()
لاحظ ترتيب كود ربط فورم الانصراف usersgo بفورم mainpage كما في الصورة .
الاتصال بجدول الإنصراف
نذهب الى مديول واكواد تبع فورم UsersCome وعند متغيرات للداتا تيبل وداتا ادبتر و ld نكتب تحتها متغير التالي
Public hodoor_Enserafcmd As New OleDbCommand
لاحظ ترتيب كود متغير كما في الصورة .
نقوم بتحميل حقول جدول Hodoor_enseraf في فورم usersgo ننقر نقرتين على الفورم وفي حدث لود load ونكتب الكود التالي :
load_hodoor_Enseraf() DataGridView1.DataSource = hodoor_Enserafdt
تحميل اسماء الموظفين في ComboBox
نقوم بتحميل اسماء الموظفين الذين تم تسجيل حضورهم في فورم الحضور usersCome نحملهم في فورم usersGo من خلال ComboBox بحيث نختار اسماء الموظفين من ComboBox ونكتب الكود في حدث لود load الفروم وتحت كود تحميل حقول جدول نكتب الكود التالي : '=====تحميل اسماء الموظفين .
load_users() ComboBox1.DataSource = usersdt ComboBox1.DisplayMember = "Userfullname" ComboBox1.ValueMember = "userld"
الكود شرحناه عده مرات ويصبح ترتيب الكود كما في الصوره .
جلب بيانات حضور الموظفين
ننقر نقرتين على ComboBox ونكتب الكود التالي : '======تحميل بيانات حضور الموظفين
hodoor_Enserafdt.Clear() hodoor_Enserafda = New OleDbDataAdapter("select * from hodoor_enseraf where Hedate = #" & Now.Date.ToString("yyyy/MM/dd") & "# and heUsers = '" & ComboBox1.Text & "'", con) hodoor_Enserafda.Fill(hodoor_Enserafdt)
طبعا الكود اعلاه ثلاثه اسطر والسطر الثاني لا يمكن تغطيته في صوره .
تسجيل انصراف الموظف
تسجيل انصراف الموظف ننقر نقرتين على زر انصراف ونكتب الكود التالي : '===تسجيل وقت الانصراف
DataGridView1(5, DataGridView1.CurrentRow. Index).Value = Now
شرح الكود لو رجعت اخي المبرمج الى حقول جدول hodoor_enseraf سنلاحظ ترتيب حقل hego رقمة 5 بحيث اول حقل في جدول يعتبر صفر ومن ثم نحسب اي عند الضغط على زر انصراف سوف يتم تسجيل انصراف موظف وتنزل قيمته التاريخ والوقت الذي تم تسجيل الحضور به .
لاحظ ترتيب الكود كما في الصورة .
حساب الفرق بين الحضور والانصراف
كيف يتم حساب الفرق عند اختيار اسم الموظف من Combox سوف يجلب لنا بيانات موظف عند تسجيله الحضور وبالتالي عند الضغط على زر انصراف سوف يتم الفرق بين الحضور والانصراف .
لناخذ مثالا مثلا شخص صاحب شركة او سوبر ماركت كبير ولديه موظفين ويبدا دوام الموظفين بـ 8 صباحا وينتهي بـ 12 ظهرا ولنفرض حضر الموظف الى الشركة وتم تسجيل حضوره بـ 8:00 وتم تسجيل انصرافه بـ 12:15 ظهرا طيب نحن قلنا وقت انتهاء الدوام بـ 12:00 والموظف تم انصرافه بـ 12:15 وبالتالي هناك فرق 15 دقيقه تاخير ينحسب للموظف وبالتالي اما ان يكون مكافأة للموظف باعتباره تاخر 15 دقيقة او تاخير اضطراري هذا كل مافي حساب الفرق بين الحضور والانصراف .
برمجة حساب الفرق بين الحضور والانصراف
اذن ننقر نقرتين على زر الانصراف وتحت كود تسجيل وقت الانصراف نكتب الكود التالي : '====حساب الفرق بين الانصراف والحضور .
DataGridView1(6,DataGridView1.CurrentRow.Index).Value = DateDiff(DateInterval.Minute, DataGridView1(4,DataGridView1.CurrentRow.Index).Value, DataGridView1(5,DataGridView1 .CurrentRow.Index).Value) / 60
شرح الكود طبعا هذا الكود اعلاه سطر واحد فقط
راح يكون ترتيب حقل الفرق hedifference رقمة 6 في datagridview1 وقلنا اول حقل في جدول لا يحسب بيساوي حقل heCome رقمة 4 في datagridview1 وبالتالي يعطينا الانصراف في حقل hego رقمة 5 في datagridview1
لحد الان لم نحفظ بيانات وقت الانصراف والفرق بين الحضور والانصراف في جدول hodoor_enseraf ولذلك نحتاج الى كود لحفظ البيانات نقوم بانشاء جملة Update لذلك ننقر نقرتين على زر الانصراف وتحت كود حساب الفرق بين الحضور والانصراف نكتب الكود التالي الخاص بجملة Update :
hodoor_Enserafcmd = New OleDbCommand("update hodoor_enseraf set hedifference = " & DataGridView1(6,DataGridView1.CurrentRow.Index).Value & " , hego = '" & DataGridView1(5, DataGridView1.CurrentRow. Index).Value.ToString & "' , henotes = '" & DataGridView1(7, DataGridView1.CurrentRow. Index).Value & "' where held = " & DataGridView1(0, DataGridView1.CurrentRow. Index).Value & "", con) con.Open() hodoor_Enserafcmd. ExecuteNonQuery() con.Close() MsgBox(" تم تسجيل انصراف الموظف" & DataGridView1(3, DataGridView1.CurrentRow .Index).Value) load_hodoor_Enseraf()
شرح الكود : كتبنا متغير الذي قمنا بتعريفه في مديول وهو hodoor_Enserafcmd ثم بين قوسين جملة Update وحددنا اسم جدول ثم Set ثم كتبنا حقل hedifference الذي نحسب به الفرق الذي رقمه 6 في datagridview ثم حقل hego لحساب وقت تسجيل الموظف انصرافه الذي ترتيب الحقل رقم 5 ثم الملاحظات henotes التي اذا اردنا كتابه اي ملاحضات تخص وقت الانصراف او الحضور وقلنا ترتيب رقم الملاحظات رقم 7 وضعنا مسج بوكس لتاكيد انصراف الموظف واخر شي لودنا بعد كل عمليه تسجيل انصراف وحفظ البيانات
صورة للاطلاع فقط ترتيب الاكواد
تجربه الفورم نختار مثلا اسم اكرم
تجربه الفورم ظهرت لدينا بيانات موظف اكرم
تجربه الفورم ضغطنا على انصراف
لاحظ الفرق بين الحضور والانصراف
الى هنا انتهينا من برمجة فورم الانصراف usersgo بسهوله الدرس التالي سيكون برمجة وتصميم فاتورة الشراء