- ベストアンサー
アクセスで、
フォームを作成しています。 データテーブルに、「入社日」というフィールドがあり、 フォームに、勤続年数というテキストボックスを作ってToday()までの勤続の年数を表示させたいのです。 その場合、フォームに非連結のテキストボックスを作って計算式を入れたらいいのですか? それはどんな計算式ですか? =datedif([入社日],today(),"y") これではエラーになってしまいました。 何か他の方法があるのでしょうか? どうぞ宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
正しくは =DateDiff("yyyy",[入社日],Date()) ですがこれでは正しく勤続年数を計算してくれません。 入社日がDate()で取得した日付を超えて無くても超えていても同じ年数を返してしまうので。 例えば2005/4/1に入社してDate()で求めた日付2005/3/7で上記の記述では1年たっていないですが1と返されてしまいます。 =Int((IIf(DatePart("d",[入社日])>DatePart("d",Date()),DateDiff("m",[入社日],Date())-1,DateDiff("m",[入社日],Date()))/12)) & "年" これが正解です。 年が不要なら& "年"を削除してください。 何年何ヶ月まで求めるにはこちらを =Int((IIf(DatePart("d",[入社日])>DatePart("d",Date()),DateDiff("m",[入社日],Date())-1,DateDiff("m",[入社日],Date()))/12)) & "年" & IIf(DatePart("d",[入社日])>=DatePart("d",Date()),DateDiff("m",[入社日],Date())-1,DateDiff("m",[入社日],Date())) Mod 12 & "ヶ月"
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
エクセルとアクセスでは関数が若干違います。 アクセスでの関数はDatediffでfが一つ多いです。設定する項目の順序や内容も差異があります。 また今日の日付はTodayではなくDateです。 後、ヘルプを必ず確認してください。 =Datediff("yyyy",[入社日],Date)