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

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

قام بنشر
2 ساعات مضت, احمد حبيبه said:

هل يوجد لها تعديل فى الاستعلام يظهرها فارغه او صفر

نعم يمكن استخدام دالة nz اذا كان حقلي التاريخ فارغاً

Frook3: CalcAgem(Nz([AGAM1];0);Nz([AGAM2];0))+IIf(CalcAgeD(Nz([AGAM1];0);Nz([AGAM2];0))>22;1;0)

UP-New Microsoft Access 11111.rar

تحياتي

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

اخى واستاذى محمد أبوعبدالله

تم عمل الملف بنجاح

اشكرك جدا جدا لقد وفرت عليا وقت وجهد كبير جدا مع الاف الموظفين

جزاك الله خيرا

ـــــــــــــــــــــــــــــــــــــــــــــــــ

اخى اكريم 

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

وهو خاص باستخراج المده بين تاريخين بالشهر واليوم بدون اى شروط

لكن لاحظت ان النتائج طبقا للمعادله مختلفه عن النتائج المحسوبه يدويا

اليك الملف للاطلاع ... واسف جدا على الازعاج

باليوم والشهر.accdb

تم تعديل بواسطه احمد حبيبه
قام بنشر
51 دقائق مضت, احمد حبيبه said:

لكن لاحظت ان النتائج طبقا للمعادله مختلفه عن النتائج المحسوبه يدويا

ما المقصود  محسوبة يدوياً

اود ان ابنهك الى شىء هام دالة DateDiff في الاساس تقوم بعرض الفاصل بين تاريخين سواء يوم او شهر او سنة

فمثلاً الفاصل الزمني بين 01/01/2021 الى 31/12/2021 لن يكون 1 سنة بل سيكون 11 شهر + 30 يوم

الفاصل الزمني بين 01/01/2021 الى 31/01/2021 لن يكون شهر بل سيكون 30 يوم

الفاصل الزمني بين 01/01/2021 الى 31/03/2021 لن يكون ثلاثة اشهر بل سيكون 2 شهر + 30 يوم

وبناءأ عليه فالكود المستخدم صحيح 100% باذن الله

والشكر موصول لصاحب الكود الاساسي جعله الله في ميزان حسناته

تحياتي

  • Like 1
قام بنشر
منذ ساعه, محمد أبوعبدالله said:

ما المقصود  محسوبة يدوياً

اود ان ابنهك الى شىء هام دالة DateDiff في الاساس تقوم بعرض الفاصل بين تاريخين سواء يوم او شهر او سنة

فمثلاً الفاصل الزمني بين 01/01/2021 الى 31/12/2021 لن يكون 1 سنة بل سيكون 11 شهر + 30 يوم

الفاصل الزمني بين 01/01/2021 الى 31/01/2021 لن يكون شهر بل سيكون 30 يوم

الفاصل الزمني بين 01/01/2021 الى 31/03/2021 لن يكون ثلاثة اشهر بل سيكون 2 شهر + 30 يوم

وبناءأ عليه فالكود المستخدم صحيح 100% باذن الله

والشكر موصول لصاحب الكود الاساسي جعله الله في ميزان حسناته

تحياتي

اخى الكريم

المقصود بالمحسوبه يدويا ... ان المراجعين لدينا قاموا بحساب المده بالورقه والقلم والكتابه اليدويه

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

وبالفعل طبعت نموذج وراجعته مع الحسابات وكان تعليقهم منطقى جدا ...وان السنه محسوبه 11 شهر و 30 يوم لماذا لا تكتب 12 شهر او عام مثلا

فسألت حضرتك هل يوجد طريقه لتلافى هذه الملحوظه  ... وانا والله مكسوف منك جدا لكثره طلباتى

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

تحياتى لشخصك الكريم واسف على الازعاج

قام بنشر
4 ساعات مضت, احمد حبيبه said:

وهو خاص باستخراج المده بين تاريخين بالشهر واليوم بدون اى شروط

 

2 ساعات مضت, احمد حبيبه said:

وان السنه محسوبه 11 شهر و 30 يوم لماذا لا تكتب 12 شهر او عام مثلا

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

يلزمنا الآن تعديل الكود مرة اخرى وما ينطبق عليه لا ينطبق على ما سبق

الوحدة النمطية الجديدة

Option Compare Database
Option Explicit

Function CalcAgeY(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2) + 1
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeY = vYears

End Function
Function CalcAgeM(vDate1 As Date, vdate2 As Date)

    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2) + 1
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeM = vMonths
    
End Function
Function CalcAgeD(vDate1 As Date, vdate2 As Date) As String
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2) + 1
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
    If Day(vDate1) = 31 Then vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1

    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) + 1
        
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeD = vDays
    End Function

وهذا في الاستعلام

يوم
D: CalcAgeD([from];[too])
شهر
M: CalcAgeM([from];[too])
سنة
Y: CalcAgey([from];[too])

باليوم والشهر.rar

تحياتي

  • 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