اذهب الي المحتوي
أوفيسنا

الحاق ايام محددة بين تاريخين بالجدول المرتبط


kaser906

الردود الموصى بها

السلام عليكم ورحمة الله

المطلوب بالمرفق

الحاق أيام محددة بين تاريخين بالجدول المرتبط Tbl_2

شرح المطلوب موجود على النموذج بالتفصيل

tdate.rar

رابط هذا التعليق
شارك

تفضل :smile:

471.Clipboard01.jpg

.

والكود الذي يقوم بهذا العمل:


Private Sub cmd1_Click()

    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2")
    
    How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate)
    
    For i = 1 To How_Many_Days
        
        Next_Date = UmDateAdd("d", i, Me.StarteDate)
        Next_Day = UmWeekDayName(UmWeekday(Next_Date))
        'MsgBox Next_Date & " " & Next_Day
        
        add_Day = ""
        If Me.iSunday = -1 And Next_Day = "Sunday" Then
             add_Day = "Sunday"
             
        ElseIf Me.iMonday = -1 And Next_Day = "Monday" Then
            add_Day = "Monday"
            
        ElseIf Me.iTuesday = -1 And Next_Day = "Tuesday" Then
            add_Day = "Tuesday"
            
        ElseIf Me.iWednesday = -1 And Next_Day = "Wednesday" Then
            add_Day = "Wednesday"
            
        ElseIf Me.iThursday = -1 And Next_Day = "Thursday" Then
            
            add_Day = "Thursday"
        End If
        
        If add_Day <> "" Then
            rst.AddNew
            rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id
            rst.Update
        End If
        
    Next i
    
    rst.Close: Set rst = Nothing
End Sub

 

جعفر

471.tdate.mdb.zip

رابط هذا التعليق
شارك

صباح الخير استاذي الكريم جعفر

الله يعطيك العافية

جربت المرفق

عند النقر على زر الحفظ لاتحدث أي استجابة كأن الكود مش موجود

ولا يتم الحاق اي سجل بالجدول Tbl_2

أمر اخر لاحظت بالجدول أسماء الايام باللغة الانجليزية لو تقدر تخليها باللغة العربية

 

رابط هذا التعليق
شارك

وعليكم السلام:smile:

3 ساعات مضت, kaser906 said:

عند النقر على زر الحفظ لاتحدث أي استجابة كأن الكود مش موجود

هذا لأنك لم تختار اي يوم للتدريب:blink:

 

على العموم ، عملت تغييرات في البرنامج ، حتى يحذرك اذا لم تختار الايام او تدخل التواريخ ، واذا تم ادخال التاريخ مسبقا للـ PcDigit فانه يحذرك كذلك:smile:

وعملت لم الملاحظات في البرنامج ، اذا اردت تغيير اي شئ فيه:smile:

 


Private Sub cmd1_Click()

        'التاكد ان الحقول المطلوبة تم اختيارها في النموذج
        If Len(Me.StarteDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ البداية"
            Me.StarteDate.SetFocus
            Exit Sub
        ElseIf Len(Me.EndDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ النهاية"
            Me.EndDate.SetFocus
            Exit Sub
        ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _
               (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _
               (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _
               (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _
               (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then
            MsgBox "رجاء الاختيار من ايام التدريب"
            Exit Sub
        End If
        
        
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2")
    
     'عدد الايام بين يومي البداية والنهاية
    How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate)
    
    For i = 1 To How_Many_Days
        
        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        'MsgBox Next_Date & " " & Next_Day
        
        add_Day = ""
        'اذا تم اختيار اليم في النموذج ، ما هو اليوم
        If Me.iSunday = -1 And Next_Day = "Sunday" Then
             add_Day = "الاحد"
             
        ElseIf Me.iMonday = -1 And Next_Day = "Monday" Then
            add_Day = "الاثنين"
            
        ElseIf Me.iTuesday = -1 And Next_Day = "Tuesday" Then
            add_Day = "الثلاثاء"
            
        ElseIf Me.iWednesday = -1 And Next_Day = "Wednesday" Then
            add_Day = "الاربعاء"
            
        ElseIf Me.iThursday = -1 And Next_Day = "Thursday" Then
            add_Day = "الخميس"
            
        End If
        
        'لدينا تاريخ يجب ادخاله
        If add_Day <> "" Then
            'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit
            rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'"
            
            If rst.NoMatch Then
                'غير موجود
                rst.AddNew
                rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id
                rst.Update
            Else
                'موجود
                MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _
                       "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _
                       "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _
                       "هذا التاريخ لم يتم ادخاله مرة اخرى"
            End If
            
        End If
        
    Next i
    
    rst.Close: Set rst = Nothing
End Sub

.

جعفر

471.tdate.mdb.zip

رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

وعليكم السلام:smile:

هذا لأنك لم تختار اي يوم للتدريب:blink:

 

على العموم ، عملت تغييرات في البرنامج ، حتى يحذرك اذا لم تختار الايام او تدخل التواريخ ، واذا تم ادخال التاريخ مسبقا للـ PcDigit فانه يحذرك كذلك:smile:

وعملت لم الملاحظات في البرنامج ، اذا اردت تغيير اي شئ فيه:smile:

 



Private Sub cmd1_Click()

        'التاكد ان الحقول المطلوبة تم اختيارها في النموذج
        If Len(Me.StarteDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ البداية"
            Me.StarteDate.SetFocus
            Exit Sub
        ElseIf Len(Me.EndDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ النهاية"
            Me.EndDate.SetFocus
            Exit Sub
        ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _
               (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _
               (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _
               (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _
               (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then
            MsgBox "رجاء الاختيار من ايام التدريب"
            Exit Sub
        End If
        
        
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2")
    
     'عدد الايام بين يومي البداية والنهاية
    How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate)
    
    For i = 1 To How_Many_Days
        
        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        'MsgBox Next_Date & " " & Next_Day
        
        add_Day = ""
        'اذا تم اختيار اليم في النموذج ، ما هو اليوم
        If Me.iSunday = -1 And Next_Day = "Sunday" Then
             add_Day = "الاحد"
             
        ElseIf Me.iMonday = -1 And Next_Day = "Monday" Then
            add_Day = "الاثنين"
            
        ElseIf Me.iTuesday = -1 And Next_Day = "Tuesday" Then
            add_Day = "الثلاثاء"
            
        ElseIf Me.iWednesday = -1 And Next_Day = "Wednesday" Then
            add_Day = "الاربعاء"
            
        ElseIf Me.iThursday = -1 And Next_Day = "Thursday" Then
            add_Day = "الخميس"
            
        End If
        
        'لدينا تاريخ يجب ادخاله
        If add_Day <> "" Then
            'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit
            rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'"
            
            If rst.NoMatch Then
                'غير موجود
                rst.AddNew
                rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id
                rst.Update
            Else
                'موجود
                MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _
                       "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _
                       "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _
                       "هذا التاريخ لم يتم ادخاله مرة اخرى"
            End If
            
        End If
        
    Next i
    
    rst.Close: Set rst = Nothing
End Sub

.

جعفر

471.tdate.mdb.zip

 

شاكر ومقدر لك اخي الكريم

لكن نفس الشي عندما انقر على زر الامر

لا توجد استجابة

علماً اني اختار التاريخ والايام المحددة وعندما اذهب الى الجدول القاه فارغ

هل يجب تفعيل مكتبات ؟

رابط هذا التعليق
شارك

الظاهر ان الكود عندك غير مفعّل !!

هل تستخدم الاوفيس 2007 او 2010 لأول مرة على جهازك؟

هل لما تشغل البرنامج ، يظهر لك شريط اصفر تحت شريط الادوات في الاكسس:

071612_1005_ForcingYour11.png

هذا معناه ان الاكسس في حالة حماية لكمبيوترك من هذا البرنامج ، وانه لا يجعل الكود يعمل ،

لذلك ، اضغط على الزر في الشريط الاصفر ، وسيعمل البرنامج ان شاء الله:smile:

 

اما اذا لم تكن هذه المشكلة ، فعد ، وسنحاول اشياء اخرى:smile:

27 دقائق مضت, kaser906 said:

هل يجب تفعيل مكتبات ؟

لا

 

جعفر

رابط هذا التعليق
شارك

2 دقائق مضت, jjafferr said:

الظاهر ان الكود عندك غير مفعّل !!

هل تستخدم الاوفيس 2007 او 2010 لأول مرة على جهازك؟

هل لما تشغل البرنامج ، يظهر لك شريط اصفر تحت شريط الادوات في الاكسس:

071612_1005_ForcingYour11.png

هذا معناه ان الاكسس في حالة حماية لكمبيوترك من هذا البرنامج ، وانه لا يجعل الكود يعمل ،

لذلك ، اضغط على الزر في الشريط الاصفر ، وسيعمل البرنامج ان شاء الله:smile:

 

اما اذا لم تكن هذه المشكلة ، فعد ، وسنحاول اشياء اخرى:smile:

لا

 

جعفر

نعم اخي جعفر

لقد قمت بتفعيل المايكرو من خيارات مركز التوثيق

انا استخدم اوفيس 2007 وجربت على 2016 وجربت افتح الملف من جهاز أخر بالأوفيس 2010

والنتيجة واحدة لا توجد استجابة

رابط هذا التعليق
شارك

الآن تذكرت :smile:

 

اخي قيصر ، الظاهر انك فقط اخذت الكود ووضعته في برنامجك !!

فالزر في برنامجك السابق لم يكن يذهب للكود ، وانما كنت انت عملت عليه ماكرو ،

فرجاء استعمل برنامجي كما هو ، واذا اشتغل ، سنتحدث عن كيفية اضافة الكود لبرنامجك:smile:

 

جعفر

رابط هذا التعليق
شارك

6 دقائق مضت, jjafferr said:

الآن تذكرت :smile:

 

اخي قيصر ، الظاهر انك فقط اخذت الكود ووضعته في برنامجك !!

فالزر في برنامجك السابق لم يكن يذهب للكود ، وانما كنت انت عملت عليه ماكرو ،

فرجاء استعمل برنامجي كما هو ، واذا اشتغل ، سنتحدث عن كيفية اضافة الكود لبرنامجك:smile:

 

جعفر

اخي جعفر

الاسم كاسر وليس قيصر :biggrin:

انا لم انسخ الكود بتاتاً انا جربت على البرنامج اللي انت عملت مباشرة

 

رابط هذا التعليق
شارك

حياالله كاسر:smile:

 

رجاء تتبع الخطوات هذه وتخبرني بالنتيجة تفصيلا:

1. اجعل النموذج في وضع التصميم ، ثم افتح اعدادات الزر "حفظ" ، ثم تبويب الحدث ،

والمفروض ان ترى امام الحدث "On Click" الكلمات "[Event Procedure]" ، ثم انقر على الزر الصغير الذي به 3 نقاط (على يمين الصورة) ، هذا سوف يُدخلك في الكود:

471.Clipboard02.jpg

.

2. على العمود الذي يشير اليه السهم ، وبمحاذات الجملة التي تراها ، انقر بالفأرة اليسار على العمود ، فستلاحظ انه تم عمل نقطة في العمود (كما في الصورة)

471.Clipboard03.jpg

.

3. ارجع الى النموذج ، وقم بتشغيل النموذج ، واضغط على الزر "حفظ"

471.Clipboard04.jpg

.

4. سيأخذك البرنامج الى صفحة الكود ، وسترى التظليل الاصفر لنفس السطر الذي عملنا نقطة بجواره

471.Clipboard05.jpg

.

5. اضغط على الكيبورد على الزر F8 ثلاث مرات ، وسترى ان السطر الاصفر المظلل ذهب الى السطر ، كما اصبح في الصورة

471.Clipboard06.jpg

.

6. عند الضغط على الزر F8 مرة اخرى ، المفروض ان ترى النموذج وبه صورة الرسالة

471.Clipboard07.jpg

.

 

رجاء تخبرني اذا كنت ترى ما ارى ، او ان كمبيوترك يرى ما لا ارى :smile:

 

جعفر

رابط هذا التعليق
شارك

نعم أخي جعفر أنا وكمبيوتري نرى الذي تراه تماما

فعند ادخال البيانات وترك احد الحقول فارغا تظهر الرسالة

وعند إكمال البيانات والنقر على زر الامر لايحدث أي شي في الجدول Tbl_2

رابط هذا التعليق
شارك

الحمدلله ، اهم شئ هو الدخول في الكود :smile:

 

الشئ الذي يأتي على بالي الآن هو ، ان تنصيب الوندوز عندي انجليزي ، واعتقد عندك عربي ، لهذا السبب ايام الاسبوع قد تكون عندك بالعربي ، بينما هي عندي بالانجليزي ،

لذا ، اضف السطر الثالث الى الكود :

Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
Next_Day = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي

debug.print Next_Day

.

ثم شغل النموذج واضغط على زر الحفظ ،

ثم ادخل في الكود واضغط على Ctrl + G او انظر للصورة:

471.Clipboard08.jpg

.

وانسخ لي الاسماء التي في المربع الاحمر الى الموقع لوسمحت ، فانا اشك انها بالعربية ، واريد الاسم بالضبط كما يراه الكمبيوتر:smile:

 

جعفر

رابط هذا التعليق
شارك

أخي كاسر :smile:

 

تم تغيير الكود بحيث لا يقرا اليوم ، وانما رقم اليوم في الكود ، فعليه ، المفروض ان يعمل البرنامج الان على جميع الاجهزة ،

وهذا هو الكود المُعدل:


Private Sub cmd1_Click()

        'التاكد ان الحقول المطلوبة تم اختيارها في النموذج
        If Len(Me.StarteDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ البداية"
            Me.StarteDate.SetFocus
            Exit Sub
        ElseIf Len(Me.EndDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ النهاية"
            Me.EndDate.SetFocus
            Exit Sub
        ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _
               (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _
               (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _
               (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _
               (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then
            MsgBox "رجاء الاختيار من ايام التدريب"
            Exit Sub
        End If
        
        
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2")
    
     'عدد الايام بين يومي البداية والنهاية
    How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate)
    
    For i = 1 To How_Many_Days
        
        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day2 = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        Next_Day = UmWeekday(Next_Date)                'اليوم التالي بالرقم
        'Debug.Print Next_Day & "-" & Next_Day2
        'MsgBox Next_Date & " " & Next_Day
        
        add_Day = ""
        'اذا تم اختيار اليم في النموذج ، ما هو اليوم
        If Me.iSunday = -1 And Next_Day = 1 Then
             add_Day = "الاحد"      '"Sunday"
             
        ElseIf Me.iMonday = -1 And Next_Day = 2 Then
            add_Day = "الاثنين"     '"Monday"
            
        ElseIf Me.iTuesday = -1 And Next_Day = 3 Then
            add_Day = "الثلاثاء"    '"Tuesday"
            
        ElseIf Me.iWednesday = -1 And Next_Day = 4 Then
            add_Day = "الاربعاء"    '"Wednesday"
            
        ElseIf Me.iThursday = -1 And Next_Day = 5 Then
            add_Day = "الخميس"      '"Thursday"
            
        End If
        
        'لدينا تاريخ يجب ادخاله
        If add_Day <> "" Then
            'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit
            rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'"
            
            If rst.NoMatch Then
                'غير موجود
                rst.AddNew
                rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id
                rst.Update
            Else
                'موجود
                MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _
                       "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _
                       "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _
                       "هذا التاريخ لم يتم ادخاله مرة اخرى"
            End If
            
        End If
        
    Next i
    
    rst.Close: Set rst = Nothing
End Sub

 

جعفر

471.tdate.mdb.zip

  • Like 1
رابط هذا التعليق
شارك

النتيجة ممتازة استاذي الكريم

الآن بدأ الكود يعمل بشكل ممتاز

فقط يدور في ذهني الان سؤال

لو حاولت أني اعمل تعديل على التاريخ في النموذج

بزيادة او انقاص تاريخ البداية  وايضاً بزيادة او انقاص تاريخ النهاية

كيف سأتمكن من تعديل الايام التي ادرجت بالجدول Tbl_2

وعندي طلب أخر اخي جعفر

هل يمكن ادراج التاريخ من اليمين الى اليسار لضبط التنسيق

مثل : 1438/3/3

 

رابط هذا التعليق
شارك

39 دقائق مضت, kaser906 said:

النتيجة ممتازة استاذي الكريم

الآن بدأ الكود يعمل بشكل ممتاز

فقط يدور في ذهني الان سؤال

1. لو حاولت أني اعمل تعديل على التاريخ في النموذج

بزيادة او انقاص تاريخ البداية  وايضاً بزيادة او انقاص تاريخ النهاية

2. كيف سأتمكن من تعديل الايام التي ادرجت بالجدول Tbl_2

وعندي طلب أخر اخي جعفر

3. هل يمكن ادراج التاريخ من اليمين الى اليسار لضبط التنسيق

مثل : 1438/3/3

 

حياك الله:smile:

 

1. الكود يأخذ اي تاريخ هجري (والكود الذي وضعته انت اصلا يخص ام القرى) ، فما في مشكلة ،

2. اعمل نموذج على اساس الجدول Tbl_2 ، وتستطيع ان تغير فيه كما تشاء ،

3. في تنسيق التاريخ لحقل التاريخ ، انت ادخلته كـ dd/mm/yyyy ، والذي يجب ان تعمله هو yyyy/mm/dd ، هذا اذا اردت الرقم 1 يكون 01 (اي رقمين ، وانا انصحك بهذا ، حيث لن تتعب في الفرز) ،

بينما اذا اردت التنسيق رقم واحد مثل ما اشرت في مثالك ، فالتنسيق سيكون yyyy/m/d 

 

جعفر

رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

حياك الله:smile:

 

1. الكود يأخذ اي تاريخ هجري (والكود الذي وضعته انت اصلا يخص ام القرى) ، فما في مشكلة ،

2. اعمل نموذج على اساس الجدول Tbl_2 ، وتستطيع ان تغير فيه كما تشاء ،

3. في تنسيق التاريخ لحقل التاريخ ، انت ادخلته كـ dd/mm/yyyy ، والذي يجب ان تعمله هو yyyy/mm/dd ، هذا اذا اردت الرقم 1 يكون 01 (اي رقمين ، وانا انصحك بهذا ، حيث لن تتعب في الفرز) ،

بينما اذا اردت التنسيق رقم واحد مثل ما اشرت في مثالك ، فالتنسيق سيكون yyyy/m/d 

 

جعفر

استاذي جعفر

اسمح لي فقد اثقلت عليك

يبدو أني لم استطع ايضاح ما اريد

انا وضعت تنسيق التاريخ بالجدول

yyyy/mm/dd

لكن بالنسبة لادراج تاريخ ام القرى عن طريق الكود

فيجب تعريف الادخال من الكود الذي عملته انت

حاولت اني اعدل على الكود الذي عملته باضافة UmFormat

ولكن ظهرت عندي اخطاء

هذا الكود لدي على برنامجي ممكن يفيدك في فهم ما اريدة

يحتوي على تنسيق الادخال للجدول مباشرة

tdat = UmFormat(UmDateAdd("d", i, Me.[startdate]), Enddate.Format)

وهذه صورة توضح

http://148086876461.png

 

رابط هذا التعليق
شارك

تفضل:smile:

 

اضف السطر الرابع للكود ، وفي هذا المكان المحدد

        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day2 = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        Next_Day = UmWeekday(Next_Date)                'اليوم التالي بالرقم

        Next_Date = UmFormat(Next_Date, "yyyy/mm/dd")   'تغيير تنسيق التاريخ

 

جعفر

رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

تفضل:smile:

 

اضف السطر الرابع للكود ، وفي هذا المكان المحدد


        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day2 = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        Next_Day = UmWeekday(Next_Date)                'اليوم التالي بالرقم

        Next_Date = UmFormat(Next_Date, "yyyy/mm/dd")   'تغيير تنسيق التاريخ

 

جعفر

:clapping:تمام

الله يعطيك العافية

وجدت خلل بصيط اخي جعفر

لاحظت انه لايتم ادخال اليوم الاول في التدريب

بمعنى

لو كان تاريخ بداية ا التدريب 1438/03/05 يوافق الاحد  ونهاية التدريب  1438/03/07 يوافق يوم الثلاثاء

وتم التأشير على ايام التدريب الاحد والاثنين والثلاثاء

يتم ادخال يومين فقط  يوم الاثنين ويوم الثلاثاء ولا يتم ادخال يوم الاحد

رابط هذا التعليق
شارك

9 دقائق مضت, jjafferr said:

تفضل :smile:

 

استعمل هذا السطر بدل اللي في الكود:


For i = 0 To How_Many_Days

يعني استعملنا الصفر بدل الواحد.

 

جعفر

ربي يوفقك ويسعدك ويسهل أمورك ويرحم والديك

الف شكر لك

رابط هذا التعليق
شارك

هلا والله :smile:

 

وهاي الكود الكامل بالتعديلات:


Private Sub cmd1_Click()

        'التاكد ان الحقول المطلوبة تم اختيارها في النموذج
        If Len(Me.StarteDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ البداية"
            Me.StarteDate.SetFocus
            Exit Sub
        ElseIf Len(Me.EndDate & "") = 0 Then
            MsgBox "رجاء ادخال تاريخ النهاية"
            Me.EndDate.SetFocus
            Exit Sub
        ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _
               (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _
               (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _
               (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _
               (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then
            MsgBox "رجاء الاختيار من ايام التدريب"
            Exit Sub
        End If
        
        
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2")
    
     'عدد الايام بين يومي البداية والنهاية
    How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate)
    
    For i = 0 To How_Many_Days
        
        Next_Date = UmDateAdd("d", i, Me.StarteDate)    'التاريخ الهجري التالي
        Next_Day2 = UmWeekDayName(UmWeekday(Next_Date))  'اليوم التالي
        Next_Day = UmWeekday(Next_Date)                'اليوم التالي بالرقم
        Next_Date = UmFormat(Next_Date, "yyyy/mm/dd")   'تغيير تنسيق التاريخ
        'Debug.Print Next_Day & "-" & Next_Day2
        'MsgBox Next_Date & " " & Next_Day
        
        add_Day = ""
        'اذا تم اختيار اليم في النموذج ، ما هو اليوم
        If Me.iSunday = -1 And Next_Day = 1 Then
             add_Day = "الاحد"      '"Sunday"
             
        ElseIf Me.iMonday = -1 And Next_Day = 2 Then
            add_Day = "الاثنين"     '"Monday"
            
        ElseIf Me.iTuesday = -1 And Next_Day = 3 Then
            add_Day = "الثلاثاء"    '"Tuesday"
            
        ElseIf Me.iWednesday = -1 And Next_Day = 4 Then
            add_Day = "الاربعاء"    '"Wednesday"
            
        ElseIf Me.iThursday = -1 And Next_Day = 5 Then
            add_Day = "الخميس"      '"Thursday"
            
        End If
        
        'لدينا تاريخ يجب ادخاله
        If add_Day <> "" Then
            'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit
            rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'"
            
            If rst.NoMatch Then
                'غير موجود
                rst.AddNew
                rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id
                rst.Update
            Else
                'موجود
                MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _
                       "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _
                       "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _
                       "هذا التاريخ لم يتم ادخاله مرة اخرى"
            End If
            
        End If
        
    Next i
    
    rst.Close: Set rst = Nothing
End Sub

وهاي المرفق النهائي:smile:

 

جعفر

471.tdate.mdb.zip

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information