- ベストアンサー
ACCESS #errorの表示させないには・・・
フォームで[現在年令](テキストボックス)に下記の設定がしてあります =IIf(Format([社員_生年月日和暦],"mmdd")>Format(Date(),"mmdd"),DateDiff("yyyy",[社員_生年月日和暦],Date())-1,DateDiff("yyyy",[社員_生年月日和暦],Date())) 新規の登録をする場合には[社員_生年月日和暦]が空欄のため[現在年令]に#Errorと表示されてしまいます [社員_生年月日和暦]が空欄の場合は[現在年令]も空欄にしたいのでどうすればいいか教えてください どうぞ宜しくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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)
長くなってしまいますが、 テキストボックスだけで済ませようとするなら、 前に IIf(IsNull([社員_生年月日和暦]),Null, を足して、最後に ) を追加。 =IIf(IsNull([社員_生年月日和暦]),Null,IIf(Format([社員_生年月日和暦],"mmdd")> Format(Date(),"mmdd"),DateDiff("yyyy",[社員_生年月日和暦],Date())-1,DateDiff("yyyy",[社員_生年月日和暦],Date()))) では、いかがでしょう?