未来・過去にわたる年齢計算:SampleFile065年齢の計算は、現時点を基準に年齢を算出する方法と、未来及び過去の時点における年齢を算出する方法とがあります。今回は、後者の未来及び過去の時点での年齢計算方法をご紹介します。表示させるフォーム形式は、2種類用意しています。サンプルとして、下記のようなテーブルを想定して下さい。ランダムに生年月日を設定しています。下記のようなフォームを用いて、帳票形式で各人について年齢を表示させてみましょう。フォーム上のテキストボックスにテーブルデータを加工してデータを表示させる場合はクエリを用います。tbl_sampleテーブルを元にしたクエリを作成します。新しいフィールドを作成し、以下の関数を記述します。独自に作成したFunction関数です。年を求める標準プロシージャです。'日付形式であるかどうか判断します。Null対策も含みます。用いて&quot;年&quot;を計算します。'誕生日が過ぎていれば求めたGetYearsから1歳を引きます。'dat基準日が誕生日以前の日であれば求めたGetYearsから1歳を足します。GetMonth月数を求める標準プロシージャです。'dat年月日がDate型か否かを判別します。'dat基準日が誕生日以前の日であれば、求めたdblbirthdayから1歳を足します。基準日の入力を求めるInputBoxが表示され、入力した日付でデータ表示される仕組みをお話します。フォームの開く時イベントに以下のようなプロシージャを記述します。&quot;年齢計算を行う基準日を入力して下さい。&quot;入力形式はyyyy/mm/ddです。'InputBoxを用いて、入力を求めます。&quot;フォームを開けません。&quot;入力形式がyyyy/mm/ddと異なるか、キャンセルされました。'IsDate関数を用いて、入力形式がDate型か否かを判断します。'フォームを開かず終了します。利用する時には直接用いるのではなく、変数を間に挟ませるのが一般的です。ここでもIsDate関数を用いてエラーチェックを行っています。フォームの読み込み時イベントに以下のようなプロシージャを記述します。最後にメインフォームを作成して終了です。一度サンプルファイルで確認して下さい。誕生日や年齢については、詳しく求めれば求めるほど誤差が生じます。一例を挙げますと下記のようなことが生じます。厳密には、12月1日に誕生した人は、翌年の11月30日に満一年を迎えます。DateDiff()関数を用いる限り12月1日に1歳年齢が上がってしまいます。世間では、4月30日に誕生した人は、翌年の2月28日には10ヶ月目を迎えているはずですが、このサンプルソフトでは9ヶ月目になります。月単位の計算ではなく日数の経過単位であることが原因です。3月29日では10ヶ月目、3月30日で11ヶ月目になります。