「レポート作成の第一歩」の節ではラベルコントロールを使いレポートに文字を表示してみましたが、レポートには文字だけではなく、図形や画像、さらにはWordやExcelのファイルの内容を表示することもできます。ただ、そのためには目的に応じた適切なコントロールを選択する必要があります。
以下ではレポートに置くことができる各種のコントロールのうち主なものについて機能を説明していきます。
レポートに置くことができるコントロール
レポートデザインの画面で「デザイン」タブを選択すると、各種コントロールのアイコンが並んでいるのが見えます。表示されているのは全体の一部に過ぎませんので、このボックスの右下の部分をクリックしてみましょう。
レポートで使用できるコントロールが全て表示されます。ただし、左上の矢印は設置したコントロールの選択用ですので、残る20種が実際に設置できるものということになります。
主要なコントロール
上記のコントロールのうち実用上重要なものについて紹介します。なお、9種のコントロール(ボタン、タブコントロール、ハイパーリンク、オプショングループ、コンボボックス、トグルボタン、リストボックス、チェックボックス、オプションボタン)については、配置することはできますが操作することができず、特にメリットがないため省略します。
テキストボックス
最も多用される重要なコントロールです。「="文字列"」という形式で入力することによって単純に文字を表示させることができます。ただし、文字を表示させるだけなら次に紹介するラベルの方が簡単ですし、テキストボックスを置くとラベルが一緒についてくる(右画像参照)ことからも、単に文字列だけを表示するのはテキストボックスの本来の使い方ではないのかもしれません。
ではなぜこのテキストボックスが重要なのかというと、テーブルやクエリにある列(フィールド)の内容を読み込んで表示させることができるためです。具体的には、レポートのレコードソース(データの参照先)としてテーブルやクエリを指定したうえで、テキストボックスのプロパティの「コントロールソース」で列名を指定すると、その列に記録されている文字列(あるいは数字等)を繰り返し(レコードの数だけ)表示させることができます。
ラベル
単に文字のみを表示するコントロールです。テキストボックスでも文字の表示が可能なので、そちらで代用されることも多いです。ただし、ラベルには、他のコントロールと関連付けることができるという特徴があります。ラベルと、ラベルに関連付けられたコントロールのどちらかを移動させると、もう一方も一緒に移動するようになります(Wordにおける図形のグループ化のようなものです)。このことから、テキストボックス等の表題として使用されることが多いです。そもそも、テキストボックス等を配置した際にはラベルがついてきます(ラベルのみ削除することも可能です)。
改ページの挿入
これをレポートに置くとレポートの左端に水平の点線が表示され、印刷(プレビュー)の際にはその高さで改ページされます。後でみるように各種のヘッダーやフッター、詳細の前後で改ページを行うことが可能なので、使う機会はそれほど多くないかもしれません。
グラフ
棒グラフ、折れ線グラフなどのグラフを表示することが出来ます。Excelのグラフと比べてあまり使われないようにも思われますが、使い方によっては効果的なコントロールです。データの元となるテーブルまたはクエリがないと置くことが出来ないコントロールですので、詳細は改めて説明します。
直線
直線を配置することができます。マウスのドラッグにより始点と終点を指定します。Shiftキーを押しながらドラッグすることで水平(高さ0)もしくは垂直(幅0)の線をひくこともできます。
プロパティを変更することにより点線や破線にしたり太さを変えることもできます。
四角形
四角形を配置することができます。マウスのドラッグにより左上隅と右下隅(または右上隅と左下隅)を指定します。
基本的にレポートに配置することが出来る図形は直線と四角形のみであり、レポートの図形装飾に関する機能は大変寂しいものです。ただし、どうしてもハートマークや角丸四角を描きたいという場合はExcelのオートシェイプをコピーペーストするという方法もあります。
非連結オブジェクトフレーム
レポート上でWordやExcel、PowerPointなどの内容を編集し表示することができるという、少々特殊なコントロールです。
このコントロールをレポート内に置こうとすると、右のようなウインドウが現れます。ここで例として「Microsoft Excel ワークシート」を選択して「OK」をクリックしてみます。
するとレポート上に(小さいながらも)Excelのシートが現れ、編集することが出来ます。もちろん、Excelの関数や書式を利用することも出来ます。
編集を終える(コントロールの外部をクリック)と、このような表示になります。
さて、表示しようとするオブジェクトはレポート上で1から編集しなくとも、既存のファイルを読み込むことができます。先ほどのウインドウに戻って「ファイルから」をクリックするとウインドウはこのように変化します。そこで「参照」をクリックして…
ファイルの内容が読み込まれて表示されます。このオブジェクトは(ダブルクリックして)さらに編集することが出来ます。
なお、元のファイルを変更してもこのオブジェクトには反映されません。また、このオブジェクトの方をさらに編集しても元のファイルには反映されません。つまりコピーペーストしたものと同じで、全く別個の存在として扱われます。
そうではなく元のファイルとの整合を保ちたい、つまり元のファイルとリンクしたいという場合は、先ほどのウインドウでファイルを選択する際に「リンク」にチェックを入れておきます。
置かれたオブジェクトの見た目は先ほどと変わりませんが、ダブルクリックすると…
Excelにより元のファイルが開かれ、これを編集した結果は非連結オブジェクトにも反映されます。Accessを使わずExcelで元のファイルを直接開いて編集しても同様に反映されます。
ちなみに、先ほどのようにファイルとリンクしない非連結オブジェクトを置いた場合、そのプロパティのうち「OLEタイプ」の値は「埋め込み」となります。また、ファイルとリンクさせた非連結オブジェクトの「OLEタイプ」の値は「リンク」となります。プロパティ画面上からこの値を変更することはできませんので、ファイルとリンクしていない非連結オブジェクトをファイルとリンクさせようとしてもできません(「OLE元ファイル名」プロパティを設定してもうまくいきません)。非連結オブジェクトを新たに置きなおす必要があります。
さて、非連結オブジェクトフレームの「非連結」とは、テーブルやクエリのレコードの内容と結びついていない、ということを意味します。非連結オブジェクトフレームで表示することが出来るのは、上記のようにデザインビュー上で作成したオブジェクトや、ディスク上に記録された他のファイルのみであり、テーブルやクエリに記録されているWord等のファイルを表示することはできません。テーブルやクエリに記録されているファイルをオブジェクトとして表示したい、という場合は、下記の「添付ファイル」や「連結オブジェクトフレーム」を利用することとなります。
添付ファイル
テーブルやクエリに添付ファイル型として記録されているファイルを置くことが出来ます。テキストボックスと同様に、レポートのレコードソース(データの参照先)としてテーブルやクエリを指定したうえで、添付ファイルオブジェクトのプロパティの「コントロールソース」で列名を(正確には「列名.FileData」の形で)指定すると、印刷プレビューでは添付ファイルの数だけ繰り返し表示されます(1つのレコードに複数の添付ファイルを記録できますのでレコードの数以上になり得ます)。このコントロールも、もとになるテーブルやクエリがないと利用できません。
なお、非連結オブジェクトフレームや連結オブジェクトフレームと違って印刷プレビューではアイコンしか表示されず、内容を見ることができません(画像ファイルの内容は表示されます)。また、デザインビューからファイルの内容を編集することも出来ません。
サブフォーム/サブレポート
レポート内にフォームもしくは別のレポートを配置することができます。通常は別のレポートを置くために使用します。レポート内に配置されるレポートをサブレポートといい、もとのレポートの方をメインレポートといいます。
サブフォーム/サブレポートを置こうとすると右のようなウインドウが現れます。「既存のフォームまたはレポートから作成する」を選択し、リスト(既存の、つまり別途作成済みのレポート名が表示されています)からサブレポートとするレポートを選択して「次へ」に進みます。
印刷プレビューはこのようになります。
この例だと最初からメインレポートにラベルを置いた方が早く、サブレポートに何のメリットがあるのかわかりませんが、サブレポートの重要な機能として「メインレポートのデータに対応した部分だけを(小出しに)表示する」ということが可能です。具体例として「(メインレポートに表示された)それぞれの従業員ごとに(サブレポート1として)保有資格一覧と(サブレポート2として)異動履歴をそれぞれ並べて表示する」といった複雑な構成のレポートを作ることが可能となります。データにより結びついたサブレポートは非常に強力なオブジェクトですので、改めて説明します。
連結オブジェクトフレーム
テーブルやクエリにOLEオブジェクト型として記録しているファイルを置くことができます。テキストボックスと同様に、レポートのレコードソース(データの参照先)としてテーブルやクエリを指定したうえで、連結オブジェクトフレームのプロパティの「コントロールソース」でファイルが記録されている列名を指定すると、その列に記録されているファイルを繰り返し(レコードの数だけ)表示させることができます。
非連結オブジェクトフレームはテーブルやクエリのレコードの内容と結びついていないオブジェクトでしたのでテーブルやクエリが存在しなくとも利用できましたが、連結オブジェクトフレームはもとになるテーブルやクエリがないと利用できません。また、非連結オブジェクトフレームと違い、デザインビューからファイルを編集することが出来ません(テーブルからは編集できます)。
イメージ
レポート内に画像を置くことが出来ます。このコントロールを置こうとすると、ファイルの選択のためのウインドウが現れますので適当な画像を選びます。
原寸で貼り付けられますので、辺や角をつかんでドラッグして大きさを調整します。
印刷プレビューの様子です。印刷プレビュー時に画像の表示が小さい(表示倍率が低い)と色が妙な感じになったりモザイク状になったりします。レポートビューや実際に印刷した場合は問題ありません。
基本的な文書作成の例
上記のコントロールを組み合わせることにより、基本的な文書の作成を行うことが可能となります。ただし、いちいち何らかのコントロールを貼り付けていく必要がありますので操作も面倒ですし、インデント設定などがなく文書整形の機能が弱いこと、デザインビューでは全体のバランスがつかみにくいことなどの欠点があります。
例として定型的な文書を作ってみました(右図)が、こうした文書を作るのにも少々手間取りますし、妥協が必要となる部分も多々あります。
上記デザインのプレビューです。何とか形にはなりましたが、別途Wordで作成したファイルを非連結オブジェクトフレームで貼り付けたほうが断然簡単です。
さて、このようにレポートは文書作成のツールとしては決して便利なものではないものの、その欠点を補って有り余るメリットがあります。それは、上記のテキストボックスの説明などでも触れているように、テーブルやクエリをデータソースとして文書を出力することができるということです。Wordの差し込み印刷に相当しますが、より複雑な出力が可能で幅広い応用ができます。詳しくは後の節で説明します。