• 締切済み

アクセスでレポートを作成しましたが、前年比の計算で0割りでエラーがでて

アクセスでレポートを作成しましたが、前年比の計算で0割りでエラーがでてしまいます。 ボックスで=IIf([前期売上の合計]=0,Null,[前期売上の合計]/[前々期売上の合計]*100)と してみましたが駄目でした。NULLが聞いていないようですがなぜでしょか? 解決方法を教えてください。 (クエリで先に前年比を出さないと駄目ですかね?)

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> NULLが聞いていないようですがなぜでしょか? ご質問の文では、IIF関数の第1引数で「0かどうか」を 確認しているのは「分子」にあたる「[前期売上の合計]」に なっていますが、0による除算のエラーを回避するのでしたら、 ここは分母の「[前々期売上の合計]」の方で切り分ける 必要があります。 ともあれ、「分子・分母のどちらかが0の場合は空白表示」 という仕様でよければ、以下の式をレポートのテキストボックス に設定すれば、目的は果たせるかと思います: IIF([前期売上の合計]*[前々期売上の合計], [前期売上の合計]/[前々期売上の合計]*100, Null) ※第1引数は、結果が0以外の場合は成立した(=True)と  みなされるため、第2引数に指定した式が有効になります。  どちらかの合計が0の場合は、その積算は0になるので、  第3引数に指定した値(=Null)が有効になります。 なお、No.1の方の回答にもあるように、IIF関数は双方の 演算結果がまず確認されますが、レポートのテキストボックス 上であれば、とりあえず最終結果が表示されるようです。 (これが、VBA上での演算になるとエラーが発生するという、  なんともわかりづらい状況・・・) だいぶ以前に回答した際には、私もそこを混同したまま 回答していましたが(汗) http://okwave.jp/qa/q4041631.html

回答No.2

計算式は問題ありませんよ。 私の場合もエラーが出ました。 一度クエリーで計算式を入力し確認後コピーしテキストボックスへ貼り付けるとうまく行きました。 ?? 時間の関係上シュミレーション、検証は出来ませんでした。

回答No.1

こんにちは IIF関数はショートサーキットじゃないので・・・。 両方評価してから結果を出します。 なので、ご希望の動作をせず、0割でエラーになってしまいます。