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

هل هنالك دالة في استعلامات الاكسس يعطي الفرق بين تاريخين 360 يوم بدلا من 365 يوم في كل سنة


gavan
إذهب إلى أفضل إجابة Solved by Foksh,

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

مرحبا بكم 

استخدمت الدالە 

DateDiff("d",[Date1],[Date2])

حيث يكون الناتج 365 يوم .

هل هنالك دالة اخرى ؟ او اي تغير يطرا على الدالة السابقة ليكون عدد ايام السنة 360 يوم ,

اي انه عندما يكون الفرق بين التاريخين 6 اشهر يكون الناتج 180 يوم , وهكذا عندما يكون الفرق بين التاريخين 4 اشهر يكون الناتج 120 يوم

الى ان يصل كل 1 يوم = 1يوم وليس 1.013888

وشكرا لكم

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

  • gavan changed the title to هل هنالك دالة في استعلامات الاكسس يعطي الفرق بين تاريخين 360 يوم بدلا من 365 يوم في كل سنة
  • أفضل إجابة

أعتقد أنه يمكنك ذلك ، من خلال الكود التالي ، قم بالتجربة والرجوع بالنتيجة ( لأنني لا استوعب فكرة أم تكون السنة 360 ، أو اعتبار أن جميع الشهور 30 يوم :wavetowel: ) 

 

Function DateDiff360(date1 As Date, date2 As Date) As Long
    Dim monthsDiff As Long
    monthsDiff = DateDiff("m", date1, date2)
    Dim daysDiff As Long
    daysDiff = DateDiff("d", DateAdd("m", monthsDiff, date1), date2)
    DateDiff360 = monthsDiff * 30 + daysDiff
End Function

ويتم الإستدعاء كالتالي :-

Dim daysDifference As Long
daysDifference = DateDiff360([Date1], [Date2])

 

 

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

شكرا اخي الغالي Foksh

ساطبقها وسارد لك الخبر يالغالي 

ولكنني حللتها بطرقة اخرى ارجوا افادتى اذا كانت صحيحة , ف النتائج عندي جيدة جدا وهي 

Date diff: DateDiff("d",[date1],[date2])/1.0111111111111111111111111

حيث يكون السنة الاولى =360 يوم , و السنة الثانية 721.978021978022 بدلا من 720 يوم و السنة الثالثة 1082.96703296703 بدلا من 1080 يوم

انا ادخلت الحقل الناتج الى دالة  Round و اصبحت النتيجة 100%

تحياتي لك

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

منذ ساعه, gavan said:

شكرا اخي الغالي Foksh

ساطبقها وسارد لك الخبر يالغالي 

ولكنني حللتها بطرقة اخرى ارجوا افادتى اذا كانت صحيحة , ف النتائج عندي جيدة جدا وهي 

Date diff: DateDiff("d",[date1],[date2])/1.0111111111111111111111111

حيث يكون السنة الاولى =360 يوم , و السنة الثانية 721.978021978022 بدلا من 720 يوم و السنة الثالثة 1082.96703296703 بدلا من 1080 يوم

انا ادخلت الحقل الناتج الى دالة  Round و اصبحت النتيجة 100%

تحياتي لك

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

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

جيد جدا اخي الحبيب 

نعم طريقتك يعطي الناتج بالضبط 

على عكس تجربتي حيث يضهر اخطاء عند حدوث كسر في السنة 

تحياتي لك 

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

42 دقائق مضت, gavan said:

جيد جدا اخي الحبيب 

نعم طريقتك يعطي الناتج بالضبط 

على عكس تجربتي حيث يضهر اخطاء عند حدوث كسر في السنة 

تحياتي لك 

من باب مشاركة اخي @Foksh واثراء الموضوع :::: جرب هذا
 

DateDiff("m", date1, date2) * 30 + (Day(date2) - Day(date1))

 

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

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

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



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

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

Important Information