اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

@@@ مساعدة في حساب مدة نهاية الخدمة @@@


nabilalibibo
إذهب إلى أفضل إجابة Solved by Barna,

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

السلام عليكم

تقبل الله منا و منكم الصيام و القيام

ممكن مساعدة في حساب المدة المضافة الى تاريخ نهاية الخدمة 

حساب المدة الاولى ثابت يعني بعد سنة تنتهي الخدمة و يبقى ظاهر حتى و لم اضف المدة الاضافية 

يعني بداية الخدمة 11/04/2021 + 1 سنة = 11/04/2022

مثل : نهاية الخدمة بتاريخ 11/04/2022 و عند اضافة 10 ايام (مدة الاضافة متغيرة )يصبح التاريخ 21/04/2022 

Database1011.accdb

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

  • أفضل إجابة
13 ساعات مضت, nabilalibibo said:

السلام عليكم

تقبل الله منا و منكم الصيام و القيام

ممكن مساعدة في حساب المدة المضافة الى تاريخ نهاية الخدمة 

حساب المدة الاولى ثابت يعني بعد سنة تنتهي الخدمة و يبقى ظاهر حتى و لم اضف المدة الاضافية 

يعني بداية الخدمة 11/04/2021 + 1 سنة = 11/04/2022

مثل : نهاية الخدمة بتاريخ 11/04/2022 و عند اضافة 10 ايام (مدة الاضافة متغيرة )يصبح التاريخ 21/04/2022 

 

ربما هذا المطلوب ....

 

 

Database1011.accdb

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

بارك الله فيك استاذي الفاضل barna و تقبل الله منا ومنكم الصيام و القيام 

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

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

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

بارك الله فيك استاذي الفاضل barna و تقبل الله منا ومنكم الصيام و القيام 

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

تقبل الله منا ومنكم ... اخي الكريم هل البيانات مدخلة مسبقا ام تدخل لاحقا ... يعني اقصد البيانات جاهزة وانت تريد عرض وتعديل نهاية الخدمة فقط ...

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

2 ساعات مضت, nabilalibibo said:

نعم استاذي الفاضل barna البيانات مدخلة مسبقا و لديا اكثر من 600 موظف 

طيب في حدث عند تحميل النموذج ضع هذه الشيفرة .....

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Tb-Empl")
   If Not rs.BOF And Not rs.EOF Then
        rs.MoveFirst
        While (Not rs.EOF)
            If (IsNull(rs.Fields(5))) Then
            rs.Edit
            rs![نهاية الخدمة] = rs![تاريخ التوظيف] + 365
            rs.Update
            End If
         rs.MoveNext
        Wend
    End If
    rs.Close
    Set rs = Nothing

 

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

وإثراء للموضوع فكرتى المتواضعة على طريقة المعقدين نقسيا امثالى :yes:من بعد إذن استاذى الجليل ومعلمى القدير الاستاذ @Barna :fff: 

عدد 2 وظيفة ليمكن تطبيق المطلوب فى زوايا قاعدة البيانات 

الوظيقة الأولى حساب مدة التقاعد ولان المطلوب زيادة سنه فلقد تم التعامل مع الاكواد على ان يكون الوضع المفضل سنة واحدة بطريقة الية

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


Public Function RetirementDate( _
                        ByVal dtContractDate As Date, _
                        Optional nDay As Integer = 0, _
                        Optional nYear As Integer = 1 _
                        )
    If nDay = 0 Then
        RetirementDate = DateAdd("yyyy", nYear, dtContractDate)
    Else
        RetirementDate = DateAdd("yyyy", nYear, dtContractDate)
        RetirementDate = DateAdd("d", nDay, RetirementDate)
    End If
    
    RetirementDate = Format(RetirementDate, "dd/mm/yyyy")
    
End Function

طريقة استدعاء الوظيفة الاتية لحساب مدة التقاعد كالاتى 

RetirementDate([ContractDate],nz([addDayCont],0)

ContractDate   =  تاريخ بدأ التعاقد  ( تاريخ التعيين )

addDayCont    =  عدد الايام المضافة  ( مدة اضافية )

 

----------------------------

حساب الايام المتبقية للاحالة للتقاعد


Public Function MyDayRem(GetRetirementDate)
    Dim EndContract As String
    EndContract = ChrW("1578") & ChrW("1593") & ChrW("1575") & ChrW("1602") & ChrW("1583") & ChrW("32") & ChrW("1605") & ChrW("1606") & ChrW("1578") & ChrW("1607") & ChrW("1609")
    MyDayRem = IIf(DateDiff("d", Now(), GetRetirementDate) <= 0, EndContract, DateDiff("d", Now(), GetRetirementDate))
End Function

طريقة استدعاء الوظيفة الاتية لحساب عدد الإيام المتبقية للإحالة إلى التقاعد كالاتى 

MyDayRem([RetirementDateValue])

 

وهذا ملف التطبيق

تم التطبيق فى الاستعلام qryRetirDate  من خلال الاكواد فى الوحدة النمطية

 

 

Database1011.accdb

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

جزاكم الله خيــــرا استاذ @nabilalibibo:fff:

لا شكر على واجب :yes:

واعتذر لم انتبه لوجود نموذج يعتمد على الاستعلام 

ابشر جارى العمل على تعديل النموذج

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

اتفضل يا سيدى 

حاول كتابة الجدول باللغة الانجليزية وكذلك الحقول

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

ولا تستخدم هذه العلامة - بين المقطاع وان اردت استخدام علامات استخدم هذه العلامة  _  بدلا من السابقة

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

 

وحاول ان لا تستخدم حقل الـ ID  الذى ينشئه الأكسس تبقائئيا فى تصميمك اتركه للاندكس أفضل 

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

تقبل مودتى واعتذر للاطالة  :yes:

وأخير القاعدة من وجهة نظرى المتواضعة كما ينبغى ان تكون

Database1011 v2.accdb

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information