#556 サブフォームの集計値が取得できないときの#エラーの対処法 フォーム

下図のフォームでは、サブフォームのフォームフッターで「税抜金額」・「消費税額」・「税込金額」をSum関数によって求めています。
ただしこのサブフォームはデータシート形式になっているため、フォームフッターの内容は実行時には画面に表示されません。そこで、そのコントロールの値をメインフォーム側で参照し、メインフォーム上に表示するようにしています。
サブフォームを参照するデザイン

メインフォーム側の3つのコントロール(画面右下)では、「コントロールソース」プロパティを次のように設定してあります。「frm売上明細_sub」がサブフォームのコントロール名で、サブフォーム内のコントロールを参照していることが分かります。
  • 税抜合計:  =[frm売上明細_sub]![税抜合計]
  • 消費税合計:  =[frm売上明細_sub]![消費税合計]
  • 税込合計:  =[frm売上明細_sub]![税込合計]

これを実行すると次のようになります。
実行時の画面


通常はこれで問題ないのですが、サブフォームのコントロールソースとなっているクエリの作りや、フォームフッターの関数式などによっては、状況によって集計結果の値が「#エラー」という表示になってしまうことがあります。たとえば上記のフォームでは、サブフォームのデータが1件もないとそのような表示になります。
#エラーが表示された画面

これは、その算式自体がエラーとなっていることを示しているもので、このような表示になる可能性があるときには、「エラーが発生しているかどうかをチェックして、エラーでなければその計算結果を表示し、エラーなら何も表示しない(Nullなどを表示する)」という算式を設定することで回避することができます。

具体的には、メインフォーム側の3つのコントロールの「コントロールソース」プロパティを次のように変更します。
  • 税抜合計:  =IIf(Not IsError([frm売上明細_sub]![税抜合計]),[frm売上明細_sub]![税抜合計],Null)

  • 消費税合計:  =IIf(Not IsError([frm売上明細_sub]![消費税合計]),[frm売上明細_sub]![消費税合計],Null)

  • 税込合計:  =IIf(Not IsError([frm売上明細_sub]![税込合計]),[frm売上明細_sub]![税込合計],Null)

ここでは、「IsError関数」でエラーかどうかの判定を行い、「IIf関数」でエラーかどうかに応じて分岐処理を行っています。

これを実行すると次のようになります。今度は「#エラー」は表示されず空欄(Null表示)となっています。
#エラーが表示されない画面


参考Tips:「#547 割り算の分母がゼロのとき#エラー表示を回避するには?」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved