• ベストアンサー

Access レポート オーバーフローとデータ型の不一致

レポートでグループ化したフッターに平均を求めるためにAvg関数で 平均を求めようとしたのですが、オーバーフローやデータ型の不一致が 発生してしまい平均を求めることが出来ません。 (Access2003) クエリでの計算時に#エラーが発生しているのと平均する内容にNULL値が含まれるのが原因だと思いますが、 どのような対処をすればよいでしょうか? #エラーに関しては0/0が原因だと思うので計算対象の0をNULLにすればよいですが NULLだとデータ型の不一致が発生してしまうのですかね? 平均する内容はレコードすべてがNULLの場合や#エラーが含まれる場合があります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

tab1: ID__区分__値 01_____1__\100 02_____1__\200 03_____1 [イミディエイト] ? DBAvg("値", "tab1", "区分=1") 150 ? DBAvg("Nz(値)", "tab1", "区分=1") 100 ですから、通常はエラーではなく150と異なった平均値で表示されると思いますが・・・。 実際、レポートウィザードで[区分フッター]に平均を生成すると、 =Avg([値]) となり 150 と表示されます。 =Avg(Nz([値])) で 100 と正しく表示されます。 >オーバーフローやデータ型の不一致が発生してしまい平均を求めることが出来ません。 となると、起きている現象が今一つ推測しかねます。

sskj
質問者

お礼

ありがとうございます。 オーバーフロー及びデータ型の不一致に関しては自己解決しました。 データ型の不一致に関しては♯エラーが文字として扱われているためと 実際にデータ型が間違っている箇所もありました。 オーバーフローに関しては♯エラーをNULL値に置き換えることによって 解消されました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>クエリでの計算時に#エラーが発生しているのと >平均する内容にNULL値が含まれるのが原因だと思いますが、 エラーは中身を見ないとなんともいえませんが Nullは関係ありません。集計関数はNullを除いて集計してくれます >平均する内容はレコードすべてがNULLの場合や#エラーが含まれる場合があります。 全てがNullの場合はNullになります エラーがある場合はエラーになります エラーは出なくなるようにするしかないですね

sskj
質問者

お礼

ありがとうございます。 オーバーフロー及びデータ型の不一致に関しては自己解決しました。 集計関数はNull値を無視するのですか、知りませんでした。 オーバーフローに関しては♯エラーをNULL値にしたところ 解消されました。

関連するQ&A