アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessでレポート及びその元になるクエリを作成中なのですが
前年比を並べ替えしようとすると0で除算してしまいます。

これは前年比の計算対象の数値に0が含まれるのが不味いと思い
IIFで""にしたのですが今度は抽出条件でデータ型が一致しません。

計算した前年比を降順したいのですが方法は無いでしょうか?

A 回答 (3件)

> IIFで""にしたのですが今度は抽出条件でデータ型が一致しません。



IIF関数では、第1引数の結果に関係なく、第2引数と第3引数の演算が行われますので、
第2引数(または第3引数)のエラーの回避には使えません。
(「IIF([前年]=0, "", [今年]/[前年])」とした場合であっても、「[前年]=0」のデータがあると
 第3引数がエラーとなるため、式全体としてもエラーが返されます)

クエリ内で、エラーを含むフィールドでの結合や並べ替え、絞り込みを行うと「データ型が
一致しません」というエラーメッセージが返されますが、これは、「エラー」というのが、
並べ替えなどのできない、特殊なデータ型のためだと思います。


ですので、「前年データが0のもののクエリ」と「前年データが0にならないもののクエリ」を
作成した上で、これらを合わせた形のユニオンクエリを作成して、これをレポートのレコード
ソースにすることを、代替案として提案します。


<イメージ>
クエリ1:
Select ID, "(前年なし)" As 前年比 From テーブル1;

クエリ2:
Select ID, [今年]/[前年] As 前年比 From テーブル1;

クエリ3:
Select * From クエリ1
Union Select * From クエリ2
Order By 前年比 Desc;

(データの内容によっては、「Union」の代わりに「Union All」にした方がいいかもしれません)
    • good
    • 0

#1です。


表示するときにゼロが煩わしいなら、表示書式で「#0.00;-#0.00;-」で、
できませんかね。
    • good
    • 0

エクセルで培った悪しき習慣が出てしまいましたね。


Iif(Nz(前年実績,0)=0,0,本年実績/前年実績)
で良いのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!