- ベストアンサー
アクセスのクエリの抽出条件について教えてください。
アクセス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 よろしくお願い致します。
- みんなの回答 (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件のテストしか行っていません。 仮に利用される場合は自己責任でお願いします。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
条件は生年月日が平成17年10月1日以降ということですね。 条件式は以下の通りです。 CDate(年号 & 生年 & "/" & 月 & "/" & 日) >= #2005/10/1#
お礼
nda23様、回答をありがとうございます。 昨日も回答をして頂き、助かっています。 アドバイスを頂き「CDate関数」をネットで調べてみました。 分かりやすくて、使いやすいと思いました。
お礼
Husky2007様、親切な回答をありがとうございました。 Public Function GetAge は大変参考になりました。 わざわざ作成して頂き助かりました。