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

كيفية حساب عدد الاشهر بين تاريخين


hh88

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

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

 

تفضل

794.Clipboard01.jpg.a277a1061e86193822494bd7886ee025.jpg

.

هذه الوحدة النمطية الموجودة في Help الاكسس ، مع بعض التعديل

Option Compare Database
Option Explicit

Public Function YMDDif(sDate1, sDate2)

    'sdate1 earliest date sdate2 later

    Dim iYear As Integer
    Dim iMonth As Integer
    Dim iDay As Integer
    Dim dInterim1 As Date
    Dim D As Integer
    Dim M As Integer
    Dim Y As Integer

    iMonth = DateDiff("m", sDate1, sDate2)
    If Day(sDate1) > Day(sDate2) Then
        iMonth = iMonth - 1
    End If
    dInterim1 = DateAdd("m", iMonth, sDate1)
    iDay = DateDiff("d", dInterim1, sDate2)
    
    D = iDay
    M = iMonth Mod 12
    Y = iMonth \ 12
    
    YMDDif = CStr(Y) & " س/" & CStr(M) & " ش/" & CStr(D) & " ي"

End Function

Public Function YMDDif2(sDate1, sDate2)

    'sdate1 earliest date sdate2 later

    Dim iYear As Integer
    Dim iMonth As Integer
    Dim iDay As Integer
    Dim dInterim1 As Date
    Dim D As Integer
    Dim M As Integer
    Dim Y As Integer

    iMonth = DateDiff("m", sDate1, sDate2)
    If Day(sDate1) > Day(sDate2) Then
        iMonth = iMonth - 1
    End If
    dInterim1 = DateAdd("m", iMonth, sDate1)
    iDay = DateDiff("d", dInterim1, sDate2)
    
    D = iDay
    M = iMonth Mod 12
    Y = iMonth \ 12
    
    YMDDif2 = CStr(M) & " ش"

End Function

.

اما التقرير ، فيأخذ بياناته من هذا الحدث ويعطينا الفرق باليوم ، والشهر ، والسنة  (احذف السطر اللي ما تريده:smile:)

Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer)

    Me.txtcount = DLookup("[التاريخ]", "[Query1]", "[Query1]![CountOfالتسلسل]=" & [نص128])
    Me.txtcounupgrade = DLookup("[التاريخ]", "[Query1]", "[Query1]![CountOfالتسلسل]=" & [نص130])
    Me.Months = YMDDif(Me.txtcount, Me.txtcounupgrade) & vbCrLf & _
                "او" & vbCrLf & _
                YMDDif2(Me.txtcount, Me.txtcounupgrade)
    
End Sub

 

جعفر

794.حساب عدد الاشهر بين تاريخين.accdb.zip

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

9 hours ago, jjafferr said:

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

 

تفضل

794.Clipboard01.jpg.a277a1061e86193822494bd7886ee025.jpg

.

هذه الوحدة النمطية الموجودة في Help الاكسس ، مع بعض التعديل


Option Compare Database
Option Explicit

Public Function YMDDif(sDate1, sDate2)

    'sdate1 earliest date sdate2 later

    Dim iYear As Integer
    Dim iMonth As Integer
    Dim iDay As Integer
    Dim dInterim1 As Date
    Dim D As Integer
    Dim M As Integer
    Dim Y As Integer

    iMonth = DateDiff("m", sDate1, sDate2)
    If Day(sDate1) > Day(sDate2) Then
        iMonth = iMonth - 1
    End If
    dInterim1 = DateAdd("m", iMonth, sDate1)
    iDay = DateDiff("d", dInterim1, sDate2)
    
    D = iDay
    M = iMonth Mod 12
    Y = iMonth \ 12
    
    YMDDif = CStr(Y) & " س/" & CStr(M) & " ش/" & CStr(D) & " ي"

End Function

Public Function YMDDif2(sDate1, sDate2)

    'sdate1 earliest date sdate2 later

    Dim iYear As Integer
    Dim iMonth As Integer
    Dim iDay As Integer
    Dim dInterim1 As Date
    Dim D As Integer
    Dim M As Integer
    Dim Y As Integer

    iMonth = DateDiff("m", sDate1, sDate2)
    If Day(sDate1) > Day(sDate2) Then
        iMonth = iMonth - 1
    End If
    dInterim1 = DateAdd("m", iMonth, sDate1)
    iDay = DateDiff("d", dInterim1, sDate2)
    
    D = iDay
    M = iMonth Mod 12
    Y = iMonth \ 12
    
    YMDDif2 = CStr(M) & " ش"

End Function

.

اما التقرير ، فيأخذ بياناته من هذا الحدث ويعطينا الفرق باليوم ، والشهر ، والسنة  (احذف السطر اللي ما تريده:smile:)


Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer)

    Me.txtcount = DLookup("[التاريخ]", "[Query1]", "[Query1]![CountOfالتسلسل]=" & [نص128])
    Me.txtcounupgrade = DLookup("[التاريخ]", "[Query1]", "[Query1]![CountOfالتسلسل]=" & [نص130])
    Me.Months = YMDDif(Me.txtcount, Me.txtcounupgrade) & vbCrLf & _
                "او" & vbCrLf & _
                YMDDif2(Me.txtcount, Me.txtcounupgrade)
    
End Sub

 

جعفر

794.حساب عدد الاشهر بين تاريخين.accdb.zip

مبدع كعادتك دائما استاذي الكريم جعفر

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

وتقبل جزيل الشكر 🌹🌹

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

1 hour ago, jjafferr said:

:cool:

تفضل ، فرق الاشهر فقط


= datediff("m",Me.txtcount, Me.txtcounupgrade)

 

جعفر

الله يجزاك كل خير حبيبنا وأستاذي الكريم جعفر 

الف شكر 

اسال الله ان يرزقك من واسع رزقه ويزيدنا علما 

🌹🌹🌹

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

  • 10 months later...

بدون الحاجة الى وحدة نمطية او غير ذلك  توجد دالة اسمها datediff() هذه الدالة تطرح بين تاريخين وترجع قيمة معينة مثلا (شهر او يوم او سنة شاهد دروسها على اليوتيوب وهي دالة سهلة جدا 

  • 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