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

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


إذهب إلى أفضل إجابة Solved by أحمد العيسى,

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

السلام عليكم

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

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

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

img?id=977624

Function d_ay(Calculate As Date, birth As Date) As Integer
    Dim m_on As Integer
    m_on = DateDiff("m", birth, Calculate)
    d_ay = DateDiff("d", DateAdd("m", m_on, birth), Calculate)
    If d_ay < 0 Then
        m_on = m_on - 1
        d_ay = DateDiff("d", DateAdd("m", m_on, birth), Calculate)
    End If
End Function

Function m_on(Calculate As Date, birth As Date) As Integer
    Dim d_ay As Integer
    m_on = DateDiff("m", birth, Calculate)
    d_ay = DateDiff("d", DateAdd("m", m_on, birth), Calculate)
    If d_ay < 0 Then
        m_on = m_on - 1
    End If
    m_on = m_on Mod 12
End Function

Function y_er(Calculate As Date, birth As Date) As Integer
    Dim m_on As Integer, d_ay As Integer
    m_on = DateDiff("m", birth, Calculate)
    d_ay = DateDiff("d", DateAdd("m", m_on, birth), Calculate)
    If d_ay < 0 Then
        m_on = m_on - 1
    End If
    y_er = m_on \ 12
End Function

 

مرفق ملف مختصر للملف الأصلى به الكود المراد التعقيب عليه

db1.mdb

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

  • أفضل إجابة

وجدت " كود "  كنت قد استخدمته فى برنامج أكسل  ويعتبر متوافق 100% مع الطريقة التقليدية

فى حساب الفرق بين تاريخين بوضعهما  يدوياً  اسفل بعضهما ويتم الطرح مباشرة أو بالإستلاف

 

Function d_ay(Calculate As Date, birth As Date) As Integer
       If Day(Calculate) >= Day(birth) Then
          d_ay = Day(Calculate) - Day(birth)
       Else
          d_ay = Day(Calculate) + 30 - Day(birth)
       End If
End Function

Function m_on(Calculate As Date, birth As Date) As Integer
       If Day(Calculate) >= Day(birth) Then
          If Month(Calculate) >= Month(birth) Then
             m_on = Month(Calculate) - Month(birth)
          Else
             m_on = Month(Calculate) + 12 - Month(birth)
          End If
       Else
          If Month(Calculate) > Month(birth) Then
             m_on = Month(Calculate) - 1 - Month(birth)
          Else
             m_on = Month(Calculate) + 11 - Month(birth)
          End If
       End If
End Function

Function y_er(Calculate As Date, birth As Date) As Integer
       If Day(Calculate) >= Day(birth) Then
          If Month(Calculate) >= Month(birth) Then
             y_er = Year(Calculate) - Year(birth)
          Else
             y_er = Year(Calculate) - 1 - Year(birth)
          End If
       Else
          If Month(Calculate) > Month(birth) Then
             y_er = Year(Calculate) - Year(birth)
          Else
             y_er = Year(Calculate) - 1 - Year(birth)
          End If
       End If
End Function

 

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

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

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



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

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

Important Information