• ベストアンサー

アクセスのクエリの抽出条件について教えてください。

アクセス2002 平成20年10月1日の時点で、3歳以下の人を抽出したいです。 フィールドは、氏名・年号・生年・月・日に分かれています。 クエリ 氏名 年号 生年  月  日 A   平成 20   2  20 B   平成 17   9  30 C   平成 17  10   1 D   平成 17  10  31 E   平成 18   5   5 F   平成 19   4   7 G   平成 17  11  20 H   平成 20  10   1 I    平成 17  9   29 抽出したい人 氏名 年号 生年  月  日 A   平成 20   2  20 C   平成 17  10   1 D   平成 17  10  31 E   平成 18   5   5 F   平成 19   4   7 G   平成 17  11  20 H   平成 20  10   1 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.2

tab1: テーブル [ID]_[氏名]_[年号]_[生年]_[月]_[日] __1___A______平成_____10___10___10 __2___B______平成_____11___11___11 __3___C______平成_____12___12___12 クエリ1: クエリ [ID]_[氏名]_[生年月日] __1___A______1998/10/10 __2___B______1999/11/11 __3___C______2000/12/12 SELECT tab1.ID, tab1.氏名, CDATE([年号] & [生年] & "/" & [月] & "/" & [日]) AS 生年月日 FROM tab1; クエリ2: クエリ [ID]_[氏名]_[年号]_[生年]_[月]_[日] __1___A______平成_____10___10___10 __2___B______平成_____11___11___11 SELECT * FROM tab1 WHERE GetAge(Cdate([年号] & [生年] & "/" & [月] & "/" & [日]),CDATE("2005/10/1"))>4; 年齢そのものを抽出条件にするように GetAge関数で年齢を求めてみました。 [イミディエイト] ? GetAge(CDATE("2004/1/1"), CDATE("2004/12/31")) 0 ? GetAge(CDATE("2004/1/1"), CDATE("2005/1/1")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2005/2/27")) 0 ? GetAge(CDATE("2004/2/29"), CDATE("2005/2/28")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2005/3/1")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/27")) 3 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/28")) 3 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/29")) 4 Public Function GetAge(ByVal Birthday As Variant, ByVal Hiduke As Variant) As Long On Error GoTo Err_GetAge   If Month(Hiduke) = 12 Then     GetAge = DateDiff("yyyy", Birthday, Hiduke) + _        (Format(Birthday - 1 - (Day(Birthday) = 1), "mm/dd") > Format(Hiduke - (Day(Birthday) = 1), "mm/dd"))   Else     GetAge = DateDiff("yyyy", Birthday, Hiduke) + _          CDbl((Format(Birthday - (Day(Birthday) = 1), "mm.dd")) >= CDbl(Format(Hiduke + 1 - (Day(Birthday) = 1), "mm.dd")))   End If Exit_GetAge:   Exit Function Err_GetAge:   GetAge = -1   Resume Exit_GetAge End Function 【注意】GetAge関数は、たった今修正したばかり。(多分、未だ、不完全かと思います!)     ですから、上記の僅かに8件のテストしか行っていません。     仮に利用される場合は自己責任でお願いします。

g_girl
質問者

お礼

Husky2007様、親切な回答をありがとうございました。 Public Function GetAge は大変参考になりました。 わざわざ作成して頂き助かりました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

条件は生年月日が平成17年10月1日以降ということですね。 条件式は以下の通りです。 CDate(年号 & 生年 & "/" & 月 & "/" & 日) >= #2005/10/1#

g_girl
質問者

お礼

nda23様、回答をありがとうございます。 昨日も回答をして頂き、助かっています。 アドバイスを頂き「CDate関数」をネットで調べてみました。 分かりやすくて、使いやすいと思いました。

関連するQ&A