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

دالة حساب التاريخ بين فترتين datediff


رعد داود

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

بسم  الله  الرحمن  الرحيم

 

لنفرض  ان  شخصا"  بداية  عمله  كان  في  6 / 5 / 2010

ونريد  حساب  خدمته  بالسنوات    حيث  الى 6/5/2011  يكون  اتم  سنة واحدة

والى  تاريخ 6/5/2012 اكمل سنتين

والى  تاريخ 6/5/2013 اكمل  3 سنوات

لتاريخ  اليوم  مثلا" 31 /1 / 2014  هو  لم  يكمل 4  سنوات  بعد ,,,,  فلماذا  عند  استخدام  الكود DateDiff("yyyy";[t_date];Date())

تظهر  النتيجه   4   علما "  ان  t_date  أقصد  به  تاريخ  بداية  العمل

 

ما  الحل  في  هذه  الحاله   ....

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

صحيح لو زاد عن الثلاث سنوات تعطي النتيجة 4

والحل هو ان تستخرج الايام ثم تقسمها على 360

مثال :

=Round(DateDiff("d";[Date1];[Date2])/360;2)

Round لتقريب الكسر  واخترنا 2  للتقريب الى عددين عشريين

 

 

ويمكنك استخدام  هذه الدالة  لاستخراج الايام والشهور والسنين :

Function BetwnDate(Date1 As Date, date2 As Date)
    Dim sYears As Integer, sMonths As Integer, sDays As Integer
    sMonths = DateDiff("m", Date1, date2)
    sDays = DateDiff("d", DateAdd("m", sMonths, Date1), date2)
    If sDays < 0 Then
        sMonths = sMonths - 1
        sDays = DateDiff("d", DateAdd("m", sMonths, ), date2)
    End If
    sYears = sMonths \ 12
    sMonths = sMonths Mod 12
    BetwnDate = sYears & "سنة,  " & sMonths & "شهر,  " & sDays & "يوم"
End Function

تلصقها في وحدة نمطية عامة ثم تستخدمها هكذا داحل مربع النص:

 =BetwnDate([Date1] ;[date2])
  • Like 4
رابط هذا التعليق
شارك

بسم  الله  الرحمن  الرحيم

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

 

استاذي  الفاضل  ابو  خليل  المحترم

 

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

أنا  استخدم   التاريخ  الثاني  ,  تاريخ  الحاسب  الفعلي   date()

في  الأستعلام  ايضا  تظهر  كسورات  ,,,   وفي  الوحدة  النمطية  يظهر  خطأ

أرفق  مثال  عملته  بذلك  لبيان  الخطأ

Datediif.rar

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

أحسنتم   استاذ  سمير     وكما  نحب  ان  نستفيد  من  الوحدة  النمطية  للأستاذ  الغالي   ابو  خليل  المحترم

مشكور  ياأخي  وربنا  يعطيك  التوفيق

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

بسم  الله  الرحمن  الرحيم

 

من  اجل  ان  تعم  الفائدة  على  تطبيق  الدالة  التي  تحسب  عدد السنوات  هنا   في  مثالي

جعلتها   شقين :

1-  تم  احتساب  اضافة  مخصصات  قدم   على  راتب  الموظف  لكل  سنه  5 % من اصل  راتبه   اعتبارا   من  تاريخ  مباشرته  بالعمل

2- احتساب  مدة  خدمته  بالسنوات

 

ارفع  هذا  المثال   للفائدة   مع  تحياتي  للأستاذ  ابو  خليل  والاستاذ   العزيز   ابو  سمير 

Datediif.rar

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

 

صحيح لو زاد عن الثلاث سنوات تعطي النتيجة 4

والحل هو ان تستخرج الايام ثم تقسمها على 360

مثال :

=Round(DateDiff("d";[Date1];[Date2])/360;2)

Round لتقريب الكسر  واخترنا 2  للتقريب الى عددين عشريين

 

 

ويمكنك استخدام  هذه الدالة  لاستخراج الايام والشهور والسنين :

Function BetwnDate(Date1 As Date, date2 As Date)
    Dim sYears As Integer, sMonths As Integer, sDays As Integer
    sMonths = DateDiff("m", Date1, date2)
    sDays = DateDiff("d", DateAdd("m", sMonths, Date1), date2)
    If sDays < 0 Then
        sMonths = sMonths - 1
        sDays = DateDiff("d", DateAdd("m", sMonths, ), date2)
    End If
    sYears = sMonths \ 12
    sMonths = sMonths Mod 12
    BetwnDate = sYears & "سنة,  " & sMonths & "شهر,  " & sDays & "يوم"
End Function

تلصقها في وحدة نمطية عامة ثم تستخدمها هكذا داحل مربع النص:

 =BetwnDate([Date1] ;[date2])

 

السلام عليكم اخواني الاعزاء

اريد شرح  هذا الكود وشرح كود الاضافة DateDiff("m", Date1, date2) وكذلك شرح الكود DateDiff("d", DateAdd("m", sMonths, Date1), date2) مع الشكرالجزيل وفقكم الله

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

بالنسبة  لدالة  استخراج  الاشهر والايام والسنين  للأخ الاستاذ   ابو  خليل  سأحاول  توضيح  البعض  منه

أماDateDiff("m", Date1, date2)  فدالة datediff  دالة  استخراج  عدد الايام  او  الاشهر  او  السنيين  بين  فترتين

فرمز "m"  هنا  ثابت  وللدالة  على  عدد الأشهر  ,,  وفي  حال  استخراج  الأيام  تضع "d"   دلالة  على  الأيام   وللسنيين   نضع  "yyyyy"

date1  تضع  محله  التاريخ  الأول  الذي  تريد  وdate2   التاريخ  الثاني

فمثلا"   أنت  لديك  تكست  بوكس  لأدخال  تاريخ   بداية  الخدمة  مثلا"  وأسميت  التكست  t_date  مثلا"   تكتب  في  اول  الدالة  t_date

 وللتاريخ  الثاني  كذلك

وللكود  الثاني  ايضا"  بعد  ان  عرفنا  ان  m  ترمز  للشهر   و d  للأيام   و  dateadd  هي دالة  اضافة  التاريخ

 

أرجو  ان  قربت  لك  الصورة 

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

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

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



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

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

Important Information