PDA

View Full Version : کم کردن دوتاریخ از نوع نامبر



re2007
سه شنبه 16 بهمن 1386, 09:34 صبح
باسلام و خسته نباشید ، 2 تا سوال دارم : ا - من بانک اطلاعاتی از اکسس دارم که می خواهم میزان
سابقه افراد را با کم کردن تاریخ جاری از تاریخ استخدام بدست آورم ، نوع فیلدها عدد
است و از ماژول شمسی آقای آزادی استفاده کرده ام . لطفا" اکر کدی دارید برایم بنویسید .
ندانستن عیب نیست نپرسیدن عیب است .
با سپاس از زحماتتان:تشویق:

SYNDROME
سه شنبه 16 بهمن 1386, 17:53 عصر
فرمت ذخیره تاریخ خود را بگویید تا بتوانیم بهتر کمکتان کنیم.(860101 یا 8611)
موفق باشید

مهدی قربانی
چهارشنبه 17 بهمن 1386, 02:26 صبح
سلام
این ماجول هم توسط آقای آزادی نوشته شده که می تونه اختلاف دو تاریخ شمسی رو برگردونه


'***********************************************
Public Function Diff(ByVal FromDate As Long, ByVal To_Date As Long) As Long
'این تابع تعداد روزهای بین دو تاریخ را ارائه می کند
Dim Tmp As Long
Dim S1, M1, r1, S2, m2, r2 As Integer
Dim Sumation As Single
Dim Flag As Boolean
Flag = False
If FromDate = 0 Or IsNull(FromDate) = True Or To_Date = 0 Or IsNull(To_Date) = True Then
Diff = 0
Exit Function
End If

If FromDate > To_Date Then
'اگر تاریخ شروع از تاریخ پایان بزرگتر باشد آنها موقتا جابجا می شوند
Flag = True
Tmp = FromDate
FromDate = To_Date
To_Date = Tmp
End If
r1 = Rooz(FromDate)
M1 = Mah(FromDate)
S1 = Sal(FromDate)
r2 = Rooz(To_Date)
m2 = Mah(To_Date)
S2 = Sal(To_Date)
Sumation = 0

Do While S1 < S2 - 1 Or (S1 = S2 - 1 And (M1 < m2 Or (M1 = m2 And r1 <= r2)))
'اگر یک سال یا بیشتر اختلاف بود
If Kabiseh((S1)) = 1 Then
If M1 = 12 And r1 = 30 Then
Sumation = Sumation + 365
r1 = 29
Else
Sumation = Sumation + 366
End If
Else
Sumation = Sumation + 365
End If
S1 = S1 + 1
Loop

Do While S1 < S2 Or M1 < m2 - 1 Or (M1 = m2 - 1 And r1 < r2)
'اگر یک ماه یا بیشتر اختلاف بود
Select Case M1
Case 1 To 6
If M1 = 6 And r1 = 31 Then
Sumation = Sumation + 30
r1 = 30
Else
Sumation = Sumation + 31
End If
M1 = M1 + 1
Case 7 To 11
If M1 = 11 And r1 = 30 And Kabiseh(S1) = 0 Then
Sumation = Sumation + 29
r1 = 29
Else
Sumation = Sumation + 30
End If
M1 = M1 + 1
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + 30
Else
Sumation = Sumation + 29
End If
S1 = S1 + 1
M1 = 1
End Select
Loop

If M1 = m2 Then
Sumation = Sumation + (r2 - r1)
Else
Select Case M1
Case 1 To 6
Sumation = Sumation + (31 - r1) + r2
Case 7 To 11
Sumation = Sumation + (30 - r1) + r2
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + (30 - r1) + r2
Else
Sumation = Sumation + (29 - r1) + r2
End If
End Select
End If

If Flag = True Then
Sumation = -Sumation
End If
Diff = Sumation
End Function

حالا در تکست باکسی که می خواید اختلاف دو تاریخ رو محاسبه کنید اینطوری بنویسید

=Diff([نام فیلد تاریخ استخدام];shamsi())