• ベストアンサー

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

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

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

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

tab1: [ID]_[社員_生年月日和暦] __1___H11/11/11 __2___H11/12/12 一応、Date()ではなく[現在日]というテキストボックスがあるとして。 =GetAge([社員_生年月日和暦],[現在日]) Public Function GetAge(ByVal Birthday As Variant, ByVal Hiduke As Variant) As Long On Error GoTo Err_GetAge   GetAge = DateDiff("yyyy", Birthday, Hiduke) _        + (Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd")) Exit_GetAge:   Exit Function Err_GetAge:   GetAge = -1   Resume Exit_GetAge End Function GetAge関数は、年齢計算不能の場合は負の値を戻します。 フォームで負の値は空に表示することを想定した関数です。 =IIf(Len([社員_生年月日和暦] & ""), _    DateDiff("yyyy",[社員_生年月日和暦],[現在日])+ _    (Format([社員_生年月日和暦]-1,"mm/dd")>Format([現在日],"mm/dd")),"") これは、GetAge関数と同じ手続きをコントロールソースに書いたものです。 この場合は、空値を代入します。

その他の回答 (1)

  • mumu_bb
  • ベストアンサー率50% (5/10)
回答No.2

長くなってしまいますが、 テキストボックスだけで済ませようとするなら、 前に IIf(IsNull([社員_生年月日和暦]),Null, を足して、最後に ) を追加。 =IIf(IsNull([社員_生年月日和暦]),Null,IIf(Format([社員_生年月日和暦],"mmdd")> Format(Date(),"mmdd"),DateDiff("yyyy",[社員_生年月日和暦],Date())-1,DateDiff("yyyy",[社員_生年月日和暦],Date()))) では、いかがでしょう?

関連するQ&A

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

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

  • 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回忌になってしまいます。 御命日が来なくても(御法事の申し込みは命日の数日、数か月前が多いので)今年の回忌を出させるにはどうしたらいいのでしょうか?

  • アクセス2000誕生日から満年齢出し方

    テーブルですが 最後の列が生年月日フォームなっています。 形式はyyyy/mm/ddです 友人に聞いてその回答は DateDiff("yyyy",[生年月日],Date())この式を クエリの生年月日フィールドの右側の空欄のフィールドへ入れるとでてくるよ。の回答で実行したら 式1:DateDiff("yyyy",[生年月日],Date())とでて クエリには 年齢がでてきました。 そこで 質問ですが テーブルに誕生日のフォームに生年月日打ち込むと 横の仮に「年齢」フォームに自動ででてくるようにするには どうしたらよいのでしょうか。 教えてください。

  • ACCESS97で現在の日付から勤続年月数を算出する関数

    ACCESS97で社員名簿を作っています。 現在の日付から年齢を算出する関数は調べたところ次のようにすればよいとわかりました。 IIf(Right(Format([生年月日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日],Now())-1,DateDiff("yyyy",[生年月日],Now())) 次は現在日から入社年月日フィールドにあるデータを使い、勤続年数○年○ヶ月というクエリーを作りたいのですが、○ヶ月を算出する応用がわからずに困っております。 どうかよろしくお願いします。

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

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

  • 生年月日計算結果が0才未満の場合、「未出生」と表示したい。

    タイトルだけをみると簡単そうなのですが、やってみてできなかった ので質問させて頂きます。 以前こちらでACCESSの表形式フォームで年齢計算結果を表示する 方法をご教示頂いたのですが(http://okwave.jp/kotaeru.php3?q=2096513)、 年齢計算結果が0才未満の場合、「-2才」などと表示されてしまいます。 0才未満の場合、「未出生」などと表示したいのですが、どのように すればよろしいでしょうか。非連結フィールドには現在、 =DateDiff("yyyy",[生年月日],[Forms]![詳細]![日付])+(Format([Forms]![詳細]![日付],"mmdd")<=Format([生年月日],"mmdd")) とだけ入っていて、これの頭にIF文をつけてみましたが、「name?」と なってだめでした。

  • 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がいいます。 お願いします。

  • Accessの入力について

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

  • アクセスでレポートに和暦を表示させるには

    アクセスで社員名簿を作成しています テーブルを 社員名  ○○○○ 生年月日 1953/09/18 生年月日 空欄 フォームは 社員名  ○○○○ 生年月日 1953/09/18 和暦   昭和28年09月18日      ↑生年月日を入力すると自動で表示されるようにしました レポートは 社員名  ○○○○ 生年月日 1953/09/18 和歴   空欄 上記で理解して頂けるか大変不安ですがフォームで和暦を手入力していないのでテーブルに反映しません それに伴ってレポートも表示されません どうしたらレポートへ和暦を表示することが出来るのでしょうか

  • Accessで誕生日から年齢を計算する

    Microsoft Office Updateで「Accessで誕生日から年齢を計算する」と言う項目があり、式がのっているのですが、フォームのコントロースロースに =Datediff("yyyy",[誕生日],now())+int(format(now(),"mmdd")<format([誕生日],"mmdd")) と入力するとあるのですが、式中にある"INT"の意味がわかりません。 この式でのINTは何を表しているのですか? よろしくお願いします。

専門家に質問してみよう