重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Access初心者です。
テーブルに"19851215"、"19860202"のように西暦と月日が連続したデータとなってるデータが保存されているとします。
クエリーで、現在の年齢に変換して表示させようと思っているのですがうまくできません。どなたか、詳しい方がいらっしゃいましたら教えてください。よろしくお願いいたします。

A 回答 (4件)

作業フィールドを使う形で。


提示の文字列の格納されているフィールド名を[DtTxt]とします。
順に「文字列を日付として認識できる形に変換」、「数え年齢」、「満年齢」です。
Brthdy: DateValue(Format([DtTxt],"0000\/00\/00"))
thYr: DateDiff("yyyy",[Brthdy],Now())
Ag: IIf(Format([Brthdy],"mmdd")<Format(Now(),"mmdd"),[thYr]-1,[thYr])

#CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。
    • good
    • 0
この回答へのお礼

返答有難うございます。
早速試してみたところうまくいきました。作業フィールドを変数のように使えば出来るのですね?本当に有難うございました。今後とも宜しくお願い致します。

お礼日時:2007/05/28 11:53

>CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。



括弧がおかしかったみたいですね

修正です(今度はテスト済みです)

年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4)>Format(Date(),"mmdd")) & "才"
    • good
    • 0
この回答へのお礼

実は、私も試してみたところ括弧の数が多いとAccessに怒られて、うまくいかずに悩んでいたのです。
訂正版を現時点ではためしていませんが、帰宅したら早速試してみたいと思います。
本当に有難うございました。今後とも宜しくお願い致します。

お礼日時:2007/05/28 11:56

>"19851215"、"19860202"


はAccessにとっては単なる数字で日付ではありませんから
関数で日付に変換してやらなければなりません

フィールド名が誕生日だとして

年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4))>Format(Date(),"mmdd")) & "才"
    • good
    • 0

テーブルのフィールド名を生年月日に、データ型を日付/時刻型にしておきます。


クエリのデザインで、年齢:DateDiff("yyyy",[生年月日],Date())としたら、現在の年齢が表示されます。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
今回は、既にデータが入っていたので、データ型を変えようとしたところデータが失われるとAccessに怒られたので、泣く泣く諦めました。
次回からは、試してみたいと思います。
今後とも宜しくお願い致します。

お礼日時:2007/05/28 11:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!