Access実践入門 TOPへ


 ■ マイクロソフトアクセス、関数を自作する
@組込済みの関数

Accessに最初から組み込まれている関数は、どこからでもすぐに使えます

たとえば、次のようなもの

Me![西暦]=DateValue("平成24年10月05日")

(文字列で指定された日付から日付を求めます)

このように書くと、


西暦というコントロールに、2012/10/5、と表示されます

あるデータを関数に渡して、そこで何か仕事をさせて、その答えを返すのが関数です

関数を自作することで、とても便利に使えます




A関数を自作する

和暦で生年月日を入力すると、
生年月日を西暦で表示して、年齢も表示する
という、関数を作ってみます



和暦の生年月日を入力して、表示というボタンをクリックすると、

下の2つに、結果を表示します







B自作関数の内容

上記で使っている、フォームの「表示」ボタンの「クリック時」に

次のように書いています

---------------------------------------------------
Private Sub 表示_Click()

Me![西暦生年月日] = Seirekiprint(Me![生年月日和暦], Me![生年月日和暦年月日])

Me![年齢] = Ageprint(Me![生年月日和暦], Me![生年月日和暦年月日])

End Sub
---------------------------------------------------

上は、西暦の生年月日が戻ってくる関数です
Me![生年月日和暦]とMe![生年月日和暦年月日]の2つの
文字列を関数に渡しています

下は、今現在の年齢が戻ってくる関数です
Me![生年月日和暦]とMe![生年月日和暦年月日]の2つの
文字列を関数に渡しています

処理をしてくれる関数は、モジュールに登録します




モジュールに次の2つの関数を登録しています

---------------------------------------------------
Public Function Seirekiprint(reki As String, nengetu As String)

Dim seireki As Date

seireki = DateValue(reki & nengetu)

Seirekiprint = seireki

End Function
----------------------------------------------------

2つの文字列を受け取って、

日付型の変数に答えを入れて、

値を返しています






---------------------------------------------------
Public Function Ageprint(reki As String, nengetu As String)


Dim seireki As Date
Dim nenrei As Integer

seireki = DateValue(reki & nengetu)

nenrei = IIf(Format(Date, "mmdd") >= Format(seireki, "mmdd"), DateDiff("yyyy", seireki, Date), DateDiff("yyyy", seireki, Date) - 1)

Ageprint = nenrei

End Function
---------------------------------------------------

2つの文字列を受け取って、

まず、西暦の誕生日を変数に入れる
(1つ目の自作関数を使っています)

その西暦の誕生日を見て、今現在の年齢を計算します
(内容は関数リファレンスを参照してください)

整数の変数に答えを入れて、

値を返しています




Cクエリでの使用

次のようなテーブルがあります




クエリで自作関数を使います






クエリの実行結果です