Accessの年齢関数について教えてください

このQ&Aのポイント
  • Accessのクエリーで、生年月日から年齢を算出する方法について教えてください。
  • 年齢を算出するための式を入力すると、生年月日が空白の場合にはエラーが表示される問題があります。
  • そのため、空白の場合にはエラーが表示されないようにする方法を教えてください。
回答を見る
  • ベストアンサー

Accessの年齢関数について教えてください

初心者です。 Accessのクエリーで、生年月日から年齢を算出したいです。 Year(Date())-Year([生年月日])-Abs(Format(DateAdd('d',-((Year([生年月日]) Mod 4=0 And Year([生年月日]) Mod 100<>0) Or (Year([生年月日]) Mod 100=0)),[生年月日]),'mmdd')>Format(Date(),'mmdd')) これをいれると、生年月日が空白のとき#Errorになります。 空白のときエラーが表示されないようにしたいです。 IIf(IsNull([生年月日])),"",Nz(Year(Date())-Year([生年月日])-Abs(Format(DateAdd('d',-((Year([生年月日]) Mod 4=0 And Year([生年月日]) Mod 100<>0) Or (Year([生年月日]) Mod 100=0)),[生年月日]),'mmdd')>Format(Date(),'mmdd'))) これでは、おかしいとAccessがいいます。 お願いします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

生年月日から年齢を計算する方法 http://support.microsoft.com/kb/881380/ja こちらの方法なら空白でも問題ありません。

maato_maat
質問者

お礼

できました~ ありがとうございました。

maato_maat
質問者

補足

生年月日の右となりに年齢の列をつくってこの方法もためしたのですが、式に未定義関数’[Right]’があります とエラーメッセージがでます。

関連するQ&A

  • アクセスで和暦から6月3日現在の年齢

    アクセスで和暦の生年月日から平成17年6月3日辞典の年齢をクエリで作成したいのですが、どうもうまくいきません。ちなみに現在まではわかるので、下記を改良すればいいとは思うのですが、よろしくお願いします。 年齢:IIf(Format([生年月日],"mmdd")>Format(Date(),"mmdd"),DateDiff("yyyy",[生年月日],Date())-1,DateDiff("yyyy",[生年月日],Date()))

  • ACCESS #errorの表示させないには・・・

    フォームで[現在年令](テキストボックス)に下記の設定がしてあります =IIf(Format([社員_生年月日和暦],"mmdd")>Format(Date(),"mmdd"),DateDiff("yyyy",[社員_生年月日和暦],Date())-1,DateDiff("yyyy",[社員_生年月日和暦],Date())) 新規の登録をする場合には[社員_生年月日和暦]が空欄のため[現在年令]に#Errorと表示されてしまいます [社員_生年月日和暦]が空欄の場合は[現在年令]も空欄にしたいのでどうすればいいか教えてください どうぞ宜しくお願いします

  • Accessの入力について

    Accessのクエリに生年月日から年齢を計算する演算フィールドを作りたいと思い本の通り計算式を入力したのですがうまくいきません。 年齢:Fix(Format(date(),"yyyy.mmdd")-Format([生年月日],”yyy。mmdd”))で間違いないのでしょうか? 疑問点は  ”の使用が合っているのか?です。 その他エラーになりそうな事がありましたら、教えてください。 また、式ビルダを起動した時、生年月日の隣のフィールドに入力しないとエラーが出るのでしょうか? 現在の生年月日の隣のフィールドは他の名前のクエリになっています。(間に入れる方法が分かりません)

  • 2つの年月日の間の日数を求めるプログラム(PASCAL)

     大学の講義で、「2つの年月日を入力し、その年月日の間の日数を求めるプログラムを作成しなさい」という宿題が出たので、下のようにプログラムを作成したところ、…63(最後の行):parse error before '.'というエラーが出たのですが、なぜそのようなエラーが出るのかがわかりません。どう改善すべきか、アドバイスをお願いします。 program ex13(input,output); var year1,year2:1..9999; month1,month2:1..12; y1,y2:1..9999; m1,m2:1..12; d1,d2:1..31; n1,n2:1..9999999; begin writeln('question 13'); writeln('Please key the old date.'); write('Y: '); read(y1); write(' M: '); read(m1); write(' D: '); readln(d1); writeln('Please key the new date.'); write('Y: '); read(y2); write(' M: '); read(m2); write(' D: '); readln(d2); for year1:= 1 to y1 do begin if ((year1 mod 4 = 0) and not (year1 mod 100 = 0)) or (year1 mod 400 = 0) then n1:=n1+366 else n1:=n1+365 end; for month1:= 1 to m1 do begin case month1 of 3,5,7,8,10,12,1: n1:=n1+31; 4,6,9,11: n1:=n1+30; 2: if ((y1 mod 4 = 0) and not (y1 mod 100 = 0)) or (y1 mod 400 = 0) then n1:=n1+29 else n1:=n1+28 end; n1:=n1+d1; for year2:= 1 to y2 do begin if ((year2 mod 4 = 0) and not (year2 mod 100 = 0)) or (year2 mod 400 = 0) then n2:=n2+366 else n2:=n2+365 end; for month2:= 1 to m2 do begin case month2 of 3,5,7,8,10,12,1: n2:=n2+31; 4,6,9,11: n2:=n2+30; 2: if ((y2 mod 4 = 0) and not (y2 mod 100 = 0)) or (y2 mod 400 = 0) then n2:=n2+29 else n2:=n2+28 end; n2:=n2+d2; writeln('Ans.',n2-n1); end.

  • 【ACCESS】未定義関数が発生。「最適化/修復」で戻ります。

    ACCESSのモジュールで「生年月日」から「年齢」を計算させるために、以下のコードを使用しています。 ----------------------------------------------- Function 年齢(生年月日) As Integer If IsNull(生年月日) Then 年齢 = 0: Exit Function 年齢 = DateDiff("yyyy", 生年月日, Date) If Date < DateSerial(Year(Date), Month(生年月日), Day(生年月日)) Then 年齢 = 年齢 - 1 End If End Function ----------------------------------------------- 通常は普通に使えているのですが、時々「未定義関数"年齢"があります」と出てしまいます。 それを「ツール」→「ユーティリティ」→「最適化/修復」すると普通に使えるようになるのですが、しばらくすると上記メッセージが出て、また繰り返してしまいます。 原因がわからず対処策も立てられない状態です。 お知恵をお貸し頂けると幸いです。

  • Access2000にてお寺の管理dbを作っています。御法事の回忌を抽

    Access2000にてお寺の管理dbを作っています。御法事の回忌を抽出したくテーブルに没年月日、回忌のフィールドを作りクエリの回忌のフィールドに回忌:IIF(Format([没年月日],"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",[没年月日],Date())-1,DateDiff("yyyy",[没年月日],Date()))と回答をいただき 回忌:IIF(Format([没年月日],"mm/dd")<Format(Date(),"mm/dd"),DateDiff("yyyy",[没年月日],Date())+1,DateDiff("yyyy",[没年月日],Date())) >を< -1を+1 にしてできたのですが。 Date()ですと今年の御命日が来るまでは50回忌のひとでも49回忌になってしまいます。 御命日が来なくても(御法事の申し込みは命日の数日、数か月前が多いので)今年の回忌を出させるにはどうしたらいいのでしょうか?

  • Accessの関数の「$」について

    Accessの関数で、dateとdate$、FormatとFormat$、ErrorとError$等「$」記号がついたものとついていないものがありますが、この違いがわかりません。 おわかりになる方、教えてくださいませ。

  • oracle10g へ、アクセスでつないで モジュール上でプログラミン

    oracle10g へ、アクセスでつないで モジュール上でプログラミングをしています。 オラクルDB上のデータ型は"date"なのですが、(例:2007/03/09 12:23:42)、 アクセスのモジュール上に組んだSQLで、 stSQL = "select ID " _ & "from xx.DBNAME " _ & "where KOUSIN_DATE between " & ototoi & " and " & honzitu & "" のように記載しています。 そして、ototoiに入れるデータは ototoi = DateAdd("d", -2, Now) のパターンと ototoi = Format(DateAdd("d", -2, Now), "yyyymmdd") のパターンの2通りでためしてみたのですが、 どちらもうまくいきませんでした。 どうしたらSQLがうまくデータを拾ってこれるでしょうか?? 漠然とした質問で申し訳ありませんが、宜しくお願いします。

  • ACCESS 関数複数条件の設定を教えてください。

    ACCESSで下記のようにしたいです。 Excelでいうと、A列、B列、C列があり A列、B列には文字または空白・C列には必ず文字が入っています。 A1に文字があれば、A1の文字を表示 A1が空白ならば、B1の文字を表示 B1も空白ならば、C1の文字を表示 としたいです。 Excelだったら下記のようにすればできました。 =IF(AND(A1="",B1=""),"Wkn-"&C1,IF(A1="",B1,A1)) ACCESSで下記のように書いてみましたが、A1が空白B1に文字がある場合のみB1が表示され他は全部空白になってしまいます。 IIF(IsNull([A1]) AND IsNull([B1]),[C1],IIF(IsNull([A1]),[B1],[A1])) どのように書けばいいのでしょうか。 教えてください。よろしくお願いします。

  • Access2000にてお寺の管理dbを作っています。御法事の回忌を抽

    Access2000にてお寺の管理dbを作っています。御法事の回忌を抽出したくテーブルに没年月日、回忌のフィールドを作りクエリの回忌のフィールドに回忌:IIF(Format([没年月日],"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",[没年月日],Date())-1,DateDiff("yyyy",[没年月日],Date()))としたのですがコーテーションエラーになってしまいます。 どのようにしたらいいのでしょうか? 回忌ですから亡くなった翌年が1周忌2年目が3回忌になります。

専門家に質問してみよう