• ベストアンサー

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

専門家に質問してみよう