Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
クエリのIIFで「#エラー」と表示される
投稿日時: 22/10/06 09:57:42
投稿者: rose11

お世話になります。
よろしくお願いいたします。
  
クエリを作成しております。
以下のような表から、「誕生日からの日数」フィールドへ計算結果を表示させたく
四苦八苦しております。
 
【対象のテーブル】
A            年月        対象年月     誕生日からの日数
--------------------------------------------------------------------
誕生日     1997/8/1     2016/8/1    
就職日     2017/4/1     2016/8/1    
離職日     2022/3/31     2016/8/1    
           
 
【実施したこと】
 
「誕生日からの日数」のフィールドのビルドで以下を設定しました。
 
誕生日からの日数:IIf([A列]="誕生日" AND CDate([対象年月])-CDate([年月])>=0,CDate([対象年月])-CDate([年月])+1,
    IIF([A列]="誕生日" AND CDate([対象年月日])-CDate([年月])<0,CDate([対象年月])-CDate([年月]),""))
    
※読みづらく、申し訳ありません。実際には改行はいれておりません。
 
【結果】
[A列]の値が「誕生日」の場合は正しく計算されます。
ただ、[A列]の値が「誕生日」以外のときは「誕生日からの日数」フィールドは空欄にしたいのですが、「#エラー」と表示されてしまいます。
 
 
A            年月        対象年月     誕生日からの日数
--------------------------------------
誕生日     1997/8/1     2016/8/1    6941
就職日     2017/4/1     2016/8/1    #エラー
離職日     2022/3/31     2016/8/1    #エラー
 
 
どこが悪いのか、ご教示いただけますでしょうか。
  
どうぞよろしくお願いいたします。

回答
投稿日時: 22/10/06 10:42:48
投稿者: sk

引用:
IIf([A列]="誕生日" AND CDate([対象年月])-CDate([年月])>=0,
    CDate([対象年月])-CDate([年月])+1,
    IIF([A列]="誕生日" AND CDate([対象年月日])-CDate([年月])<0,
        CDate([対象年月])-CDate([年月]),
        ""))

IIf([A列]="誕生日" AND CDate([対象年月])-CDate([年月])>=0,
    CDate([対象年月])-CDate([年月])+1,
    IIf([A列]="誕生日" AND CDate([対象年月])-CDate([年月])<0,
        CDate([対象年月])-CDate([年月]),
        Null))
 
-------------------------------------------------------------------------
 
(別解)
-------------------------------------------------------------------------
 
IIf([A列]="誕生日" And IsDate([対象年月]) And IsDate([年月]),
    DateDiff("d",CDate([年月]),CDate([対象年月]))-(CDate([年月])<=CDate([対象年月])),
    Null)
 
-------------------------------------------------------------------------

投稿日時: 22/10/06 13:05:37
投稿者: rose11

skさん
 
早々のご教示をありがとうございました!
おかげさまで解決いたしました。
また、スマートなIIf文、尊敬です、勉強になりました。
 
本当にありがとうございました。