السلام عليكم 🙂
الاكسس تلقائيا يحسب عدد الايام الصحيحة ، حسب عدد ايام الشهر ، وحسب كون السنة كبيسة او عادية ،
فاليك الدالة التي استعملها (وهي موجودة في المنتدى، ولكن عملت عليها تغيير بسيط حتى تستطيع عرض الارقام مستقلة) :
Public Function YMDDif4(sDate1 As Date, sDate2 As Date)
On Error GoTo err_YMDDif4
'sDate1 earliest date
'sDate2 later date
Dim d As Integer, m As Integer, y As Integer
Dim iYear As Integer
Dim iMonth As Integer
Dim iDay As Integer
Dim dInterim1 As Date
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(Y) & " Years " & CStr(M) & " months " & CStr(D) & " days"
'YMDDif4 = CStr(y) & " س/" & CStr(m) & " ش/" & CStr(d) & " ي"
YMDDif4 = CStr(y) & "|" & CStr(m) & "|" & CStr(d)
Exit Function
err_YMDDif4:
If Err.Number = 94 Then
'ignor, null
Resume Next
Else
MsgBox Err.Number & vbCrLf & Err.Description
End If
End Function
.
واذا عندك بيانات في الجدول ، تناديها من النموذج على حدث الحالي:
Dim myPeriod As String
myPeriod = YMDDif4(Me.date1, Me.date2)
Me.Y = Split(myPeriod, "|")(0)
Me.M = Split(myPeriod, "|")(1)
Me.D = Split(myPeriod, "|")(2)
.
بس في حالتك ، وبسبب النموذج غير مضمن ، فتناديها على حدث "بعد تحديث" التاريخ الثاني 🙂
جعفر
مدة عمل الموظف.zip