عبق الرياحيين قام بنشر ديسمبر 26, 2022 قام بنشر ديسمبر 26, 2022 السلام عليكم من فضلكم عاوزة اضيف سجلات لجدول محدد عن طريق استخدام حلقة تكرارية من تاريخ بدايه الى تاريخ نهايه لكن بشرطين عدم اضاقة ايام الجمعه والسبت التى تكون ضمن تاريخ البدايه وتاريخ النهايه عدم اضافة تواريخ محدده من جدول أخر و التى تكون ضمن تاريخ البدايه وتاريخ النهايه يعنى مثلا انا عرفت احقق الشرط الاول بس مش عارفة احقق الشرط الثانى المفروض طبقا للمثال المرفق عدم اضافة ايام 06/01/2022 12/01/2022 13/01/2022 مثال.mdb
ابو جودي قام بنشر ديسمبر 26, 2022 قام بنشر ديسمبر 26, 2022 اتفضلى استبدلى الكود تبعك بهذا الكود Dim iDate As Date Dim strSQL As String Dim isHoliday As Integer For iDate = Me.txtFirstDate To Me.txtLastDate If Format(iDate, "w") = 1 Or Format(iDate, "w") = 2 Or Format(iDate, "w") = 3 Or Format(iDate, "w") = 4 Or Format(iDate, "w") = 5 Then isHoliday = DCount("*", "tblHolidays", "HolidayDate = " & Format(iDate, "\#mm\/dd\/yyyy\#")) If isHoliday <= 0 Then strSQL = "INSERT INTO tblDay" strSQL = strSQL & " ( DayDate )" strSQL = strSQL & " SELECT " strSQL = strSQL & " '" & iDate & "';" DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End If End If Next iDate شرح التعديل تم الاعلان عن متغير رقمى isHoliday تم اضافة دالة المجال dcount من جدول الاعياد tblHolidays فى حالة ان تاريخ العيد او العطلة الرسمية يساوى قيمة المتغير iDate والذى يتم اسناد تورايخ البدء والانتهاء للحلقة التكرارية اليه وفى حالة ان القيمة العددية للمتغير isHoliday =0 اى انه لا يوجد اى تاريخ لاى عطلة فى الجدول مسبقا تتساوى مع التاريخ الحالى فى حلقة التكرار وفى هذه الحالة باستخدام قاعدة IF يتم الحاق التاريخ الى الجدول tblDay طبعا ان كانت القيمة العددية للمتغير isHoliday >0 هذا معناه ان ان التاريخ الحالى فى الحلقة يتساوى مع احد التواريخ فى جدول الاعياد tblHolidays وسوف يتم تجاهل الالحاق لهذا التاريخ وتستمر الحلقة حتى تنتهى من عملها الفكرة أعجبتنى جدا وأكثر ما أعجبنى طريقة أستاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr فى كتابة استعلام الالحاق داخل محرر الأكواد تم رفع المرفق بعد التعديل للكود .. مثال-(2).mdb 3
AbuuAhmed قام بنشر ديسمبر 26, 2022 قام بنشر ديسمبر 26, 2022 مساهمة إضافية بعد مساهمة أستاذنا @ابو جودي وبعد إذنه Private Sub AddNewDates() Dim rst As Recordset Dim iDate As Long Set rst = CurrentDb.OpenRecordset("tblDay", dbopendynaset) For iDate = CLng(Me.txtFirstDate) To CLng(Me.txtLastDate) If IsNull(DLookup("DayDate", "tblDay", "Clng(DayDate)=" & iDate)) Then If Weekday(iDate, vbSunday) < vbFriday Then If IsNull(DLookup("HolidayDate", "tblHolidays", "Clng(HolidayDate)=" & iDate)) Then With rst .AddNew !DayDate = iDate .Update End With End If End If End If Next iDate Set rst = Nothing MsgBox "Done" End Sub 3
ابو جودي قام بنشر ديسمبر 27, 2022 قام بنشر ديسمبر 27, 2022 الان, AbuuAhmed said: مساهمة إضافية بعد مساهمة أستاذنا @ابو جودي وبعد إذنه يا هلا والله كود ولا أروع افضل واسرع جزاكم الله خيــــــــــــرا 1
AbuuAhmed قام بنشر ديسمبر 27, 2022 قام بنشر ديسمبر 27, 2022 هذه دالة من الزمن القديم لأبي هادي لعد أي يوم من أيام الأسبوع بين تاريخين وإجراء مني لطريقة استخدامها: Function CountWkDay(ByVal Date1 As Date, _ ByVal Date2 As Date, _ WkDay As Byte) As Long 'WeekDay Counter Date1 = Date1 - 1 Date1 = Fix((Date1 + (7 - WkDay)) / 7) Date2 = Fix((Date2 + (7 - WkDay)) / 7) CountWkDay = Date2 - Date1 End Function Sub CountWkDayTest() Dim Date1 As Date Dim Date2 As Date Date1 = DateSerial(2022, 1, 1) Date2 = DateSerial(2022, 1, 20) MsgBox CountWkDay(Date1, Date2, vbFriday) + _ CountWkDay(Date1, Date2, vbSaturday) End Sub 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.