クエリで生年月日を求めるのは、結構面倒です。

それは、年齢を求めるコードが長いからです。

公式として覚えるのもいいかもしれませんが、覚えるのも結構面倒です。

そんな時に役立つのは、ユーザー定義関数です。

ユーザー定義関数で、年齢を求める

こんにちは。伊川(@naonaoke)です。

前回は、Functionプロシージャについて説明をしました。

理解できると結構、便利で、おもしろいですね。

今回は、ACCESSで生年月日を求めるユーザー定義関数を作ります。

クエリのグリッドに長いSQL文を記載しなくても、一発で、年齢を求めることができます。

このブログはこんな人にお勧め

今回のテーマ
  • ACCESSでクエリを勉強している人
  • ユーザー定義関数を勉強している人
  • ACCESS利用する際に、どの場面で、ユーザー定義関数を利用するのかわからない人

このブログを、読み終わるころには・・・・

ユーザー定義関数は便利だなと思えるようになります。いちいち、長いSQL文をNETで検索しなくても大丈夫です。

ユーザー定義関数

ユーザー定義関数って便利だと思います。


通常は、ユーザー定義関数を利用しないと、このような長いSQL文を記載します。

しかし、これを公式として理解するのは、少し厳しいと思います。

もっとも、理屈を理解していれば、カンタンに覚えることもできるとは思います。

しかし、記憶はできても、実際に入力する場合は、入力ミスもあるでしょう。

そんな時には、標準モジュールに、ユーザー定義関数を作成しましょう。

クエリで年齢を求める 作業手順 その1 データベース確認


各年齢を、生年月日から求めます。

クエリで年齢を求める 作業手順 その2 DateDiff関数を使う

DateDiff関数は、2つの日時の間隔を求める関数です。

つまり、誕生日は、生まれた日から、今日までの間隔が、年齢です。

年単位で間隔を調べるときは、yyyyを利用してカウントします。

DateDiff関数は、年をまたいだ時に、1カウントします。

2021/01/01~2021/04/20は、年をまたいでいないため、カウントはされません。

本日の「月日」と生年月日の「月日」を比べる

本日の「月日」が生年月日より前ならDateDiff関数の戻り値から「1」を引きます。

走じゃなければ、そのままの戻り値を返します。

クエリで年齢を求める 作業手順 その3 標準モジュールにコードを仕込む

上のコードを参考に、下記のユーザー定義関数を作成します。

この場合、myDay、つまり、私の生年月日のmmddは、0126です。

本日のDateびmmddは、0417です。

0126>0417というように考えます。

この不等号は成り立たないので、myAge = DateDiff(“yyyy”, myDay, Date)となります。

また、2つ目のデータは、

1114>0417の不等号は、成り立つので、DateDiff(“yyyy”, myDay, Date) – 1となります。

クエリで年齢を求める 作業手順 その4 クエリにユーザー定義関数を仕込む

このように記載します。

この式なら、生年月日が、空白でもエラー表示を回避することができます。

クエリで、年齢を求める 作業手順 その5 余談

便利なユーザー定義関数を作成しても、それを、他人に受け入れられなければ、意味がありません。

別に、ユーザー定義関数を、その瞬間から教えるわけでもありません。


このような検索フォーム兼、入力フォームを作成しておけばいいのです。


ユーザー定義関数名と、利用例文を記載しておけば、皆が利用できるようになります。

これが、データベースです。


しかも、検索コードと、保存コードを合わせても、たったの4行です。

検索をするなら、Excelよりも、ACCESSのほうが全然楽なのです。

ここがポイント

ここがポイント
Function8.png
今回は、ユーザー定義関数について 説明しました。長い、SQL文を記載するなら、ユーザー定義関数を作成したほうが楽ですよね。最初は、身の丈に合ったコードを記載して、考えていくようになれば、複雑なユーザー定義関数を作成できるようになるでしょう。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

クエリで年齢を求める動画は、あまり紹介したことがありませんでした。

満年齢は現在の年齢であり誕生日で「年齢」を数える方法です。

数え年は「年齢+1歳」です。現在のように誕生日で歳を数えるのではなく、1月1日(2月4日)で歳を数えます。

大体、満年齢でいうしょうけど、お祝い事などは、数え年で言うかもしれません。

業務内容によっては、DateDiff関数の修正が必要かもしれません。

今回も最後まで読んでいただきありがとうございました。

 
今回のサンプルファイルは、No220です。

サンプルファイルを購入希望の方はココをクリック
ネットや基本書で調べるはやめてください

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事