• 締切済み

Accessで超過年数を自動表示させる関数の構文を教えてください。

Access2003を使用しています。 クエリで出荷日から8年以上経過したレコードには8年超過と自動表示させたいのですが、関数の構文はどのようになるのでしょうか? 「出荷日」フィールドは日付/時刻型になっています。 なお、表示させるフィールドは「超過年数」です。 どなたかご教示をお願いします。

みんなの回答

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

出荷日には未来の日付はないものとします 超過年数:DateDiff("yyyy",[出荷日],Date())+(Format([出荷日],"mmdd")>Format(Date(),"mmdd")) & "年経過" 超過じゃなく経過ですよね

375k
質問者

お礼

教えていただいた構文にIIfで条件分岐させて8年を超えたものは全て同一の表示にすることが出来ました。 経過年数: (IIf(DateDiff("yyyy",[出荷日],Date())+(Format([出荷日 ],"mmdd")>Format(Date(),"mmdd"))>=8,"8年経過","")) またご指摘のとおり、経過が適当ですよね。 ありがとうございました。

noname#140971
noname#140971
回答No.1

出荷履歴クエリ: ID__出荷日__________超過年数 01__2000/03/05___8年超過 02__2001/03/05 SELECT 出荷履歴.ID, 出荷履歴.出荷日, IIf(YearDiff([出荷日],Date())>=8,"8年超過","") AS 超過年数 FROM 出荷履歴; もちろん、関数 YearDiff() なんてのは Access にはありません。 そこで、自作して標準モジュールに登録する必要があります。 Public Function YearDiff(ByVal Hiduke1 As Date, ByVal Hiduke2 As Date) As Integer   YearDiff = DateDiff("yyyy", Hiduke1, Hiduke2) + _         (Format(Hiduke1 - 1, "mm/dd") > Format(Hiduke2, "mm/dd")) End Function [イミディエイト] ? YearDiff("2004/2/29", "2005/2/28") 1 問題は、こういう場合の経過年数計算をどうするかです。 これは、そこそこにルールってのがあるので必ずしも YearDiff() が正しいとも限りません。 DateDiff("yyyy", 起算日, 現在日) これで済まして問題なきゃ、それでも良いかも知れません。

375k
質問者

お礼

関数を自作できるなんて凄いですね。 私は、まだまだそのレベルには達成できず・・・です。 ありがとうございました。

関連するQ&A