レポートのモジュールにおいて、レポートのレコードソース上のフィールドを直接参照しようとするとエラーとなる場合があります。
たとえば、詳細セクションのフォーマット時イベントにおいて、「単価」フィールドの値と「数量」フィールドの値を演算してその結果をテキストボックス「txt金額」に代入する次のような式を実行するとします。
Me!txt金額 = [単価] * [数量]
このとき、単価と数量のフィールドをコントロールソースとするコントロールがレポートデザイン上に配置されていれば問題ありませんが、コントロールとして存在していない場合、参照できずにエラーとなります。フォームの場合とは異なり、レポートでは、レコードソース上のフィールドをVBAから直接参照することができないためです。
これを回避するためには、VBAで参照するすべてのフィールドを、それをコントロールソースとするコントロールとしてデザイン上に配置するようにします。もしそれが印刷されては困るような場合には、コントロールの可視プロパティを"いいえ"に設定することによって帳票の外見上は出力されないようになります。
次の例では、商品コードと数量を通常の可視コントロールとして配置し、単価を非可視のテキストボックスとして配置しています。さらに「txt金額」という非連結のテキストボックスを用意し、そこにはVBAで値を設定しています。
レポートのデザイン:
イベントプロシージャ:
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Me!txt金額 = Me!単価 * Me!数量
End Sub
実行結果:
 |