ابو جودي قام بنشر فبراير 15, 2017 قام بنشر فبراير 15, 2017 السلام عليكم ورحمة الله تعالى وبركاته استاذتى الكرام فضلا وكرما ممكن مساعدة المرفق الاتى يحتوى على جدول يوضح الايام التى لم يحضر فيها الموظفين الى العمل ومنها المتتالى والغير متتالى المطلوب هل يمكن اظهار عدد الايام المتتاليه فقط ان كانت اكبر من 8 ايام طبعا قد يكون لموظف ما مثل الموظف صاحب الكود رقم 3 عدد 11 يوم اجمالا ولكنهم غير متصلين فكيف يتم حصر عدد الايام المتتاليه فى التاريخ فقط qs.rar
رمهان قام بنشر فبراير 15, 2017 قام بنشر فبراير 15, 2017 حياك الله اخ محمد ماذا لو كان هناك اكثر من غياب متتالي ؟ اي هناك غياب متتالي 3 ايام ثم غياب متفرق 2 يوم ثم غياب متتالي 4 ايام ثم غياب متفرق 3 ايام ثم غياب متتالي 10 ايام ؟ فاي الغياب المتتالي تريد ؟ ام تظهر الكل ؟ وضح اكثر وبدقه تحياتي
ابو جودي قام بنشر فبراير 16, 2017 الكاتب قام بنشر فبراير 16, 2017 منذ ساعه, رمهان said: حياك الله اخ محمد ماذا لو كان هناك اكثر من غياب متتالي ؟ اي هناك غياب متتالي 3 ايام ثم غياب متفرق 2 يوم ثم غياب متتالي 4 ايام ثم غياب متفرق 3 ايام ثم غياب متتالي 10 ايام ؟ فاي الغياب المتتالي تريد ؟ ام تظهر الكل ؟ وضح اكثر وبدقه تحياتي استاذى الحبيب ومعلمى القدير اريد اظهار الغياب المتتالى فقط والذى يساوى 8 فى تقرير وما يساوى 10 ايام فى تقرير اخر
رمهان قام بنشر فبراير 16, 2017 قام بنشر فبراير 16, 2017 الصق هذا الاستعلام على افتراض اسم الجدول x بدلا من xxxxxxx SELECT x.Emp_Code, Sum(DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code])) AS Expr1 FROM x WHERE (((DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code]))=1)) GROUP BY x.Emp_Code HAVING (((Sum(DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code])))=8)); وتلاحظ المعيار 8 تسنطيع تغيير المعيار حسب الايام وحسب الموظف جرب ولي معك عوده تحياتي
ابو جودي قام بنشر فبراير 16, 2017 الكاتب قام بنشر فبراير 16, 2017 15 ساعات مضت, رمهان said: الصق هذا الاستعلام على افتراض اسم الجدول x بدلا من xxxxxxx SELECT x.Emp_Code, Sum(DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code])) AS Expr1 FROM x WHERE (((DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code]))=1)) GROUP BY x.Emp_Code HAVING (((Sum(DLookUp("1","x","format(day_date,'ddmmyy')=" & Format([day_date]-1,'ddmmyy') & " and emp_code=" & [emp_code])))=8)); وتلاحظ المعيار 8 تسنطيع تغيير المعيار حسب الايام وحسب الموظف جرب ولي معك عوده تحياتي استاذى الجليل ومعلمى القدير انا نفذت كلام حضرتك بالتمام زى ما قلت وتلاحظ الاتى كما فى المرفق اولا وضعت هذا المعيار >=3 بدلا من الرقم 8 وهذا على سبيل التجربة تلاحظ الاتى الموظف رقم 1 فى الستعلام اصبح عدد ايام غيابه المتتاليه هى 6 النتيجه غير صحيحه ومن الجدول بالمراجعه تبين ان عدد الايام هى 7 الموظف رقم 3 فى الستعلام اصبح عدد ايام غيابه المتتاليه هى 7 النتيجه صحيحه ومن الجدول بالمراجعه تبين ان عدد الايام هى 7 ------------------------------------------------------------------------------------------------------ وقمت بالتجربة مرة أخرى بحذف المعيار نهائيا تبين الاتى الموظف رقم 1 فى الستعلام اصبح عدد ايام غيابه المتتاليه هى 6 النتيجه غير صحيحه المفروض 7 طبقا للجدول الموظف رقم 2 فى الستعلام اصبح عدد ايام غيابه المتتاليه هى 1 النتيجه غير صحيحه المفروض 2 طبقا للجدول الموظف رقم 3 فى الستعلام اصبح عدد ايام غيابه المتتاليه هى 7 النتيجه صحيحه 7 طبقا للجدول qs_2.rar
ابو جودي قام بنشر فبراير 16, 2017 الكاتب قام بنشر فبراير 16, 2017 25 دقائق مضت, jjafferr said: هل شفت الرابط اللي ارفقته لك؟ نعم يا استاذى الحبيب ومعلمى القدير ولكن واجهنى به المشكلى الاتية يقوم بجمع كل الايام المتتاليه من اول الشهر الى اخر الشهر وانا فقت كل ما اريده الايام المتتاليه التى يكون عددها 8 ايام فقط وان كان هناك 8 فى اول السهر و 8 فى اخر الشهر يظهر الـ 8 اللى فى اخر الشهر فقط وهناك مشكلة اخرى المرفق فى الموضوع الذى تفضلتم به يعتمد على كلمتى غياب وحضور وفى البرنامج عندى لا استخدم هذه الكلمات ولذلك اعجبتنى طربقة الاستاذ رمهان لانها عامة ومطلقة فقط سأحاول جاهدا العمل على فهم الية الاستعلامات والاكواد بداخلها لحل المشاكل سالفة الذكر
jjafferr قام بنشر فبراير 16, 2017 قام بنشر فبراير 16, 2017 البرنامج يرى التواريخ بين التاريخين ، ثم يحسب الايام المتتالية (3 ايام في الرابط) ، ولا يهمه مكان الايام المتتاليه !! واذا وجد ايام متتالية حسب الطلب ، لا يحسب الايام المتتاليه الاخرى. رجاء المحاولة مرة اخرى جعفر
ابو جودي قام بنشر فبراير 16, 2017 الكاتب قام بنشر فبراير 16, 2017 (معدل) 3 دقائق مضت, jjafferr said: البرنامج يرى التواريخ بين التاريخين ، ثم يحسب الايام المتتالية (3 ايام في الرابط) ، ولا يهمه مكان الايام المتتاليه !! واذا وجد ايام متتالية حسب الطلب ، لا يحسب الايام المتتاليه الاخرى. رجاء المحاولة مرة اخرى جعفر حاضر سوف احاول النظر بتمعن مرة اخرى استاذى الحبيب ولكن ممكن طلب هل يمكن ان تكون الحسابات مطلقة دون النظر الى الى كلمة غياب اريد ان يكون المعيار بالنسبة لى فى حالة عدم وجود ساعة للتوقيع فى حقل الحضور ان يتم الحساب حاولت عمل ذلك ولكن لم اوفق فى المحاولة الاولى ولكن سأحاول التجربة مرة اخرى تم تعديل فبراير 16, 2017 بواسطه ابا جودى
ابو جودي قام بنشر فبراير 16, 2017 الكاتب قام بنشر فبراير 16, 2017 منذ ساعه, jjafferr said: البرنامج يرى التواريخ بين التاريخين ، ثم يحسب الايام المتتالية (3 ايام في الرابط) ، ولا يهمه مكان الايام المتتاليه !! واذا وجد ايام متتالية حسب الطلب ، لا يحسب الايام المتتاليه الاخرى. رجاء المحاولة مرة اخرى جعفر السلام عليكم ورحمة الله تعالى وبركاته استاذى الجليل اعتذر للاثقال على كاهلكم ولكن تلك هى النتيجة التى توصلت اليها بناء على الموضوع الذى تفضلتم به على وبعد نقل الموديولات الخاصة وانشاء الاستعلامات المساعدة وبعض التعديلات الطفيفة كانت تلك هى النتيجة بالنسبه لكود الموظف 80914 عدد الايام المتتاليه هى 9 من واقع الاستعلام ولكن بمراجعة الجدول عدد الايام المتتاليه هى 8 ----------------------------------------------------------------------------------------------------------------- المشكله الكبرى والنتيجه الغريبه جدا مع الموظف كود 28241 الايام المتتاليه هى فقط 3 بينما تظهر فى الاستعلام 6 ----------------------------------------------------------------------------------------------------------------- وتلك الصور ايضا توضح نفس الاختلافات كما هو الحال مع الموظف كود 80914 الاختلافات وهذا على سبيل المثال وليس الحصر حصر الغياب.rar
jjafferr قام بنشر فبراير 16, 2017 قام بنشر فبراير 16, 2017 كان في خطأ في الكود ، والحمدلله استطعت معرفته وتغييره حاليا الكود يعطيك فقط اذا في ايام متتالية اكثر من 8 ايام مثلا (انت تحدد هذا اليوم ، وحتى ممكن نضعه في النموذج الذي به التواريخ من-الى). الكود اصبح: Option Compare Database Function Check_Abs(EN) On Error GoTo err_Check_Abs If EN = 0 Then aaaa = 1 End If 'EN = Employee Name WAS 'EN = Employee Code NOW Dim rst As DAO.Recordset fD = [Forms]![frm_get_attendance_data]![Date_From] eD = [Forms]![frm_get_attendance_data]![Date_To] 'myCriteria = "[Emp_Name]='" & EN & "'" myCriteria = "[Emp_Code]=" & EN myCriteria = myCriteria & " And [Leave_Type]='غياب'" myCriteria = myCriteria & " And [day_date] Between " & DateFormat(fD) & " And " & DateFormat(eD) 'Set rst = CurrentDb.OpenRecordset("Select * From tbl_Attendance_in Where [Emp_Name]='" & EN & "' And [Leave_Type]='غياب' And [day_date] Between '" & DateFormat(fD) & "' And '" & DateFormat(eD) & "'") Set rst = CurrentDb.OpenRecordset("Select * From tbl_Attendance_in Where " & myCriteria & " Order by [day_date]") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Seq = 1 Prev_Date = rst![day_date] For i = 1 To RC If rst![day_date] = DateAdd("d", 1, Prev_Date) Then Seq = Seq + 1 'do we have a Next Day 'Next Day iNext_Day = DateAdd("d", 1, rst![day_date]) 'Move to Next Records 'and compare days rst.MoveNext If rst![day_date] <> iNext_Day And Seq >= 8 Then Check_Abs = Correct_Names(Seq) Exit For End If rst.MovePrevious Else Seq = 1 End If Prev_Date = rst![day_date] Next_ii: rst.MoveNext Next i ' If Seq >= 8 Then ' Check_Abs = Seq & " ايام متتالية" ' Else ' Check_Abs = RC & " ايام غير متتالية" ' End If Exit_Check_Abs: rst.Close: Set rst = Nothing Exit Function err_Check_Abs: If Err.Number = 3021 Then If Seq >= 8 Then Check_Abs = Correct_Names(Seq) Else Check_Abs = "" End If Resume Exit_Check_Abs Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function Function Correct_Names(N) Select Case N Case 2 Correct_Names = " يومان متتاليان" Case 3 To 10 Correct_Names = N & " ايام متتالية" Case Else Correct_Names = N & " يوم متتالي" End Select End Function جعفر 588.حصر الغياب.mdb.zip 1
رمهان قام بنشر فبراير 16, 2017 قام بنشر فبراير 16, 2017 عزيزي ابو جودي الان الجديد في الطلب هو انه عند تساوي معيار ياتي بالاخير وهنا تحتاج شوية تفكير فخليني اخلص شغلات لدي ونركز حبتين بتاخذ حل رمهاني والاستاذ القدير جعفر اتى بالحل بالكود وانا افكر بلاستعلام تحياتي للجميع 1
رمهان قام بنشر فبراير 17, 2017 قام بنشر فبراير 17, 2017 معليش استعنت بالكود لسرعة الفكره عبارة عن اضافة عمود جديد بالجدول يمثل فئه فكل متتالي له فئة حسب الموظف . لانه يمكن ان يكون هناك اكثر من تتالي فيمثل فئه خاصه هذا الكود والاستعام query2 بالمرفق وتستطيع تعمل معيارك زي ماتحب Set rs = CurrentDb.OpenRecordset("select * from x order by emp_code,day_date"): rs.MoveFirst xd = rs!day_date xn = 1 rs.Edit rs!ord = xn rs.Update For i = 2 To rs.RecordCount rs.MoveNext If rs!day_date - xd <> 1 Then xn = xn + 1 rs.Edit rs!ord = xn rs.Update xd = rs!day_date Next بالتوفيق qs.rar
ابو جودي قام بنشر فبراير 18, 2017 الكاتب قام بنشر فبراير 18, 2017 (معدل) في 2/16/2017 at 21:53, jjafferr said: كان في خطأ في الكود ، والحمدلله استطعت معرفته وتغييره حاليا الكود يعطيك فقط اذا في ايام متتالية اكثر من 8 ايام مثلا (انت تحدد هذا اليوم ، وحتى ممكن نضعه في النموذج الذي به التواريخ من-الى). الكود اصبح: Option Compare Database Function Check_Abs(EN) On Error GoTo err_Check_Abs If EN = 0 Then aaaa = 1 End If 'EN = Employee Name WAS 'EN = Employee Code NOW Dim rst As DAO.Recordset fD = [Forms]![frm_get_attendance_data]![Date_From] eD = [Forms]![frm_get_attendance_data]![Date_To] 'myCriteria = "[Emp_Name]='" & EN & "'" myCriteria = "[Emp_Code]=" & EN myCriteria = myCriteria & " And [Leave_Type]='غياب'" myCriteria = myCriteria & " And [day_date] Between " & DateFormat(fD) & " And " & DateFormat(eD) 'Set rst = CurrentDb.OpenRecordset("Select * From tbl_Attendance_in Where [Emp_Name]='" & EN & "' And [Leave_Type]='غياب' And [day_date] Between '" & DateFormat(fD) & "' And '" & DateFormat(eD) & "'") Set rst = CurrentDb.OpenRecordset("Select * From tbl_Attendance_in Where " & myCriteria & " Order by [day_date]") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Seq = 1 Prev_Date = rst![day_date] For i = 1 To RC If rst![day_date] = DateAdd("d", 1, Prev_Date) Then Seq = Seq + 1 'do we have a Next Day 'Next Day iNext_Day = DateAdd("d", 1, rst![day_date]) 'Move to Next Records 'and compare days rst.MoveNext If rst![day_date] <> iNext_Day And Seq >= 8 Then Check_Abs = Correct_Names(Seq) Exit For End If rst.MovePrevious Else Seq = 1 End If Prev_Date = rst![day_date] Next_ii: rst.MoveNext Next i ' If Seq >= 8 Then ' Check_Abs = Seq & " ايام متتالية" ' Else ' Check_Abs = RC & " ايام غير متتالية" ' End If Exit_Check_Abs: rst.Close: Set rst = Nothing Exit Function err_Check_Abs: If Err.Number = 3021 Then If Seq >= 8 Then Check_Abs = Correct_Names(Seq) Else Check_Abs = "" End If Resume Exit_Check_Abs Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function Function Correct_Names(N) Select Case N Case 2 Correct_Names = " يومان متتاليان" Case 3 To 10 Correct_Names = N & " ايام متتالية" Case Else Correct_Names = N & " يوم متتالي" End Select End Function جعفر 588.حصر الغياب.mdb.zip السلام عليكم ورحمة الله تعالى وبركاته جزاكم الله تعالى خيرا بفضل الله تعالى الحسابات تمام حتى الان من الوهلة الاولى والتجربة المبدئية ولكن ان شاء الله اخبركم بالنتيجه استاذى الجليل بعد تجربتها جيدا ومرارا وتكرارا للتأكد من النتيجة 18 ساعات مضت, رمهان said: معليش استعنت بالكود لسرعة الفكره عبارة عن اضافة عمود جديد بالجدول يمثل فئه فكل متتالي له فئة حسب الموظف . لانه يمكن ان يكون هناك اكثر من تتالي فيمثل فئه خاصه هذا الكود والاستعام query2 بالمرفق وتستطيع تعمل معيارك زي ماتحب Set rs = CurrentDb.OpenRecordset("select * from x order by emp_code,day_date"): rs.MoveFirst xd = rs!day_date xn = 1 rs.Edit rs!ord = xn rs.Update For i = 2 To rs.RecordCount rs.MoveNext If rs!day_date - xd <> 1 Then xn = xn + 1 rs.Edit rs!ord = xn rs.Update xd = rs!day_date Next بالتوفيق qs.rar استاذى الجليل اعتذر لاثقالى على كاهلك استحى بطلبى اولا : فأرجو من استاذى الحبيب ومعلمى الجليل الاستاذ جعفر ان يلتمس العذر لى بعد ان تم التوصل الى النتيجه المرجوة وحتما تم بذل الجهد والوقت الثمين فوالله ليس تقليلا او عدم رضا بفضل الله تعالى صم مجهودة وكرمه يملئنى كل الرضا بما قدمه استاذى الجليل ولكن انا اطمع فى التماس العفو من استاذ جعفر بأعادة النظر مرة اخرى والرجوع لفكرة الاستاذ الجليل رمهان فكما يقال زيادة الخير اطمع فى فهم اكثر من فكرة والوصول الى نفس النتيجه بعدة طرق ثانيا استاذى الحبيب رمهان استاذى الجليل ومعلمى القدير اعتذر لاثقالى على حضرتكم مرة اخرى اعجبتنى تلك الفكرة الرمهانية جدا جدا جدا وسحر ما فيها من عرض كل الايام المتتاليه لنفس الموظف بعد كل مجموعه على حده وللاسف عندما حاولت التطبيق على الجدول الذى به البيانات الحقيقية والمراد معالجتها فوجئت بنتائج مخالفة ومغايرة تماما ولا ادرى السبب اطلب منكم على استحياء توضيح سبب تلك النتيجه الغريبه اسأل الله تعالى ان ينير قلوبكم بتقواه ودروبكم بهداه واخيرا وليس اخرا اسال الله تعالى العلى العظيم رب العرش العظيم ان يغفر لكل اساتذتنا الكرام وكل من تعلمنا على ايديهم ومنهم وكل من اثقلنا على كاهلهم وتحملوا جهلنا بحلمهم واخطائنا بعلمهم وان يعفر لوالديهم وان يبارك لهم فى ذريتهم وان يرزقهم شربة من يد نبينا وحبيبنا محمد صلى الله عليه وسلم والنظر الى وجهه الكريم امين امين امين qs (1).rar تم تعديل فبراير 18, 2017 بواسطه ابا جودى
رمهان قام بنشر فبراير 18, 2017 قام بنشر فبراير 18, 2017 ممكن توضح السجل الغريب او السجلات واين الغريب وما هو انا جربت المرفق وتمام تحياتي
jjafferr قام بنشر فبراير 18, 2017 قام بنشر فبراير 18, 2017 2 ساعات مضت, ابا جودى said: استحى بطلبى اولا : فأرجو من استاذى الحبيب ومعلمى الجليل الاستاذ جعفر ان يلتمس العذر لى بعد ان تم التوصل الى النتيجه المرجوة وحتما تم بذل الجهد والوقت الثمين فوالله ليس تقليلا او عدم رضا بفضل الله تعالى صم مجهودة وكرمه يملئنى كل الرضا بما قدمه استاذى الجليل ولكن انا اطمع فى التماس العفو من استاذ جعفر بأعادة النظر مرة اخرى والرجوع لفكرة الاستاذ الجليل رمهان فكما يقال زيادة الخير اطمع فى فهم اكثر من فكرة والوصول الى نفس النتيجه بعدة طرق بالعكس ، انا دائما اقول: اقتباس في اعتقادي ، مشاركة أكثر من شخص في الرد على السؤال ، هو فائدة للجميع ، فمنه نتعلم الطرق الاخرى للإجابة على السؤال ، ونتعلم خبايا البرمجة جعفر 3
ابو جودي قام بنشر فبراير 18, 2017 الكاتب قام بنشر فبراير 18, 2017 (معدل) منذ ساعه, رمهان said: ممكن توضح السجل الغريب او السجلات واين الغريب وما هو انا جربت المرفق وتمام تحياتي انا اسف جدا جدا جدا انا المشكله فى انا انا سرحت ونسيت اعدل على الاستعلام خلف زر الامر بما يناسبنى لذلك تم احتساب كل الايام غياب اعتذر جدا جدا جدا صار كل شئ تمام بفضل الله عزوجل جزاكم الله خيرا وهذا المرفق كما ينيغى ان يكون شكر الله لكم انت واستاذ جعفر qs_3.rar تم تعديل فبراير 18, 2017 بواسطه ابا جودى
رمهان قام بنشر فبراير 19, 2017 قام بنشر فبراير 19, 2017 السؤال الان اخ ابو جودي كيف سيكون معيارك لاستخراج الغياب المتتالي الاخير عند التساوي مع عدد اول او وسط الشهر ؟
ابو جودي قام بنشر فبراير 19, 2017 الكاتب قام بنشر فبراير 19, 2017 17 ساعات مضت, رمهان said: السؤال الان اخ ابو جودي كيف سيكون معيارك لاستخراج الغياب المتتالي الاخير عند التساوي مع عدد اول او وسط الشهر ؟ استاذى العزيز ومعلمى الجليل كل الشكر والتقدير لاهتمام حضرتك جزاكم الله خيرا اليه العمل فى الجزء ده من الناحية الادارية وحسب فهمى من مسئول الشئون الادارية ان الموظف اذا غاب 8 ااييام متصلين دون تقديم اجازة يجب ارسال خطاب بانذاره بالانقطاع عن العمل مما يؤدى الى رفد الموظف اذا وصل الحد الى 10 ايام ولذلك طلب منى عمل تنبيه وفتح تقرير لمن يتخطى هذه النسبه ولذلك من يصل الى العدد 8 متصلين فى حالة عودته الى العمل وتسويه الاجزات وتسوية موقفه القانونى سأقوم بعمل استعلام تحديث لتلك الفترة بين تاريخ البدء والانتهاء بمسح قيم ord لهذا الموظف وبذلك لن يتكرر مطلقا هذا العدد 8 ايام متصلين وبهذه الطريقة اعتقد سوف لا يكون هناك داعى لتحديد ايام لانها لن تتكرر والله اعلم بالتجربة ان وقفت فى شئ سوف اوافى حضراتكم جزاكم الله خيرا استاذ رمهان جزاكم الله خيرا استاذ جعفر 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.