MS ACCESS(へたれな)コネタ クエリとVBA間のDRY

ACCESSにおいて、クエリ内で使用する抽出条件と入力チェックなどVBAにて使用する条件記述はどうしてもDRY原則を守ることが難しくなります。たとえば、下記のようなテーブルが存在します。
f:id:ArappoCaro:20070704231655j:image
このデータから「おじさん」を抽出するロジックを、仮に「おじさん」を「埼玉県に住む40歳以上に人」と定義します。通常はクエリにて下記のように表現します。
f:id:ArappoCaro:20070704231806j:image
f:id:ArappoCaro:20070704233016j:image
f:id:ArappoCaro:20070704231915j:image
ここで、このテーブルにデータ投入する際に、入力チェックで「おじさん」である場合には警告を出すとします。ここで入力チェックVBAではクエリで表現したのと同じようなロジックを作成する必要があります。
そこで、「おじさん」を検出するロジックを、下記のようにパブリックの関数化しておきます。

Public Function Isおじさん(p出身地 As String, p生年月日 As Date) As Boolean
    Isおじさん = False
    If p出身地 = "埼玉県" Then
        If Int((Format(Date, "yyyymmdd") - Format(p生年月日, "yyyymmdd")) / 10000) >= 40 Then
            Isおじさん = True
        End If
    End If
End Function

このロジックは、もちろん入力チェックに使用できるとともに、クエリ内でも同じ関数を使用することができます。
f:id:ArappoCaro:20070704231943j:image
f:id:ArappoCaro:20070704232846j:image
よって、「おじさん」の定義が変更されても、この関数内を変更するだけで対応することができDRYを満足することになります。しかし、このやり方はあまり業務では使用されません。それは、パフォーマンスの低下が著しいということです。それじゃ、役に立たない無駄知識でね。でも、この考え方は重要であると思っています。