>退社日までの勤務日数を、何年何ヶ月何日で求めたいです
クエリやフォーム上等で求めるには2通りのやり方があります。
全て求める記述をするか標準モジュールに関数を作って求めるかです。
下記の記述をコピーする。(フィールド名が入社日・退社日ならそのままコピーでOKです。)
=Int((IIf(DatePart("d",[入社日])>DatePart("d",[退社日]),DateDiff("m",[入社日],[退社日])-1,DateDiff("m",[入社日],[退社日]))/12)) & "年" & IIf(DatePart("d",[入社日])>=DatePart("d",[退社日]),DateDiff("m",[入社日],[退社日])-1,DateDiff("m",[入社日],[退社日])) Mod 12 & "ヶ月" & IIf(DatePart("d",[入社日])>DatePart("d",[退社日]),DateDiff("d",[入社日],DateSerial(DatePart("yyyy",[入社日]),DatePart("m",[入社日])+1,0))+DatePart("d",[退社日]),DatePart("d",[退社日]-DatePart("d",[入社日]))) & "日"
または標準モジュールに関数を作りその関数を使う。
標準モジュールに下記をコピーします。
Public Function GetYMD(SDate, EDate) As String
If IsNull(SDate) Or IsNull(EDate) Then Exit Function
Dim M As Long
Dim D As Long
Dim D1 As Long
Dim D2 As Long
D1 = DatePart("d", SDate)
D2 = DatePart("d", EDate)
If D1 > D2 Then
M = DateDiff("m", SDate, EDate) - 1
D = DateDiff("d", SDate, DateSerial(DatePart("yyyy", SDate), DatePart("m", SDate) + 1, 0)) + D2
Else
M = DateDiff("m", SDate, EDate)
D = D2 - D1
End If
GetYMD = (M \ 12) & "年" & (M Mod 12) & "ヶ月" & D & "日"
End Function
デバックしてエラーにならなければクエリやフォームのコントロールに
=GetYMD([入社日],[退社日])
とすれば同様に求められます。
お礼
大変遅くなりました、思い通りの物が出来ました有難う御座いました。