Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
クエリでの勤続年数の計算
投稿日時: 20/04/17 16:16:20
投稿者: natunokanon


いつも勉強させて頂きありがとうございます。
 
在職者は入社日から本日まで
退職者は入社日から退職日まで
の勤続年数を○年○ヵ月で表示したいです
 
今は本日までの計算式しか入っていません。
=Int((IIf(DatePart("d",[入社日])>DatePart("d",date()),DateDiff("m",[入社日],date())-1,DateDiff("m",[入社日],date()))/12)) & "年" & IIf(DatePart("d",[入社日])>DatePart("d",date()) And DateDiff("m",[入社日],date())=0,DateDiff("m",[入社日],date())-1,DateDiff("m",[入社日],date())) Mod 12 & "ヶ月"
 
これをそのように修正すれば上手くいきますでしょうか?
ご教授よろしくお願い致します。

投稿日時: 20/04/17 16:20:36
投稿者: natunokanon


補足です。
退職日は、日付時刻型フィールドのテーブルを参照していまして
在職者はNull値になっています。

回答
投稿日時: 20/04/17 17:31:48
投稿者: sk

引用:
クエリでの勤続年数の計算

引用:
在職者は入社日から本日まで
退職者は入社日から退職日まで
の勤続年数を○年○ヵ月で表示したい

引用:
退職日は、日付時刻型フィールドのテーブルを参照していまして
在職者はNull値になっています。

( SQL ビュー)
---------------------------------------------------------------
SELECT [テーブル名].[入社日],
       [テーブル名].[退職日],
       IIf([テーブル名].[退職日]>Date(),Date(),Nz([テーブル名].[退職日],Date())) AS [最終在職日],
       DateDiff("m",[テーブル名].[入社日],[最終在職日]) + (Day([テーブル名].[入社日])>Day([最終在職日])) + 1 AS [勤続月数],
       IIf([勤続月数]>0,([勤続月数] \ 12) & "年" & ([勤続月数] Mod 12) & "ヵ月",Null) AS [勤続期間]
FROM [テーブル名]
ORDER BY [テーブル名].[入社日],
         [テーブル名].[退職日];
---------------------------------------------------------------
 
以上のようなクエリを作成なさりたい、ということでしょうか。

投稿日時: 20/04/20 09:39:29
投稿者: natunokanon


sk様
お返事有難うございます。
説明が下手ですみません。
クエリに[勤続年数]と言う演算フィールドを作りたいのです。
引用するフィールドは[入社日][退職日]
[退職日]が入っている場合は、[入社日]から[退職日]までを○年○ヵ月
[退職日]が入っていない場合は、[入社日]から本日までを○年○ヵ月
と[勤続年数]フィールドに表示したいのです。
 
宜しくお願いいたします。

投稿日時: 20/04/22 09:12:32
投稿者: natunokanon


ご指導をご参考に一応出来ました
勤続年数という演算フィールドです。
 
勤続年数: IIf(IsNull([退職日]),Int((IIf(DatePart("d",[入社日])>DatePart("d",Date()),DateDiff("m",[入社日],Date())-1,DateDiff("m",[入社日],Date()))/12)) & "年" & IIf(DatePart("d",[入社日])>DatePart("d",Date()) And DateDiff("m",[入社日],Date())=0,DateDiff("m",[入社日],Date())-1,DateDiff("m",[入社日],Date())) Mod 12 & "ヶ月",Int((IIf(DatePart("d",[入社日])>DatePart("d",[退職日]),DateDiff("m",[入社日],[退職日])-1,DateDiff("m",[入社日],[退職日]))/12)) & "年" & IIf(DatePart("d",[入社日])>DatePart("d",[退職日]) And DateDiff("m",[入社日],[退職日])=0,DateDiff("m",[入社日],[退職日])-1,DateDiff("m",[入社日],[退職日])) Mod 12 & "ヶ月")
 
[]は基テーブルの項目です。
大変助かりました。有り難うございました。