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

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

قام بنشر

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

 

 

قام بنشر

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

هل هي مدتين ام مدد عديدة

على العموم كفكرة اولية تقوم بعمل استعلام ..تجمع عدد الايام واذا كانت اكبر من 30 يوم تقسم على 30 وناتج القسمة الصحيح يجمع مع مجموع الاشهر

ومجموع الاشهر اذا كان اكبر من 12 يقسم على 12 وناتج القسمة الصحيح يضاف الى مجموع السنوات

  • 3 weeks later...
قام بنشر

اشكرك استاذ على الرد . مدد الخدمة تصل إلى اكثر من مدتين تصل إلى ثلاثة او أربعة.  فهل تتفضلون علينا بعمل مثال على ذلك   او إرشادي إلى موقع استفيد منه   جزاكم الله خيرا

قام بنشر
9 دقائق مضت, سجى الكعبي said:

فهل تتفضلون علينا بعمل مثال على ذلك

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

تمنياتي بالتوفيق

  • Like 1
قام بنشر

تجربة ع السريع 

الحل بأخر استعلام qryTotalFinalDuration

للتجربة ادخل كود الموظف 1 وتارة اخرى 2 للتجربة

للعلم عدد الايام لن يكون صحيح بنسبة 100% 

لانه تم القسمة على 30 وهناك اشهر قد تكون 28 , 29 , 30 , 31  ولا اعرف  كيف اضبطها :eek2: 

الحل المقدم من تصورى قد اخطئ فيه وقد اصيب وربما تكون هناك افكار افضل 

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

EmploymentPeriods.accdb

قام بنشر
2 ساعات مضت, سجى الكعبي said:

مدد الخدمة تصل إلى اكثر من مدتين تصل إلى ثلاثة او أربعة.

انا فاهم عليك ابنتي العزيزة ست @سجى الكعبي

انا افكر وسأجرب لاحقا ان وسعني الوقت

اعملي جدول للموظفين ...وجدول اخر بالخدمة ..ويكون نموذج فرعي مستمر نربطه مع النموذج الرئيس بأسم الموظف

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

Datediff("d";"date1";"date2")

ثم نجمع تلك الايام لكي يتم تحويلها الى سنين واشهر وايام

  • Like 1
قام بنشر
14 ساعات مضت, ابو جودي said:

تجربة ع السريع 

الحل بأخر استعلام qryTotalFinalDuration

للتجربة ادخل كود الموظف 1 وتارة اخرى 2 للتجربة

للعلم عدد الايام لن يكون صحيح بنسبة 100% 

لانه تم القسمة على 30 وهناك اشهر قد تكون 28 , 29 , 30 , 31  ولا اعرف  كيف اضبطها :eek2: 

الحل المقدم من تصورى قد اخطئ فيه وقد اصيب وربما تكون هناك افكار افضل 

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

EmploymentPeriods.accdb 484 kB · 8 downloads

بعد إذنك باش مهندس محمد @ابو جودي 🙂 

اشتغلت على نفس ملفك وعملت كل العمليات في كويري واحد .. وطلع عندي نتيجة قريبة منك بفارق يومين لكل شخص ( إزاااااي ؟؟ ... متسألنيش ) 😂

image.png.d998617791e1a90d09184f478ec73a7e.png

اسم الكويري : Qry_Moosa_Calc

EmploymentPeriods.accdb

  • Like 1
قام بنشر
4 ساعات مضت, Moosak said:

بعد إذنك @ابو جودي 🙂 

اشتغلت على نفس ملفك وعملت كل العمليات في كويري واحد .. وطلع عندي نتيجة قريبة منك بفارق يومين لكل شخص ( إزاااااي ؟؟ ... متسألنيش ) 😂

اولا انا وما املك ملك يمينكم :wub:  >>---> العشق الممنوع :biggrin:

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

طيب تعالى نوضح بعض النقاط الهامة

تحتوي السنوات الكبيسة على 366 يومًا ، وليس 365
كم يوما يجب أن يكون للشهر؟ 28 أو 29 أو 30 أو 31؟
ومع الاخذ فى الاعتبار إن الوقت الذي تستغرقه الأرض حتى تدور حول الشمس على وجه الدقة يقترب من 365.25  يوما وبذلك يكون عدد الأيام فى الشهر = 365.25/12=30.4375

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

والافضل الحساب على اعتبار ان السنه 365.25  الوقت الذي تستغرقه الأرض حتى تدور حول الشمس

ومع ذلك تم المراعاة اثناء كتابة الكود بجعل الاختيار حسب الرغبة اومااااااااااااااااااال :wink2: :biggrin:

Function GetPeriod( _
                    intContDays As Long, _
                    Optional intBetween_0_Or_1_LangEng_Or_Ar As Byte = 0, _
                    Optional intBetween_0_Or_1_ContDaysOfYear As Byte = 0) As String

Dim YearAvg   As Double, MonthAvg  As Double
Dim Y As Long, M As Long, D As Long
Dim strYears  As String, strMonths As String, strDays   As String

  Select Case intBetween_0_Or_1_ContDaysOfYear
    Case Is = 0: YearAvg = 365: MonthAvg = 30
    Case Is = 1: YearAvg = 365.25: MonthAvg = 30.4375
  End Select

  Y = Int(intContDays / YearAvg)
  M = Int((intContDays - (Int(intContDays / YearAvg) * YearAvg)) / MonthAvg)
  D = intContDays - ((Y * YearAvg) + (M * MonthAvg))

   Select Case intBetween_0_Or_1_LangEng_Or_Ar
    Case Is = 0: strYears = " year" & " , ": strMonths = " Month" & " , ": strDays = " Day"
    Case Is = 1
    strYears = ChrW("32") & ChrW("1587") & ChrW("1606") & ChrW("1607") & " , ": strMonths = ChrW("32") & ChrW("1588") & ChrW("1607") & ChrW("1585") & " , ": strDays = ChrW("32") & ChrW("1610") & ChrW("1608") & ChrW("1605")
  End Select
  
  GetPeriod = Y & strYears & M & strMonths & D & strDays
  
End Function

على ان يتم استدعاؤه بشكل مرن باختيار الية الحساب على اعتبار ان السنة 365 و عدد ايام الشهر 30
او  على اعتبار ان السنة 365.25  و عدد الأيام فى الشهر = 365.25/12=30.4375

syntax
ويتم استدعاء الكود من خلال 

GetPeriod(CountDays, Lang(0 or 1) ,Option Calc for Cont Dayes Of Year(0 or 1))

وهذه جملة Sql  والخاصة بالاستعلام للحصول على النتيجة النهائية كما بالمرفق 

SELECT tbldata.EmpCode, Sum(DateDiff("d",[fromDate],[ToDate])) AS NoDays, GetPeriod(Sum(DateDiff("d",[fromDate],[ToDate]))) AS FinalDurationBy365Eng, GetPeriod(Sum(DateDiff("d",[fromDate],[ToDate])),0,1) AS [FinalDurationBy365,25Eng], GetPeriod(Sum(DateDiff("d",[fromDate],[ToDate])),1) AS FinalDurationBy365Ar, GetPeriod(Sum(DateDiff("d",[fromDate],[ToDate])),1,1) AS [FinalDurationBy365,25Ar]
FROM tbldata
GROUP BY tbldata.EmpCode;

 

واخيرا المرفق ملك يمينكم يا @سجى الكعبي :fff:

و عبى يابا و ضيف للمكتبة يا سيدى :wink2: طبعا لا اقصد مكتبة @Moosak :eek2:

EmploymentPeriods (V2).accdb

  • Like 2
  • Thanks 1
قام بنشر (معدل)

@ابو جودي

الله يحفظك يا عبقري ويزيدك من واسع علمه وفضله  ... 😊

 وعبي يابا .. 😂

تم تعديل بواسطه Moosak
  • Haha 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