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

استعلام للغياب بتاريخ متتالي ومنقطع


ام ناصر

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

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

اعضاء المنتدى الكرام اساتذتي الافاضل اود عمل رسائل تنبيه او تحذير للغياب  وعلى سبيل المثال اذا كان عدد غياب الموظف يتجاوز ثلاث ايام  متالية(بالنسبة لتاريخ تغيبه) يظهر مسج معين كأن يكون (تحذير لقد تجاوزت حد الاعلى للغياب  )واذا تجاوز الحد المذكور لكن بتاريخ غياب متقطع يظهر مسج اخرى بتنبيه معين ,

المطلوب عمل استعلام  يبحث عدد الموظفين الغياب محدد بثلاث ايام متتالية في جدول الحضور والانصراف وكذلك يبحث عدد الموظفين الغياب لثلاث ايام لكن بشكل منقطع 

هذا ولكم كل الشكر والتقدير .

مثال 5.rar

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

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

 

لوسمحتي تعطينا معلومات اكثر عن طلبك:

1. هل سوف تطلبين البيانات بين تاريخين؟

2. اذا كان جوابك نعم ، واذا طلبتي البيانات لفترة شهر مثلا ، وكان هناك 3 ايام غياب متتايه ولكن لأكثر من مرة ، فماذا تريدين شكل رسالة التنبيه؟

3. كم عدد الموظفين جميعا تقريبا؟

 

جعفر

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

تفضلي:smile:

 

1. عملنا نموذج فيه التاريخ من/الى ،

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

527.Clipboard02.jpg

.

تقوم الوحدة النمطية بمقارنة اليوم rst!Date ، باليوم السابق + يوم (DateAdd("d", 1, Prev_Date)، 

واذا كانت النتيجة متساوية ، يقوم العداد Seq بجمع الايام ،


Function Check_Abs(EN)

    'EN = Employee Name
    
    Dim rst As DAO.Recordset
    
    fD = [Forms]![frm_Days]![Date_From]
    eD = [Forms]![frm_Days]![Date_To]
    
    myCriteria = "[Emp_Name]='" & EN & "'"
    myCriteria = myCriteria & " And [Leave_Type]='غياب'"
    myCriteria = myCriteria & " And [Date] Between " & DateFormat(fD) & " And " & DateFormat(eD)
    
    'Set rst = CurrentDb.OpenRecordset("Select * From Enterans_Absent Where [Emp_Name]='" & EN & "' And [Leave_Type]='غياب' And [Date] Between '" & DateFormat(fD) & "' And '" & DateFormat(eD) & "'")
    Set rst = CurrentDb.OpenRecordset("Select * From Enterans_Absent Where " & myCriteria & " Order by [Date]")
    rst.MoveLast: rst.MoveFirst
    RC = rst.RecordCount
    
    Seq = 1
    Prev_Date = rst![Date]
    
    For i = 1 To RC
        
        If rst![Date] = DateAdd("d", 1, Prev_Date) Then
            Seq = Seq + 1
        End If
        
        Prev_Date = rst![Date]
        
        rst.MoveNext
    Next i
    
    If Seq >= 3 Then
        Check_Abs = Seq & " ايام متتالية"
    Else
        Check_Abs = RC & " ايام غير متتالية"
    End If
    
    rst.Close: Set rst = Nothing
    
End Function

.

والنتيجة:

527.Clipboard01.jpg

.

جعفر

527.مثال 5.accdb.zip

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

11 ساعات مضت, jjafferr said:

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

 

لوسمحتي تعطينا معلومات اكثر عن طلبك:

1. هل سوف تطلبين البيانات بين تاريخين؟

2. اذا كان جوابك نعم ، واذا طلبتي البيانات لفترة شهر مثلا ، وكان هناك 3 ايام غياب متتايه ولكن لأكثر من مرة ، فماذا تريدين شكل رسالة التنبيه؟

3. كم عدد الموظفين جميعا تقريبا؟

 

جعفر

استاذنا الفاضل ..الصراحة الفترة الزمنية بين تاريخين جدا تسهل آلية الفلترة لكن خلال استخدامي لها بأستعلامات التقارير وكذلك كتابتها ككود تظهر بعض التوايخ التي لم تدخل ضمن الفترة ولا اعرف السبب (استخدمت دالة الـ Between مرة والعلامات المنطقية <= التاريخ الاول و >= الثاني  بمحاولة اخرى) .

اما جوابي على ماتفضلت بأستخدامها نعم

الفترة للبيانات ياحبذا يظهر الغيابات لآخر 3 اشهر على الاقل  اكون ممنونة .

اما الثلاث ايام مرة واحدة فقط  وشكل الرسالة تظهر اسماء الغياب او اي طريقة تنبه المستخدم للبرنامج .

عدد الموظفين  200

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

بارك الله فيك استاذ جعفر وسلمت يداك النتيجة رائعة ..ممكن طلب صغير لو سمحت بأن يكون الاستعلام الذي يعرض داخل النموذج مع شرط آخر ثلاث اشهر للغيابات في جدول الحضور والانصراف :smile:

 

تم تعديل بواسطه ام ناصر
رابط هذا التعليق
شارك

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

عفوا ما فهمت:blink:

 

اعملي التغيير على المرفق ، واعطيني مثال من البرنامج:smile:

 

جعفر

اعتذر لعدم التوضيح يعني يمكن لنا اظهار الغياب لفترة آخر ثلاث اشهر اذا ما احببنا استخدام ادخال فترة التاريخين يدويا  ويكون الناتج بهذا كما مبين بالصورة اي اظهار النتائج داخل النموذج المفتوح

نموذج.PNG

مثال تنبيه الغياب.zip

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

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

 

اذا فهمت قصدك صح ، فأنتي تريدين اضافة زر ليحدد الثلاثة اشهر على تاريخ البدء !!

 

طريقة العمل:

  1. اذا اخترتي زر 3 اشهر ، فتلقائيا يضيف 3 اشهر على "من تاريخ" ويضع النتيجة في "الى تاريخ" ،
  2. اذا كانت خانت 3 اشهر فيها صح ، وتم تغيير "من تاريخ" ، فتلقائيا سيتغير "الى تاريخ" بثلاثة اشهر ،
  3. اذا غيرتي في "الى تاريخ" ، فسيزيل على الصح من زر 3 اشهر:

527.1.Clipboard01.jpg

.

هذه اكواد 1 و 2 و 3 اعلاه:

Private Sub chk_3_months_Click()
'1
    If Me.chk_3_months = -1 And Len(Me.Date_From & "") <> 0 Then
        Me.Date_To = DateAdd("m", 3, Me.Date_From)
    End If
    
End Sub

Private Sub Date_From_AfterUpdate()
'2
    If Me.chk_3_months = -1 And Len(Me.Date_From & "") <> 0 Then
        Me.Date_To = DateAdd("m", 3, Me.Date_From)
    End If
    
End Sub

Private Sub Date_To_AfterUpdate()
'3
    If Len(Me.Date_To & "") <> 0 Then
        Me.chk_3_months = 0
    End If
    
End Sub

والنموذج يعمل كما كان سابقا:smile:

 

جعفر

527.1.مثال 5.accdb.zip

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

وعليكم السلام ورحمة الله استاذ جعفر ربي يبارك فيك  المقصود هو ان يستخرج الموظفين الغياب لثلاث اشهر سبقت التاريخ المدخل

صراحة عملت تغيير بسيط على المثال حيث وقف لدي تنفيذ نتيجة الـ(ِAbs_Type)

حيث قمت بتقسيم الجدول  الى جدول حضور والانصراف و جدول اسماء الموظفين وربطتهن بعلاقة  حاولت افهم الموديلات واعدل عليهن وعلى الاستعلام لكن محاولاتي باءت بالفشل ممكن تعديل من حضرتك على المثال المرفق  اكون ممنونة وارجو  ان لا اكون اثقلت عليك ..

مثال تحذير الغياب.zip

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

وعليكم السلام ورحمة الله استاذ جعفر  .. عفوا المثال اعلاه يظهر نفس الاسم المرسل لكن محتواه غير ولا اعرف ماهو السبب ساعيد ارسال المثال

اما فلترة الغيابات تكون على اساس تاريخ الغياب لثلاث اشهر التي تسبق التاريخ المدخل في النموذج للمثال المرفق مثال.rar  مع استخدام نفس الية العمل التي طبقتها حضرتك مشكورا في اظهار  عدد الغيابات المتتالية والغيابات الغير متتالية مع اسماء الموظفين .

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

السلام عليكم

 

اختي ،

1. طلبت منك:

اقتباس

رجاء تعطيني مثال واضح من قاعدة بياناتك ، وبالتفصيل:smile:

ولم احصل عليه:blink:

2. كل اسم له رقم مختلف ، فهذا معناه انه لا يمكن ان يكون لأي شخص اكثر من غياب واحد فقط ، هذا لأن جدول الغياب به رقم الموظف فقط ، والرابط بينه وبين جدول الاسماء هو الرقم !!

 

رجاء تعديل الجدول/الجداول واضافة بيانات زيادة حتى نستطيع عمل اللازم ، ثم اعطيني مثال منه:smile:

 

جعفر

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

  • 4 weeks later...

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

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



سجل دخولك الان
×
×
  • اضف...

Important Information