クエリでエラーを表示させない

 エラーの表示が見えなくなるだけで、値はあくまでエラーですので実用性はほとんどありません。ご了承ください。

 さて、クエリで発生するエラーはなかなか凶悪です。IIf関数でNullや0に変換しようとしても、評価式がエラーと評価されてしまった時点で戻り値がエラーになってしまうため、エラーの原因を突き止めたうえで、そもそも式の結果がエラーとならないよう対策をしなければなりません。Nullもなかなか厄介ですがIIf関数やNz関数で任意の値に変換できることを考えれば、エラーの方が比較にならないぐらい厄介といえます。

f:id:accs2014:20180116003859p:plain:right:w400

 ただ、表示させないことは可能です。例としてこのようなテーブルを用います。


f:id:accs2014:20180116003856p:plain:right:w400

 上記のテーブルに基づきクエリを作成し、次のような列を設けます。

勝率: [勝数]/[試合数]


f:id:accs2014:20180116003851p:plain:right:w400

 デザインビューで見てみますと、エラーが発生しています。
 ゼロ除算が発生していることによるものですので、これらのエラーを発生させたくない場合、本来なら

勝率: IIf([試合数]=0,Null,[勝数]/[試合数])

 などとするところです。試合数の値が0であれば「[勝数]/[試合数]」という式は評価されず、エラーは発生しません。


f:id:accs2014:20180116010352p:plain:right:w400

 しかし、エラーの原因がわからなかったり、式を変えたくないことも考えられますので、ここではあくまでエラーはエラーのまま、表示させないようにしてみます。
 デザインビューで、式を記入してある列を選択して右クリックしプロパティシートを開きます(なかなかこのようなプロパティシートが現れないことがあるように思いますが、クエリを開き直すなどしてやり直してみてください)。そして、ルックアップタブにあるプロパティを次のように設定します。

・「表示コントロール」…「コンボボックス」(「リストボックス」でもいいです)
・「連結列」…「2」(3以上でもいいです)

 そしてデータシートビューで開くと…


f:id:accs2014:20180116003845p:plain:right:w400

 エラーは表示されません;-o-)
 ただし見えないだけで値はエラーですので、この列を参照するような列を作ってもエラーはエラーにしかなりません。値を選択するとスクロールバー(vマーク)が出るのもちょっとカッコ悪いです。結局のところ実用性はほとんどありませんが、参考まで。