Foksh قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات 21 دقائق مضت, The best said: هذا ما كنت سأقوله طيب يا صديقي ، قبل خروجي من العمل ، جرب هذا التعديل حيث تم ما يلي :- 1. في الجدول Tb_School تم اضافة الحقل WSat من نوع = Yes/No ، حيث :- إذا كانت المدرسة تعطل يوم السبت ( WSat=True ) ، وبالتالي يتم تجاهل الجمعة والسبت . إذا كانت المدرسة تعمل يوم السبت ( WSat=False ) وبالتالي يتم تجاهل يوم الجمعة ولا يتم احتسابه في الأيام . 2. تعديل الدوال في المديول : Public Function WorkDaysBetween(StartDate As Date, EndDate As Date, schoolID As Long) As Long Dim i As Long Dim d As Date Dim count As Long Dim SaturdayOff As Boolean If EndDate < StartDate Then WorkDaysBetween = 0 Exit Function End If SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) For i = 0 To DateDiff("d", StartDate, EndDate) d = DateAdd("d", i, StartDate) If Weekday(d, vbSaturday) = 7 Then ElseIf SaturdayOff And Weekday(d, vbSaturday) = 1 Then Else count = count + 1 End If Next i WorkDaysBetween = count End Function Public Function NextWorkingDay(d As Date, schoolID As Long) As Date Dim SaturdayOff As Boolean SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) Do While Weekday(d, vbSaturday) = 7 Or (SaturdayOff And Weekday(d, vbSaturday) = 1) d = d + 1 Loop NextWorkingDay = d End Function 3. دالة الاحتساب في النموذج الفرعي تم تعديلها كالآتي بإضافة الشرط الخاص برقم المدرسة للتمييز بين طريقتي الإحتساب :- Private Sub UpdateModa() Dim daysCount As Long Dim schoolID As Long If Not IsNull(Me.Parent!Gha_Aml) Then schoolID = Nz(Me.Parent!Gha_Aml, 0) Else schoolID = 0 End If If Not IsNull(tr_bda_tdbreeb) And Not IsNull(tr_nhay_tdree) Then daysCount = WorkDaysBetween(tr_bda_tdbreeb, tr_nhay_tdree, schoolID) tr_moshrt_aml = NextWorkingDay(tr_nhay_tdree + 1, schoolID) moda = daysCount Else moda = Null tr_moshrt_aml = Null End If End Sub جربه وأخبرني .. Personnel_affairs.zip
The best قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه 1 ساعه مضت, Foksh said: طيب يا صديقي ، قبل خروجي من العمل ، جرب هذا التعديل حيث تم ما يلي :- 1. في الجدول Tb_School تم اضافة الحقل WSat من نوع = Yes/No ، حيث :- إذا كانت المدرسة تعطل يوم السبت ( WSat=True ) ، وبالتالي يتم تجاهل الجمعة والسبت . إذا كانت المدرسة تعمل يوم السبت ( WSat=False ) وبالتالي يتم تجاهل يوم الجمعة ولا يتم احتسابه في الأيام . 2. تعديل الدوال في المديول : Public Function WorkDaysBetween(StartDate As Date, EndDate As Date, schoolID As Long) As Long Dim i As Long Dim d As Date Dim count As Long Dim SaturdayOff As Boolean If EndDate < StartDate Then WorkDaysBetween = 0 Exit Function End If SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) For i = 0 To DateDiff("d", StartDate, EndDate) d = DateAdd("d", i, StartDate) If Weekday(d, vbSaturday) = 7 Then ElseIf SaturdayOff And Weekday(d, vbSaturday) = 1 Then Else count = count + 1 End If Next i WorkDaysBetween = count End Function Public Function NextWorkingDay(d As Date, schoolID As Long) As Date Dim SaturdayOff As Boolean SaturdayOff = Nz(DLookup("WSat", "Tb_School", "School_ID = " & schoolID), True) Do While Weekday(d, vbSaturday) = 7 Or (SaturdayOff And Weekday(d, vbSaturday) = 1) d = d + 1 Loop NextWorkingDay = d End Function 3. دالة الاحتساب في النموذج الفرعي تم تعديلها كالآتي بإضافة الشرط الخاص برقم المدرسة للتمييز بين طريقتي الإحتساب :- Private Sub UpdateModa() Dim daysCount As Long Dim schoolID As Long If Not IsNull(Me.Parent!Gha_Aml) Then schoolID = Nz(Me.Parent!Gha_Aml, 0) Else schoolID = 0 End If If Not IsNull(tr_bda_tdbreeb) And Not IsNull(tr_nhay_tdree) Then daysCount = WorkDaysBetween(tr_bda_tdbreeb, tr_nhay_tdree, schoolID) tr_moshrt_aml = NextWorkingDay(tr_nhay_tdree + 1, schoolID) moda = daysCount Else moda = Null tr_moshrt_aml = Null End If End Sub جربه وأخبرني .. Personnel_affairs.zip 141.93 kB · 3 downloads حضرتك مسمى الحقل دوام السبت وده معناه اللى عليه صح يعمل يوم السبت والعكس صحيح وده خلانى اتلخبط لما جربت لأنه بالنسبة لى كانت النتيجة بتطلع العكس انظر الصورة التالية الصورة الأولى لموظف مدرسته تعمل السبت ( الزوايدة الابتدائية المشتركة ) بما إن دوام السبت = صواب وده معناه أنه لو تاريخ نهاية التدريب الخميس يبقى تاريخ مباشرة العمل يبقى السبت , لكن النتيجة طالعة تاريخ المباشرة الاحد الصورة الثانية العكس فايه رأيك أغير مسمى الحقل لـ ( إجازة السبت )
Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه 14 دقائق مضت, The best said: فايه رأيك أغير مسمى الحقل لـ ( إجازة السبت ) دي مش محتاجة سؤال ؛ غيرها بما يتناسب مع مشروعك يا صديقي ، ما دام الأمر يسري بالشكل الصحيح !!
The best قام بنشر منذ 56 دقائق الكاتب قام بنشر منذ 56 دقائق 7 دقائق مضت, Foksh said: دي مش محتاجة سؤال ؛ غيرها بما يتناسب مع مشروعك يا صديقي ، ما دام الأمر يسري بالشكل الصحيح !! تمام أنا قلت يمكن تغير فى الدالة طيب لو حبيت أغير فى الدالة مش فى المسمى أعملها ازاى لأنه اللى بيعمل السبت عدد قليل وشكرا جزيلا على جهدكم وسرعة ردكم زادكم الله من علمه وبارك لكم فى رزقكم وعافيتكم وذريتكم
Foksh قام بنشر منذ 50 دقائق قام بنشر منذ 50 دقائق 4 دقائق مضت, The best said: لو حبيت أغير فى الدالة مش فى المسمى أعملها ازاى الدالة تعمل بشكل سليم . وقد تمت تجربتها مراراً على أكثر من مدرسة باخلاف الدوام ( يوم السبت ) وبتواريخ مختلفة . لذا قد أكود عكست التسمية ليس إلا . اجعل التسمية لا تعمل يوم السبت ، وتنتهي مشكلتك 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.